summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2016-12-20 00:22:53 +0000
committerColin Watson <cjwatson@debian.org>2016-12-23 19:08:35 +0000
commitee52365e713e546dbd878d73d9590dbaccd760ba (patch)
tree841d0d9ae73e83070bcc3b46218ebdd18142dda3
parent8a4a5c22e363ad6a110ad9b787170297f5da8f04 (diff)
parent2103d3e5566c54e08a59be750579a249e46747d7 (diff)
New upstream release (7.4p1).
-rw-r--r--.skipped-commit-ids2
-rw-r--r--CREDITS3
-rw-r--r--ChangeLog2660
-rw-r--r--INSTALL26
-rw-r--r--Makefile.in44
-rw-r--r--PROTOCOL6
-rw-r--r--README29
-rw-r--r--README.platform3
-rw-r--r--README.privsep9
-rw-r--r--TODO6
-rw-r--r--aclocal.m48
-rw-r--r--addrmatch.c6
-rw-r--r--atomicio.c6
-rw-r--r--audit-bsm.c2
-rw-r--r--audit-linux.c2
-rw-r--r--audit.c2
-rw-r--r--audit.h2
-rw-r--r--auth-chall.c125
-rw-r--r--auth-options.c27
-rw-r--r--auth-options.h4
-rw-r--r--auth-pam.c18
-rw-r--r--auth-pam.h7
-rw-r--r--auth-rh-rsa.c109
-rw-r--r--auth-rhosts.c23
-rw-r--r--auth-rsa.c351
-rw-r--r--auth.c33
-rw-r--r--auth.h19
-rw-r--r--auth1.c450
-rw-r--r--auth2-pubkey.c61
-rw-r--r--authfile.c16
-rw-r--r--buildpkg.sh.in2
-rw-r--r--chacha.h3
-rw-r--r--channels.c472
-rw-r--r--channels.h13
-rw-r--r--cipher-3des1.c3
-rw-r--r--cipher-bf1.c3
-rw-r--r--cipher-chachapoly.c5
-rw-r--r--cipher.c173
-rw-r--r--cipher.h23
-rw-r--r--clientloop.c73
-rw-r--r--clientloop.h5
-rwxr-xr-xconfig.guess475
-rw-r--r--config.h.in64
-rwxr-xr-xconfig.sub130
-rwxr-xr-xconfigure30608
-rw-r--r--configure.ac114
-rw-r--r--contrib/Makefile7
-rw-r--r--contrib/gnome-ssh-askpass2.c36
-rw-r--r--contrib/redhat/openssh.spec6
-rw-r--r--contrib/suse/openssh.spec4
-rw-r--r--debian/.git-dpm14
-rw-r--r--debian/NEWS31
-rw-r--r--debian/changelog118
-rw-r--r--debian/patches/auth-log-verbosity.patch38
-rw-r--r--debian/patches/authorized-keys-man-symlink.patch6
-rw-r--r--debian/patches/debian-banner.patch54
-rw-r--r--debian/patches/debian-config.patch46
-rw-r--r--debian/patches/dnssec-sshfp.patch8
-rw-r--r--debian/patches/doc-hash-tab-completion.patch6
-rw-r--r--debian/patches/doc-upstart.patch6
-rw-r--r--debian/patches/fix-putty-interop-tests.patch113
-rw-r--r--debian/patches/gnome-ssh-askpass2-icon.patch6
-rw-r--r--debian/patches/gssapi.patch318
-rw-r--r--debian/patches/helpful-wait-terminate.patch26
-rw-r--r--debian/patches/keepalive-extensions.patch26
-rw-r--r--debian/patches/mention-ssh-keygen-on-keychange.patch8
-rw-r--r--debian/patches/no-openssl-version-status.patch12
-rw-r--r--debian/patches/openbsd-docs.patch22
-rw-r--r--debian/patches/package-versioning.patch20
-rw-r--r--debian/patches/quieter-signals.patch6
-rw-r--r--debian/patches/restore-tcp-wrappers.patch26
-rw-r--r--debian/patches/scp-quoting.patch6
-rw-r--r--debian/patches/selinux-role.patch151
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/shell-path.patch8
-rw-r--r--debian/patches/sigstop.patch6
-rw-r--r--debian/patches/ssh-agent-setgid.patch8
-rw-r--r--debian/patches/ssh-argv0.patch4
-rw-r--r--debian/patches/ssh-vulnkey-compat.patch10
-rw-r--r--debian/patches/syslog-level-silent.patch6
-rw-r--r--debian/patches/systemd-readiness.patch14
-rw-r--r--debian/patches/unregister-kexinit.patch34
-rw-r--r--debian/patches/user-group-modes.patch40
-rwxr-xr-xdebian/rules7
-rw-r--r--defines.h10
-rw-r--r--dh.c7
-rw-r--r--entropy.h2
-rw-r--r--gss-genr.c3
-rw-r--r--hostfile.c7
-rw-r--r--kex.c43
-rw-r--r--kex.h25
-rw-r--r--kexgexc.c6
-rw-r--r--kexgexs.c12
-rw-r--r--key.h3
-rw-r--r--krl.c15
-rw-r--r--mac.c4
-rw-r--r--match.c21
-rw-r--r--md5crypt.h2
-rw-r--r--mdoc2man.awk2
-rw-r--r--misc.c28
-rw-r--r--misc.h10
-rw-r--r--moduli637
-rw-r--r--moduli.c5
-rw-r--r--monitor.c418
-rw-r--r--monitor.h6
-rw-r--r--monitor_mm.c357
-rw-r--r--monitor_mm.h62
-rw-r--r--monitor_wrap.c151
-rw-r--r--monitor_wrap.h16
-rw-r--r--mux.c78
-rw-r--r--myproposal.h11
-rw-r--r--opacket.h7
-rw-r--r--openbsd-compat/Makefile.in6
-rw-r--r--openbsd-compat/base64.h4
-rw-r--r--openbsd-compat/bsd-asprintf.c2
-rw-r--r--openbsd-compat/bsd-cray.c23
-rw-r--r--openbsd-compat/bsd-cray.h4
-rw-r--r--openbsd-compat/bsd-cygwin_util.c4
-rw-r--r--openbsd-compat/bsd-cygwin_util.h2
-rw-r--r--openbsd-compat/bsd-misc.c14
-rw-r--r--openbsd-compat/bsd-misc.h4
-rw-r--r--openbsd-compat/bsd-nextstep.c2
-rw-r--r--openbsd-compat/bsd-nextstep.h2
-rw-r--r--openbsd-compat/bsd-openpty.c4
-rw-r--r--openbsd-compat/bsd-poll.c2
-rw-r--r--openbsd-compat/bsd-setres_id.c2
-rw-r--r--openbsd-compat/bsd-setres_id.h2
-rw-r--r--openbsd-compat/bsd-statvfs.c2
-rw-r--r--openbsd-compat/bsd-statvfs.h2
-rw-r--r--openbsd-compat/bsd-waitpid.c8
-rw-r--r--openbsd-compat/bsd-waitpid.h2
-rw-r--r--openbsd-compat/explicit_bzero.c13
-rw-r--r--openbsd-compat/fake-rfc2553.c38
-rw-r--r--openbsd-compat/fake-rfc2553.h12
-rw-r--r--openbsd-compat/getcwd.c2
-rw-r--r--openbsd-compat/getgrouplist.c2
-rw-r--r--openbsd-compat/openbsd-compat.h26
-rw-r--r--openbsd-compat/openssl-compat.c4
-rw-r--r--openbsd-compat/openssl-compat.h8
-rw-r--r--openbsd-compat/port-aix.c6
-rw-r--r--openbsd-compat/port-aix.h2
-rw-r--r--openbsd-compat/port-irix.c48
-rw-r--r--openbsd-compat/port-irix.h2
-rw-r--r--openbsd-compat/port-linux.c2
-rw-r--r--openbsd-compat/port-linux.h2
-rw-r--r--openbsd-compat/port-solaris.c4
-rw-r--r--openbsd-compat/port-solaris.h2
-rw-r--r--openbsd-compat/port-tun.c2
-rw-r--r--openbsd-compat/readpassphrase.c98
-rw-r--r--openbsd-compat/setproctitle.c10
-rw-r--r--openbsd-compat/sha2.c2
-rw-r--r--openbsd-compat/sha2.h2
-rw-r--r--openbsd-compat/strcasestr.c69
-rw-r--r--openbsd-compat/vis.c6
-rw-r--r--openbsd-compat/xcrypt.c22
-rw-r--r--openbsd-compat/xmmap.c88
-rwxr-xr-xopensshd.init.in6
-rw-r--r--packet.c330
-rw-r--r--packet.h16
-rw-r--r--platform-tracing.c8
-rw-r--r--platform.c2
-rw-r--r--platform.h2
-rw-r--r--readconf.c5
-rw-r--r--regress/Makefile21
-rw-r--r--regress/agent-getpeereid.sh2
-rw-r--r--regress/allow-deny-users.sh40
-rw-r--r--regress/cert-file.sh2
-rw-r--r--regress/cert-userkey.sh16
-rw-r--r--regress/connect-privsep.sh4
-rw-r--r--regress/integrity.sh2
-rw-r--r--regress/keygen-moduli.sh18
-rw-r--r--regress/keys-command.sh2
-rw-r--r--regress/login-timeout.sh4
-rw-r--r--regress/misc/kexfuzz/README4
-rw-r--r--regress/misc/kexfuzz/kexfuzz.c169
-rw-r--r--regress/moduli.in3
-rw-r--r--regress/principals-command.sh54
-rw-r--r--regress/putty-ciphers.sh2
-rw-r--r--regress/putty-kex.sh2
-rw-r--r--regress/putty-transfer.sh2
-rw-r--r--regress/reexec.sh11
-rw-r--r--regress/sftp-chroot.sh4
-rw-r--r--regress/test-exec.sh30
-rw-r--r--regress/unittests/Makefile4
-rw-r--r--regress/unittests/Makefile.inc10
-rw-r--r--regress/unittests/bitmap/Makefile4
-rw-r--r--regress/unittests/hostkeys/Makefile4
-rw-r--r--regress/unittests/kex/Makefile4
-rw-r--r--regress/unittests/match/Makefile10
-rw-r--r--regress/unittests/match/tests.c113
-rw-r--r--regress/unittests/sshbuf/Makefile2
-rw-r--r--regress/unittests/sshkey/Makefile4
-rw-r--r--regress/unittests/utf8/Makefile4
-rw-r--r--regress/unittests/utf8/tests.c7
-rw-r--r--sandbox-darwin.c1
-rw-r--r--sandbox-rlimit.c3
-rw-r--r--scp.c9
-rw-r--r--servconf.c174
-rw-r--r--servconf.h10
-rw-r--r--serverloop.c617
-rw-r--r--serverloop.h3
-rw-r--r--session.c393
-rw-r--r--session.h3
-rw-r--r--sftp-client.c7
-rw-r--r--sftp-common.c8
-rw-r--r--sftp-server.c5
-rw-r--r--sftp.c36
-rw-r--r--ssh-agent.012
-rw-r--r--ssh-agent.136
-rw-r--r--ssh-agent.c50
-rw-r--r--ssh-keygen.c43
-rw-r--r--ssh-pkcs11.c41
-rw-r--r--ssh-rsa.c8
-rw-r--r--ssh.c39
-rw-r--r--ssh_config.0509
-rw-r--r--ssh_config.5796
-rw-r--r--sshbuf.c80
-rw-r--r--sshbuf.h10
-rw-r--r--sshconnect.c5
-rw-r--r--sshconnect1.c10
-rw-r--r--sshconnect2.c18
-rw-r--r--sshd.0151
-rw-r--r--sshd.8125
-rw-r--r--sshd.c602
-rw-r--r--sshd_config17
-rw-r--r--sshd_config.0578
-rw-r--r--sshd_config.5734
-rw-r--r--sshkey.c68
-rw-r--r--sshkey.h4
-rw-r--r--sshpty.c22
-rw-r--r--sshpty.h3
-rw-r--r--utf8.c42
-rw-r--r--utf8.h1
-rw-r--r--version.h4
234 files changed, 13798 insertions, 32402 deletions
diff --git a/.skipped-commit-ids b/.skipped-commit-ids
index 02088ce56..ee8241fb3 100644
--- a/.skipped-commit-ids
+++ b/.skipped-commit-ids
@@ -9,3 +9,5 @@ edbfde98c40007b7752a4ac106095e060c25c1ef Regen moduli
9180d84674be1344e45a63990d60349988187c1ae Update moduli 9180d84674be1344e45a63990d60349988187c1ae Update moduli
10f6ae971186ba68d066cd102e57d5b0b2c211a5ee systrace is dead. 10f6ae971186ba68d066cd102e57d5b0b2c211a5ee systrace is dead.
1196c5054e3e1f170c6276902d5bc65bb3b87a2603 remove DEBUGLIBS from Makefile 1196c5054e3e1f170c6276902d5bc65bb3b87a2603 remove DEBUGLIBS from Makefile
126da9a37f74aef9f9cc639004345ad893cad582d8 Update moduli file
1377bcb50e47b68c7209c7f0a5a020d73761e5143b unset REGRESS_FAIL_EARLY
diff --git a/CREDITS b/CREDITS
index eaf105a91..43be5e5f2 100644
--- a/CREDITS
+++ b/CREDITS
@@ -100,6 +100,3 @@ Zack Weinberg <zack@wolery.cumb.org> - GNOME askpass enhancement
100Apologies to anyone I have missed. 100Apologies to anyone I have missed.
101 101
102Damien Miller <djm@mindrot.org> 102Damien Miller <djm@mindrot.org>
103
104$Id: CREDITS,v 1.81 2006/08/30 17:24:41 djm Exp $
105
diff --git a/ChangeLog b/ChangeLog
index f66ca4b1e..d48aba33c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1865 @@
1commit 4a354fc231174901f2629437c2a6e924a2dd6772
2Author: Damien Miller <djm@mindrot.org>
3Date: Mon Dec 19 15:59:26 2016 +1100
4
5 crank version numbers for release
6
7commit 5f8d0bb8413d4d909cc7aa3c616fb0538224c3c9
8Author: djm@openbsd.org <djm@openbsd.org>
9Date: Mon Dec 19 04:55:51 2016 +0000
10
11 upstream commit
12
13 openssh-7.4
14
15 Upstream-ID: 1ee404adba6bbe10ae9277cbae3a94abe2867b79
16
17commit 3a8213ea0ed843523e34e55ab9c852332bab4c7b
18Author: djm@openbsd.org <djm@openbsd.org>
19Date: Mon Dec 19 04:55:18 2016 +0000
20
21 upstream commit
22
23 remove testcase that depends on exact output and
24 behaviour of snprintf(..., "%s", NULL)
25
26 Upstream-Regress-ID: cab4288531766bd9593cb556613b91a2eeefb56f
27
28commit eae735a82d759054f6ec7b4e887fb7a5692c66d7
29Author: dtucker@openbsd.org <dtucker@openbsd.org>
30Date: Mon Dec 19 03:32:57 2016 +0000
31
32 upstream commit
33
34 Use LOGNAME to get current user and fall back to whoami if
35 not set. Mainly to benefit -portable since some platforms don't have whoami.
36
37 Upstream-Regress-ID: e3a16b7836a3ae24dc8f8a4e43fdf8127a60bdfa
38
39commit 0d2f88428487518eea60602bd593989013831dcf
40Author: dtucker@openbsd.org <dtucker@openbsd.org>
41Date: Fri Dec 16 03:51:19 2016 +0000
42
43 upstream commit
44
45 Add regression test for AllowUsers and DenyUsers. Patch from
46 Zev Weiss <zev at bewilderbeest.net>
47
48 Upstream-Regress-ID: 8f1aac24d52728398871dac14ad26ea38b533fb9
49
50commit 3bc8180a008929f6fe98af4a56fb37d04444b417
51Author: Darren Tucker <dtucker@zip.com.au>
52Date: Fri Dec 16 15:02:24 2016 +1100
53
54 Add missing monitor.h include.
55
56 Fixes warning pointed out by Zev Weiss <zev at bewilderbeest.net>
57
58commit 410681f9015d76cc7b137dd90dac897f673244a0
59Author: djm@openbsd.org <djm@openbsd.org>
60Date: Fri Dec 16 02:48:55 2016 +0000
61
62 upstream commit
63
64 revert to rev1.2; the new bits in this test depend on changes
65 to ssh that aren't yet committed
66
67 Upstream-Regress-ID: 828ffc2c7afcf65d50ff2cf3dfc47a073ad39123
68
69commit 2f2ffa4fbe4b671bbffa0611f15ba44cff64d58e
70Author: dtucker@openbsd.org <dtucker@openbsd.org>
71Date: Fri Dec 16 01:06:27 2016 +0000
72
73 upstream commit
74
75 Move the "stop sshd" code into its own helper function.
76 Patch from Zev Weiss <zev at bewilderbeest.net>, ok djm@
77
78 Upstream-Regress-ID: a113dea77df5bd97fb4633ea31f3d72dbe356329
79
80commit e15e7152331e3976b35475fd4e9c72897ad0f074
81Author: djm@openbsd.org <djm@openbsd.org>
82Date: Fri Dec 16 01:01:07 2016 +0000
83
84 upstream commit
85
86 regression test for certificates along with private key
87 with no public half. bz#2617, mostly from Adam Eijdenberg
88
89 Upstream-Regress-ID: 2e74dc2c726f4dc839609b3ce045466b69f01115
90
91commit 9a70ec085faf6e55db311cd1a329f1a35ad2a500
92Author: dtucker@openbsd.org <dtucker@openbsd.org>
93Date: Thu Dec 15 23:50:37 2016 +0000
94
95 upstream commit
96
97 Use $SUDO to read pidfile in case root's umask is
98 restricted. From portable.
99
100 Upstream-Regress-ID: f6b1c7ffbc5a0dfb7d430adb2883344899174a98
101
102commit fe06b68f824f8f55670442fb31f2c03526dd326c
103Author: dtucker@openbsd.org <dtucker@openbsd.org>
104Date: Thu Dec 15 21:29:05 2016 +0000
105
106 upstream commit
107
108 Add missing braces in DenyUsers code. Patch from zev at
109 bewilderbeest.net, ok deraadt@
110
111 Upstream-ID: d747ace338dcf943b077925f90f85f789714b54e
112
113commit dcc7d74242a574fd5c4afbb4224795b1644321e7
114Author: dtucker@openbsd.org <dtucker@openbsd.org>
115Date: Thu Dec 15 21:20:41 2016 +0000
116
117 upstream commit
118
119 Fix text in error message. Patch from zev at
120 bewilderbeest.net.
121
122 Upstream-ID: deb0486e175e7282f98f9a15035d76c55c84f7f6
123
124commit b737e4d7433577403a31cff6614f6a1b0b5e22f4
125Author: djm@openbsd.org <djm@openbsd.org>
126Date: Wed Dec 14 00:36:34 2016 +0000
127
128 upstream commit
129
130 disable Unix-domain socket forwarding when privsep is
131 disabled
132
133 Upstream-ID: ab61516ae0faadad407857808517efa900a0d6d0
134
135commit 08a1e7014d65c5b59416a0e138c1f73f417496eb
136Author: djm@openbsd.org <djm@openbsd.org>
137Date: Fri Dec 9 03:04:29 2016 +0000
138
139 upstream commit
140
141 log connections dropped in excess of MaxStartups at
142 verbose LogLevel; bz#2613 based on diff from Tomas Kuthan; ok dtucker@
143
144 Upstream-ID: 703ae690dbf9b56620a6018f8a3b2389ce76d92b
145
146commit 10e290ec00964b2bf70faab15a10a5574bb80527
147Author: Darren Tucker <dtucker@zip.com.au>
148Date: Tue Dec 13 13:51:32 2016 +1100
149
150 Get default of TEST_SSH_UTF8 from environment.
151
152commit b9b8ba3f9ed92c6220b58d70d1e6d8aa3eea1104
153Author: Darren Tucker <dtucker@zip.com.au>
154Date: Tue Dec 13 12:56:40 2016 +1100
155
156 Remove commented-out includes.
157
158 These commented-out includes have "Still needed?" comments. Since
159 they've been commented out for ~13 years I assert that they're not.
160
161commit 25275f1c9d5f01a0877d39444e8f90521a598ea0
162Author: Darren Tucker <dtucker@zip.com.au>
163Date: Tue Dec 13 12:54:23 2016 +1100
164
165 Add prototype for strcasestr in compat library.
166
167commit afec07732aa2985142f3e0b9a01eb6391f523dec
168Author: Darren Tucker <dtucker@zip.com.au>
169Date: Tue Dec 13 10:23:03 2016 +1100
170
171 Add strcasestr to compat library.
172
173 Fixes build on (at least) Solaris 10.
174
175commit dda78a03af32e7994f132d923c2046e98b7c56c8
176Author: Damien Miller <djm@mindrot.org>
177Date: Mon Dec 12 13:57:10 2016 +1100
178
179 Force Turkish locales back to C/POSIX; bz#2643
180
181 Turkish locales are unique in their handling of the letters 'i' and
182 'I' (yes, they are different letters) and OpenSSH isn't remotely
183 prepared to deal with that. For now, the best we can do is to force
184 OpenSSH to use the C/POSIX locale and try to preserve the UTF-8
185 encoding if possible.
186
187 ok dtucker@
188
189commit c35995048f41239fc8895aadc3374c5f75180554
190Author: Darren Tucker <dtucker@zip.com.au>
191Date: Fri Dec 9 12:52:02 2016 +1100
192
193 exit is in stdlib.h not unistd.h (that's _exit).
194
195commit d399a8b914aace62418c0cfa20341aa37a192f98
196Author: Darren Tucker <dtucker@zip.com.au>
197Date: Fri Dec 9 12:33:25 2016 +1100
198
199 Include <unistd.h> for exit in utf8 locale test.
200
201commit 47b8c99ab3221188ad3926108dd9d36da3b528ec
202Author: Darren Tucker <dtucker@zip.com.au>
203Date: Thu Dec 8 15:48:34 2016 +1100
204
205 Check for utf8 local support before testing it.
206
207 Check for utf8 local support and if not found, do not attempt to run the
208 utf8 tests. Suggested by djm@
209
210commit 4089fc1885b3a2822204effbb02b74e3da58240d
211Author: Darren Tucker <dtucker@zip.com.au>
212Date: Thu Dec 8 12:57:24 2016 +1100
213
214 Use AC_PATH_TOOL for krb5-config.
215
216 This will use the host-prefixed version when cross compiling; patch from
217 david.michael at coreos.com.
218
219commit b4867e0712c89b93be905220c82f0a15e6865d1e
220Author: djm@openbsd.org <djm@openbsd.org>
221Date: Tue Dec 6 07:48:01 2016 +0000
222
223 upstream commit
224
225 make IdentityFile successfully load and use certificates that
226 have no corresponding bare public key. E.g. just a private id_rsa and
227 certificate id_rsa-cert.pub (and no id_rsa.pub).
228
229 bz#2617 ok dtucker@
230
231 Upstream-ID: c1e9699b8c0e3b63cc4189e6972e3522b6292604
232
233commit c9792783a98881eb7ed295680013ca97a958f8ac
234Author: Damien Miller <djm@mindrot.org>
235Date: Fri Nov 25 14:04:21 2016 +1100
236
237 Add a gnome-ssh-askpass3 target for GTK+3 version
238
239 Based on patch from Colin Watson via bz#2640
240
241commit 7be85ae02b9de0993ce0a1d1e978e11329f6e763
242Author: Damien Miller <djm@mindrot.org>
243Date: Fri Nov 25 14:03:53 2016 +1100
244
245 Make gnome-ssh-askpass2.c GTK+3-friendly
246
247 Patch from Colin Watson via bz#2640
248
249commit b9844a45c7f0162fd1b5465683879793d4cc4aaa
250Author: djm@openbsd.org <djm@openbsd.org>
251Date: Sun Dec 4 23:54:02 2016 +0000
252
253 upstream commit
254
255 Fix public key authentication when multiple
256 authentication is in use. Instead of deleting and re-preparing the entire
257 keys list, just reset the 'used' flags; the keys list is already in a good
258 order (with already- tried keys at the back)
259
260 Analysis and patch from Vincent Brillault on bz#2642; ok dtucker@
261
262 Upstream-ID: 7123f12dc2f3bcaae715853035a97923d7300176
263
264commit f2398eb774075c687b13af5bc22009eb08889abe
265Author: dtucker@openbsd.org <dtucker@openbsd.org>
266Date: Sun Dec 4 22:27:25 2016 +0000
267
268 upstream commit
269
270 Unlink PidFile on SIGHUP and always recreate it when the
271 new sshd starts. Regression tests (and possibly other things) depend on the
272 pidfile being recreated after SIGHUP, and unlinking it means it won't contain
273 a stale pid if sshd fails to restart. ok djm@ markus@
274
275 Upstream-ID: 132dd6dda0c77dd49d2f15b2573b5794f6160870
276
277commit 85aa2efeba51a96bf6834f9accf2935d96150296
278Author: djm@openbsd.org <djm@openbsd.org>
279Date: Wed Nov 30 03:01:33 2016 +0000
280
281 upstream commit
282
283 test new behaviour of cert force-command restriction vs.
284 authorized_key/ principals
285
286 Upstream-Regress-ID: 399efa7469d40c404c0b0a295064ce75d495387c
287
288commit 5d333131cd8519d022389cfd3236280818dae1bc
289Author: jmc@openbsd.org <jmc@openbsd.org>
290Date: Wed Nov 30 06:54:26 2016 +0000
291
292 upstream commit
293
294 tweak previous; while here fix up FILES and AUTHORS;
295
296 Upstream-ID: 93f6e54086145a75df8d8ec7d8689bdadbbac8fa
297
298commit 786d5994da79151180cb14a6cf157ebbba61c0cc
299Author: djm@openbsd.org <djm@openbsd.org>
300Date: Wed Nov 30 03:07:37 2016 +0000
301
302 upstream commit
303
304 add a whitelist of paths from which ssh-agent will load
305 (via ssh-pkcs11-helper) a PKCS#11 module; ok markus@
306
307 Upstream-ID: fe79769469d9cd6d26fe0dc15751b83ef2a06e8f
308
309commit 7844f357cdd90530eec81340847783f1f1da010b
310Author: djm@openbsd.org <djm@openbsd.org>
311Date: Wed Nov 30 03:00:05 2016 +0000
312
313 upstream commit
314
315 Add a sshd_config DisableForwaring option that disables
316 X11, agent, TCP, tunnel and Unix domain socket forwarding, as well as
317 anything else we might implement in the future.
318
319 This, like the 'restrict' authorized_keys flag, is intended to be a
320 simple and future-proof way of restricting an account. Suggested as
321 a complement to 'restrict' by Jann Horn; ok markus@
322
323 Upstream-ID: 203803f66e533a474086b38a59ceb4cf2410fcf7
324
325commit fd6dcef2030d23c43f986d26979f84619c10589d
326Author: djm@openbsd.org <djm@openbsd.org>
327Date: Wed Nov 30 02:57:40 2016 +0000
328
329 upstream commit
330
331 When a forced-command appears in both a certificate and
332 an authorized keys/principals command= restriction, refuse to accept the
333 certificate unless they are identical.
334
335 The previous (documented) behaviour of having the certificate forced-
336 command override the other could be a bit confused and more error-prone.
337
338 Pointed out by Jann Horn of Project Zero; ok dtucker@
339
340 Upstream-ID: 79d811b6eb6bbe1221bf146dde6928f92d2cd05f
341
342commit 7fc4766ac78abae81ee75b22b7550720bfa28a33
343Author: dtucker@openbsd.org <dtucker@openbsd.org>
344Date: Wed Nov 30 00:28:31 2016 +0000
345
346 upstream commit
347
348 On startup, check to see if sshd is already daemonized
349 and if so, skip the call to daemon() and do not rewrite the PidFile. This
350 means that when sshd re-execs itself on SIGHUP the process ID will no longer
351 change. Should address bz#2641. ok djm@ markus@.
352
353 Upstream-ID: 5ea0355580056fb3b25c1fd6364307d9638a37b9
354
355commit c9f880c195c65f1dddcbc4ce9d6bfea7747debcc
356Author: Damien Miller <djm@mindrot.org>
357Date: Wed Nov 30 13:51:49 2016 +1100
358
359 factor out common PRNG reseed before privdrop
360
361 Add a call to RAND_poll() to ensure than more than pid+time gets
362 stirred into child processes states. Prompted by analysis from Jann
363 Horn at Project Zero. ok dtucker@
364
365commit 79e4829ec81dead1b30999e1626eca589319a47f
366Author: dtucker@openbsd.org <dtucker@openbsd.org>
367Date: Fri Nov 25 03:02:01 2016 +0000
368
369 upstream commit
370
371 Allow PuTTY interop tests to run unattended. bz#2639,
372 patch from cjwatson at debian.org.
373
374 Upstream-Regress-ID: 4345253558ac23b2082aebabccd48377433b6fe0
375
376commit 504c3a9a1bf090f6b27260fc3e8ea7d984d163dc
377Author: dtucker@openbsd.org <dtucker@openbsd.org>
378Date: Fri Nov 25 02:56:49 2016 +0000
379
380 upstream commit
381
382 Reverse args to sshd-log-wrapper. Matches change in
383 portable, where it allows sshd do be optionally run under Valgrind.
384
385 Upstream-Regress-ID: b438d1c6726dc5caa2a45153e6103a0393faa906
386
387commit bd13017736ec2f8f9ca498fe109fb0035f322733
388Author: dtucker@openbsd.org <dtucker@openbsd.org>
389Date: Fri Nov 25 02:49:18 2016 +0000
390
391 upstream commit
392
393 Fix typo in trace message; from portable.
394
395 Upstream-Regress-ID: 4c4a2ba0d37faf5fd230a91b4c7edb5699fbd73a
396
397commit 7da751d8b007c7f3e814fd5737c2351440d78b4c
398Author: tb@openbsd.org <tb@openbsd.org>
399Date: Tue Nov 1 13:43:27 2016 +0000
400
401 upstream commit
402
403 Clean up MALLOC_OPTIONS. For the unittests, move
404 MALLOC_OPTIONS and TEST_ENV to unittets/Makefile.inc.
405
406 ok otto
407
408 Upstream-Regress-ID: 890d497e0a38eeddfebb11cc429098d76cf29f12
409
410commit 36f58e68221bced35e06d1cca8d97c48807a8b71
411Author: tb@openbsd.org <tb@openbsd.org>
412Date: Mon Oct 31 23:45:08 2016 +0000
413
414 upstream commit
415
416 Remove the obsolete A and P flags from MALLOC_OPTIONS.
417
418 ok dtucker
419
420 Upstream-Regress-ID: 6cc25024c8174a87e5734a0dc830194be216dd59
421
422commit b0899ee26a6630883c0f2350098b6a35e647f512
423Author: dtucker@openbsd.org <dtucker@openbsd.org>
424Date: Tue Nov 29 03:54:50 2016 +0000
425
426 upstream commit
427
428 Factor out code to disconnect from controlling terminal
429 into its own function. ok djm@
430
431 Upstream-ID: 39fd9e8ebd7222615a837312face5cc7ae962885
432
433commit 54d022026aae4f53fa74cc636e4a032d9689b64d
434Author: djm@openbsd.org <djm@openbsd.org>
435Date: Fri Nov 25 23:24:45 2016 +0000
436
437 upstream commit
438
439 use sshbuf_allocate() to pre-allocate the buffer used for
440 loading keys. This avoids implicit realloc inside the buffer code, which
441 might theoretically leave fragments of the key on the heap. This doesn't
442 appear to happen in practice for normal sized keys, but was observed for
443 novelty oversize ones.
444
445 Pointed out by Jann Horn of Project Zero; ok markus@
446
447 Upstream-ID: d620e1d46a29fdea56aeadeda120879eddc60ab1
448
449commit a9c746088787549bb5b1ae3add7d06a1b6d93d5e
450Author: djm@openbsd.org <djm@openbsd.org>
451Date: Fri Nov 25 23:22:04 2016 +0000
452
453 upstream commit
454
455 split allocation out of sshbuf_reserve() into a separate
456 sshbuf_allocate() function; ok markus@
457
458 Upstream-ID: 11b8a2795afeeb1418d508a2c8095b3355577ec2
459
460commit f0ddedee460486fa0e32fefb2950548009e5026e
461Author: markus@openbsd.org <markus@openbsd.org>
462Date: Wed Nov 23 23:14:15 2016 +0000
463
464 upstream commit
465
466 allow ClientAlive{Interval,CountMax} in Match; ok dtucker,
467 djm
468
469 Upstream-ID: 8beb4c1eadd588f1080b58932281983864979f55
470
471commit 1a6f9d2e2493d445cd9ee496e6e3c2a2f283f66a
472Author: djm@openbsd.org <djm@openbsd.org>
473Date: Tue Nov 8 22:04:34 2016 +0000
474
475 upstream commit
476
477 unbreak DenyUsers; reported by henning@
478
479 Upstream-ID: 1c67d4148f5e953c35acdb62e7c08ae8e33f7cb2
480
481commit 010359b32659f455fddd2bd85fd7cc4d7a3b994a
482Author: djm@openbsd.org <djm@openbsd.org>
483Date: Sun Nov 6 05:46:37 2016 +0000
484
485 upstream commit
486
487 Validate address ranges for AllowUser/DenyUsers at
488 configuration load time and refuse to accept bad ones. It was previously
489 possible to specify invalid CIDR address ranges (e.g. djm@127.1.2.3/55) and
490 these would always match.
491
492 Thanks to Laurence Parry for a detailed bug report. ok markus (for
493 a previous diff version)
494
495 Upstream-ID: 9dfcdd9672b06e65233ea4434c38226680d40bfb
496
497commit efb494e81d1317209256b38b49f4280897c61e69
498Author: djm@openbsd.org <djm@openbsd.org>
499Date: Fri Oct 28 03:33:52 2016 +0000
500
501 upstream commit
502
503 Improve pkcs11_add_provider() logging: demote some
504 excessively verbose error()s to debug()s, include PKCS#11 provider name and
505 slot in log messages where possible. bz#2610, based on patch from Jakub Jelen
506
507 Upstream-ID: 3223ef693cfcbff9079edfc7e89f55bf63e1973d
508
509commit 5ee3fb5affd7646f141749483205ade5fc54adaf
510Author: Darren Tucker <dtucker@zip.com.au>
511Date: Tue Nov 1 08:12:33 2016 +1100
512
513 Use ptrace(PT_DENY_ATTACH, ..) on OS X.
514
515commit 315d2a4e674d0b7115574645cb51f968420ebb34
516Author: Damien Miller <djm@mindrot.org>
517Date: Fri Oct 28 14:34:07 2016 +1100
518
519 Unbreak AES-CTR ciphers on old (~0.9.8) OpenSSL
520
521 ok dtucker@
522
523commit a9ff3950b8e80ff971b4d44bbce96df27aed28af
524Author: Darren Tucker <dtucker@zip.com.au>
525Date: Fri Oct 28 14:26:58 2016 +1100
526
527 Move OPENSSL_NO_RIPEMD160 to compat.
528
529 Move OPENSSL_NO_RIPEMD160 to compat and add ifdefs to mac.c around the
530 ripemd160 MACs.
531
532commit bce58885160e5db2adda3054c3b81fe770f7285a
533Author: Darren Tucker <dtucker@zip.com.au>
534Date: Fri Oct 28 13:52:31 2016 +1100
535
536 Check if RIPEMD160 is disabled in OpenSSL.
537
538commit d924640d4c355d1b5eca1f4cc60146a9975dbbff
539Author: Darren Tucker <dtucker@zip.com.au>
540Date: Fri Oct 28 13:38:19 2016 +1100
541
542 Skip ssh1 specfic ciphers.
543
544 cipher-3des1.c and cipher-bf1.c are specific to sshv1 so don't even try
545 to compile them when Protocol 1 is not enabled.
546
547commit 79d078e7a49caef746516d9710ec369ba45feab6
548Author: jsg@openbsd.org <jsg@openbsd.org>
549Date: Tue Oct 25 04:08:13 2016 +0000
550
551 upstream commit
552
553 Fix logic in add_local_forward() that inverted a test
554 when code was refactored out into bind_permitted(). This broke ssh port
555 forwarding for non-priv ports as a non root user.
556
557 ok dtucker@ 'looks good' deraadt@
558
559 Upstream-ID: ddb8156ca03cc99997de284ce7777536ff9570c9
560
561commit a903e315dee483e555c8a3a02c2946937f9b4e5d
562Author: dtucker@openbsd.org <dtucker@openbsd.org>
563Date: Mon Oct 24 01:09:17 2016 +0000
564
565 upstream commit
566
567 Remove dead breaks, found via opencoverage.net. ok
568 deraadt@
569
570 Upstream-ID: ad9cc655829d67fad219762810770787ba913069
571
572commit b4e96b4c9bea4182846e4942ba2048e6d708ee54
573Author: Darren Tucker <dtucker@zip.com.au>
574Date: Wed Oct 26 08:43:25 2016 +1100
575
576 Use !=NULL instead of >0 for getdefaultproj.
577
578 getdefaultproj() returns a pointer so test it for NULL inequality
579 instead of >0. Fixes compiler warning and is more correct. Patch from
580 David Binderman.
581
582commit 1c4ef0b808d3d38232aeeb1cebb7e9a43def42c5
583Author: dtucker@openbsd.org <dtucker@openbsd.org>
584Date: Sun Oct 23 22:04:05 2016 +0000
585
586 upstream commit
587
588 Factor out "can bind to low ports" check into its own function. This will
589 make it easier for Portable to support platforms with permissions models
590 other than uid==0 (eg bz#2625). ok djm@, "doesn't offend me too much"
591 deraadt@.
592
593 Upstream-ID: 86213df4183e92b8f189a6d2dac858c994bfface
594
595commit 0b9ee623d57e5de7e83e66fd61a7ba9a5be98894
596Author: dtucker@openbsd.org <dtucker@openbsd.org>
597Date: Wed Oct 19 23:21:56 2016 +0000
598
599 upstream commit
600
601 When tearing down ControlMaster connecctions, don't
602 pollute stderr when LogLevel=quiet. Patch from Tim Kuijsten via tech@.
603
604 Upstream-ID: d9b3a68b2a7c2f2fc7f74678e29a4618d55ceced
605
606commit 09e6a7d8354224933febc08ddcbc2010f542284e
607Author: Darren Tucker <dtucker@zip.com.au>
608Date: Mon Oct 24 09:06:18 2016 +1100
609
610 Wrap stdint.h include in ifdef.
611
612commit 08d9e9516e587b25127545c029e5464b2e7f2919
613Author: Darren Tucker <dtucker@zip.com.au>
614Date: Fri Oct 21 09:46:46 2016 +1100
615
616 Fix formatting.
617
618commit 461f50e7ab8751d3a55e9158c44c13031db7ba1d
619Author: Darren Tucker <dtucker@zip.com.au>
620Date: Fri Oct 21 06:55:58 2016 +1100
621
622 Update links to https.
623
624 www.openssh.com now supports https and ftp.openbsd.org no longer
625 supports ftp. Make all links to these https.
626
627commit dd4e7212a6141f37742de97795e79db51e4427ad
628Author: Darren Tucker <dtucker@zip.com.au>
629Date: Fri Oct 21 06:48:46 2016 +1100
630
631 Update host key generation examples.
632
633 Remove ssh1 host key generation, add ssh-keygen -A
634
635commit 6d49ae82634c67e9a4d4af882bee20b40bb8c639
636Author: Darren Tucker <dtucker@zip.com.au>
637Date: Fri Oct 21 05:22:55 2016 +1100
638
639 Update links.
640
641 Make links to openssh.com HTTPS now that it's supported, point release
642 notes link to the HTML release notes page, and update a couple of other
643 links and bits of text.
644
645commit fe0d1ca6ace06376625084b004ee533f2c2ea9d6
646Author: Darren Tucker <dtucker@zip.com.au>
647Date: Thu Oct 20 03:42:09 2016 +1100
648
649 Remote channels .orig and .rej files.
650
651 These files were incorrectly added during an OpenBSD sync.
652
653commit 246aa842a4ad368d8ce030495e657ef3a0e1f95c
654Author: dtucker@openbsd.org <dtucker@openbsd.org>
655Date: Tue Oct 18 17:32:54 2016 +0000
656
657 upstream commit
658
659 Remove channel_input_port_forward_request(); the only caller
660 was the recently-removed SSH1 server code so it's now dead code. ok markus@
661
662 Upstream-ID: 05453983230a1f439562535fec2818f63f297af9
663
664commit 2c6697c443d2c9c908260eed73eb9143223e3ec9
665Author: millert@openbsd.org <millert@openbsd.org>
666Date: Tue Oct 18 12:41:22 2016 +0000
667
668 upstream commit
669
670 Install a signal handler for tty-generated signals and
671 wait for the ssh child to suspend before suspending sftp. This lets ssh
672 restore the terminal mode as needed when it is suspended at the password
673 prompt. OK dtucker@
674
675 Upstream-ID: a31c1f42aa3e2985dcc91e46e6a17bd22e372d69
676
677commit fd2a8f1033fa2316fff719fd5176968277560158
678Author: jmc@openbsd.org <jmc@openbsd.org>
679Date: Sat Oct 15 19:56:25 2016 +0000
680
681 upstream commit
682
683 various formatting fixes, specifically removing Dq;
684
685 Upstream-ID: 81e85df2b8e474f5f93d66e61d9a4419ce87347c
686
687commit 8f866d8a57b9a2dc5dd04504e27f593b551618e3
688Author: Darren Tucker <dtucker@zip.com.au>
689Date: Wed Oct 19 03:26:09 2016 +1100
690
691 Import readpassphrase.c rev 1.26.
692
693 Author: miller@openbsd.org:
694 Avoid generate SIGTTOU when restoring the terminal mode. If we get
695 SIGTTOU it means the process is not in the foreground process group
696 which, in most cases, means that the shell has taken control of the tty.
697 Requiring the user the fg the process in this case doesn't make sense
698 and can result in both SIGTSTP and SIGTTOU being sent which can lead to
699 the process being suspended again immediately after being brought into
700 the foreground.
701
702commit f901440cc844062c9bab0183d133f7ccc58ac3a5
703Author: Darren Tucker <dtucker@zip.com.au>
704Date: Wed Oct 19 03:23:16 2016 +1100
705
706 Import readpassphrase.c rev 1.25.
707
708 Wrap <readpassphrase.h> so internal calls go direct and
709 readpassphrase is weak.
710
711 (DEF_WEAK is a no-op in portable.)
712
713commit 032147b69527e5448a511049b2d43dbcae582624
714Author: Darren Tucker <dtucker@zip.com.au>
715Date: Sat Oct 15 05:51:12 2016 +1100
716
717 Move DEF_WEAK into defines.h.
718
719 As well pull in more recent changes from OpenBSD these will start to
720 arrive so put it where the definition is shared.
721
722commit e0259a82ddd950cfb109ddee86fcebbc09c6bd04
723Author: Darren Tucker <dtucker@zip.com.au>
724Date: Sat Oct 15 04:34:46 2016 +1100
725
726 Remove do_pam_set_tty which is dead code.
727
728 The callers of do_pam_set_tty were removed in 2008, so this is now dead
729 code. bz#2604, pointed out by jjelen at redhat.com.
730
731commit ca04de83f210959ad2ed870a30ba1732c3ae00e3
732Author: Damien Miller <djm@mindrot.org>
733Date: Thu Oct 13 18:53:43 2016 +1100
734
735 unbreak principals-command test
736
737 Undo inconsistetly updated variable name.
738
739commit 1723ec92eb485ce06b4cbf49712d21975d873909
740Author: djm@openbsd.org <djm@openbsd.org>
741Date: Tue Oct 11 21:49:54 2016 +0000
742
743 upstream commit
744
745 fix the KEX fuzzer - the previous method of obtaining the
746 packet contents was broken. This now uses the new per-packet input hook, so
747 it sees exact post-decrypt packets and doesn't have to pass packet integrity
748 checks. ok markus@
749
750 Upstream-Regress-ID: 402fb6ffabd97de590e8e57b25788949dce8d2fd
751
752commit 09f997893f109799cddbfce6d7e67f787045cbb2
753Author: natano@openbsd.org <natano@openbsd.org>
754Date: Thu Oct 6 09:31:38 2016 +0000
755
756 upstream commit
757
758 Move USER out of the way to unbreak the BUILDUSER
759 mechanism. ok tb
760
761 Upstream-Regress-ID: 74ab9687417dd071d62316eaadd20ddad1d5af3c
762
763commit 3049a012c482a7016f674db168f23fd524edce27
764Author: bluhm@openbsd.org <bluhm@openbsd.org>
765Date: Fri Sep 30 11:55:20 2016 +0000
766
767 upstream commit
768
769 In ssh tests set REGRESS_FAIL_EARLY with ?= so that the
770 environment can change it. OK djm@
771
772 Upstream-Regress-ID: 77bcb50e47b68c7209c7f0a5a020d73761e5143b
773
774commit 39af7b444db28c1cb01b7ea468a4f574a44f375b
775Author: djm@openbsd.org <djm@openbsd.org>
776Date: Tue Oct 11 21:47:45 2016 +0000
777
778 upstream commit
779
780 Add a per-packet input hook that is called with the
781 decrypted packet contents. This will be used for fuzzing; ok markus@
782
783 Upstream-ID: a3221cee6b1725dd4ae1dd2c13841b4784cb75dc
784
785commit ec165c392ca54317dbe3064a8c200de6531e89ad
786Author: markus@openbsd.org <markus@openbsd.org>
787Date: Mon Oct 10 19:28:48 2016 +0000
788
789 upstream commit
790
791 Unregister the KEXINIT handler after message has been
792 received. Otherwise an unauthenticated peer can repeat the KEXINIT and cause
793 allocation of up to 128MB -- until the connection is closed. Reported by
794 shilei-c at 360.cn
795
796 Upstream-ID: 43649ae12a27ef94290db16d1a98294588b75c05
797
798commit 29d40319392e6e19deeca9d45468aa1119846e50
799Author: Darren Tucker <dtucker@zip.com.au>
800Date: Thu Oct 13 04:07:20 2016 +1100
801
802 Import rev 1.24 from OpenBSD.
803
804 revision 1.24
805 date: 2013/11/24 23:51:29; author: deraadt; state: Exp; lines: +4 -4;
806 most obvious unsigned char casts for ctype
807 ok jca krw ingo
808
809commit 12069e56221de207ed666c2449dedb431a2a7ca2
810Author: Darren Tucker <dtucker@zip.com.au>
811Date: Thu Oct 13 04:04:44 2016 +1100
812
813 Import rev 1.23 from OpenBSD. Fixes bz#2619.
814
815 revision 1.23
816 date: 2010/05/14 13:30:34; author: millert; state: Exp; lines: +41 -39;
817 Defer installing signal handlers until echo is disabled so that we
818 get suspended normally when not the foreground process. Fix potential
819 infinite loop when restoring terminal settings if process is in the
820 background when restore occurs. OK miod@
821
822commit 7508d83eff89af069760b4cc587305588a64e415
823Author: Darren Tucker <dtucker@zip.com.au>
824Date: Thu Oct 13 03:53:51 2016 +1100
825
826 If we don't have TCSASOFT, define it to zero.
827
828 This makes it a no-op when we use it below, which allows us to re-sync
829 those lines with the upstream and make future updates easier.
830
831commit aae4dbd4c058d3b1fe1eb5c4e6ddf35827271377
832Author: jmc@openbsd.org <jmc@openbsd.org>
833Date: Fri Oct 7 14:41:52 2016 +0000
834
835 upstream commit
836
837 tidy up the formatting in this file. more specifically,
838 replace .Dq, which looks appalling, with .Cm, where appropriate;
839
840 Upstream-ID: ff8e90aa0343d9bb56f40a535e148607973cc738
841
842commit a571dbcc7b7b25371174569b13df5159bc4c6c7a
843Author: djm@openbsd.org <djm@openbsd.org>
844Date: Tue Oct 4 21:34:40 2016 +0000
845
846 upstream commit
847
848 add a comment about implicitly-expected checks to
849 sshkey_ec_validate_public()
850
851 Upstream-ID: 74a7f71c28f7c13a50f89fc78e7863b9cd61713f
852
853commit 2f78a2a698f4222f8e05cad57ac6e0c3d1faff00
854Author: djm@openbsd.org <djm@openbsd.org>
855Date: Fri Sep 30 20:24:46 2016 +0000
856
857 upstream commit
858
859 fix some -Wpointer-sign warnings in the new mux proxy; ok
860 markus@
861
862 Upstream-ID: b1ba7b3769fbc6b7f526792a215b0197f5e55dfd
863
864commit ca71c36645fc26fcd739a8cfdc702cec85607761
865Author: bluhm@openbsd.org <bluhm@openbsd.org>
866Date: Wed Sep 28 20:09:52 2016 +0000
867
868 upstream commit
869
870 Add a makefile rule to create the ssh library when
871 regress needs it. This allows to run the ssh regression tests without doing
872 a "make build" before. Discussed with dtucker@ and djm@; OK djm@
873
874 Upstream-Regress-ID: ce489bd53afcd471225a125b4b94565d4717c025
875
876commit ce44c970f913d2a047903dba8670554ac42fc479
877Author: bluhm@openbsd.org <bluhm@openbsd.org>
878Date: Mon Sep 26 21:34:38 2016 +0000
879
880 upstream commit
881
882 Allow to run ssh regression tests as root. If the user
883 is already root, the test should not expect that SUDO is set. If ssh needs
884 another user, use sudo or doas to switch from root if necessary. OK dtucker@
885
886 Upstream-Regress-ID: b464e55185ac4303529e3e6927db41683aaeace2
887
888commit 8d0578478586e283e751ca51e7b0690631da139a
889Author: markus@openbsd.org <markus@openbsd.org>
890Date: Fri Sep 30 09:19:13 2016 +0000
891
892 upstream commit
893
894 ssh proxy mux mode (-O proxy; idea from Simon Tatham): - mux
895 client speaks the ssh-packet protocol directly over unix-domain socket. - mux
896 server acts as a proxy, translates channel IDs and relays to the server. - no
897 filedescriptor passing necessary. - combined with unix-domain forwarding it's
898 even possible to run mux client and server on different machines. feedback
899 & ok djm@
900
901 Upstream-ID: 666a2fb79f58e5c50e246265fb2b9251e505c25b
902
903commit b7689155f3f5c4999846c07a852b1c7a43b09cec
904Author: djm@openbsd.org <djm@openbsd.org>
905Date: Wed Sep 28 21:44:52 2016 +0000
906
907 upstream commit
908
909 put back some pre-auth zlib bits that I shouldn't have
910 removed - they are still used by the client. Spotted by naddy@
911
912 Upstream-ID: 80919468056031037d56a1f5b261c164a6f90dc2
913
914commit 4577adead6a7d600c8e764619d99477a08192c8f
915Author: djm@openbsd.org <djm@openbsd.org>
916Date: Wed Sep 28 20:32:42 2016 +0000
917
918 upstream commit
919
920 restore pre-auth compression support in the client -- the
921 previous commit was intended to remove it from the server only.
922
923 remove a few server-side pre-auth compression bits that escaped
924
925 adjust wording of Compression directive in sshd_config(5)
926
927 pointed out by naddy@ ok markus@
928
929 Upstream-ID: d23696ed72a228dacd4839dd9f2dec424ba2016b
930
931commit 80d1c963b4dc84ffd11d09617b39c4bffda08956
932Author: jmc@openbsd.org <jmc@openbsd.org>
933Date: Wed Sep 28 17:59:22 2016 +0000
934
935 upstream commit
936
937 use a separate TOKENS section, as we've done for
938 sshd_config(5); help/ok djm
939
940 Upstream-ID: 640e32b5e4838e4363738cdec955084b3579481d
941
942commit 1cfd5c06efb121e58e8b6671548fda77ef4b4455
943Author: Damien Miller <djm@mindrot.org>
944Date: Thu Sep 29 03:19:23 2016 +1000
945
946 Remove portability support for mmap
947
948 We no longer need to wrap/replace mmap for portability now that
949 pre-auth compression has been removed from OpenSSH.
950
951commit 0082fba4efdd492f765ed4c53f0d0fbd3bdbdf7f
952Author: djm@openbsd.org <djm@openbsd.org>
953Date: Wed Sep 28 16:33:06 2016 +0000
954
955 upstream commit
956
957 Remove support for pre-authentication compression. Doing
958 compression early in the protocol probably seemed reasonable in the 1990s,
959 but today it's clearly a bad idea in terms of both cryptography (cf. multiple
960 compression oracle attacks in TLS) and attack surface.
961
962 Moreover, to support it across privilege-separation zlib needed
963 the assistance of a complex shared-memory manager that made the
964 required attack surface considerably larger.
965
966 Prompted by Guido Vranken pointing out a compiler-elided security
967 check in the shared memory manager found by Stack
968 (http://css.csail.mit.edu/stack/); ok deraadt@ markus@
969
970 NB. pre-auth authentication has been disabled by default in sshd
971 for >10 years.
972
973 Upstream-ID: 32af9771788d45a0779693b41d06ec199d849caf
974
975commit 27c3a9c2aede2184856b5de1e6eca414bb751c38
976Author: djm@openbsd.org <djm@openbsd.org>
977Date: Mon Sep 26 21:16:11 2016 +0000
978
979 upstream commit
980
981 Avoid a theoretical signed integer overflow should
982 BN_num_bytes() ever violate its manpage and return a negative value. Improve
983 order of tests to avoid confusing increasingly pedantic compilers.
984
985 Reported by Guido Vranken from stack (css.csail.mit.edu/stack)
986 unstable optimisation analyser output. ok deraadt@
987
988 Upstream-ID: f8508c830c86d8f36c113985e52bf8eedae23505
989
990commit 8663e51c80c6aa3d750c6d3bcff6ee05091922be
991Author: Damien Miller <djm@mindrot.org>
992Date: Wed Sep 28 07:40:33 2016 +1000
993
994 fix mdoc2man.awk formatting for top-level lists
995
996 Reported by Glenn Golden
997 Diagnosis and fix from Ingo Schwarze
998
999commit b97739dc21570209ed9d4e7beee0c669ed23b097
1000Author: djm@openbsd.org <djm@openbsd.org>
1001Date: Thu Sep 22 21:15:41 2016 +0000
1002
1003 upstream commit
1004
1005 missing bit from previous commit
1006
1007 Upstream-ID: 438d5ed6338b28b46e822eb13eee448aca31df37
1008
1009commit de6a175a99d22444e10d19ad3fffef39bc3ee3bb
1010Author: jmc@openbsd.org <jmc@openbsd.org>
1011Date: Thu Sep 22 19:19:01 2016 +0000
1012
1013 upstream commit
1014
1015 organise the token stuff into a separate section; ok
1016 markus for an earlier version of the diff ok/tweaks djm
1017
1018 Upstream-ID: 81a6daa506a4a5af985fce7cf9e59699156527c8
1019
1020commit 16277fc45ffc95e4ffc3d45971ff8320b974de2b
1021Author: djm@openbsd.org <djm@openbsd.org>
1022Date: Thu Sep 22 17:55:13 2016 +0000
1023
1024 upstream commit
1025
1026 mention curve25519-sha256 KEX
1027
1028 Upstream-ID: 33ae1f433ce4795ffa6203761fbdf86e0d7ffbaf
1029
1030commit 0493766d5676c7ca358824ea8d3c90f6047953df
1031Author: djm@openbsd.org <djm@openbsd.org>
1032Date: Thu Sep 22 17:52:53 2016 +0000
1033
1034 upstream commit
1035
1036 support plain curve25519-sha256 KEX algorithm now that it
1037 is approaching standardisation (same algorithm is currently supported as
1038 curve25519-sha256@libssh.org)
1039
1040 Upstream-ID: 5e2b6db2e72667048cf426da43c0ee3fc777baa2
1041
1042commit f31c654b30a6f02ce0b8ea8ab81791b675489628
1043Author: dtucker@openbsd.org <dtucker@openbsd.org>
1044Date: Thu Sep 22 02:29:57 2016 +0000
1045
1046 upstream commit
1047
1048 If ssh receives a PACKET_DISCONNECT during userauth it
1049 will cause ssh_dispatch_run(DISPATCH_BLOCK, ...) to return without the
1050 session being authenticated. Check for this and exit if necessary. ok djm@
1051
1052 Upstream-ID: b3afe126c0839d2eae6cddd41ff2ba317eda0903
1053
1054commit 1622649b7a829fc8dc313042a43a974f0f3e8a99
1055Author: djm@openbsd.org <djm@openbsd.org>
1056Date: Wed Sep 21 19:53:12 2016 +0000
1057
1058 upstream commit
1059
1060 correctly return errors from kex_send_ext_info(). Fix from
1061 Sami Farin via https://github.com/openssh/openssh-portable/pull/50
1062
1063 Upstream-ID: c85999af28aaecbf92cfa2283381df81e839b42c
1064
1065commit f83a0cfe16c7a73627b46a9a94e40087d60f32fb
1066Author: djm@openbsd.org <djm@openbsd.org>
1067Date: Wed Sep 21 17:44:20 2016 +0000
1068
1069 upstream commit
1070
1071 cast uint64_t for printf
1072
1073 Upstream-ID: 76d23e89419ccbd2320f92792a6d878211666ac1
1074
1075commit 5f63ab474f58834feca4f35c498be03b7dd38a16
1076Author: djm@openbsd.org <djm@openbsd.org>
1077Date: Wed Sep 21 17:03:54 2016 +0000
1078
1079 upstream commit
1080
1081 disable tests for affirmative negated match after backout of
1082 match change
1083
1084 Upstream-Regress-ID: acebb8e5042f03d66d86a50405c46c4de0badcfd
1085
1086commit a5ad3a9db5a48f350f257a67b62fafd719ecb7e0
1087Author: djm@openbsd.org <djm@openbsd.org>
1088Date: Wed Sep 21 16:55:42 2016 +0000
1089
1090 upstream commit
1091
1092 Revert two recent changes to negated address matching. The
1093 new behaviour offers unintuitive surprises. We'll find a better way to deal
1094 with single negated matches.
1095
1096 match.c 1.31:
1097 > fix matching for pattern lists that contain a single negated match,
1098 > e.g. "Host !example"
1099 >
1100 > report and patch from Robin Becker. bz#1918 ok dtucker@
1101
1102 addrmatch.c 1.11:
1103 > fix negated address matching where the address list consists of a
1104 > single negated match, e.g. "Match addr !192.20.0.1"
1105 >
1106 > Report and patch from Jakub Jelen. bz#2397 ok dtucker@
1107
1108 Upstream-ID: ec96c770f0f5b9a54e5e72fda25387545e9c80c6
1109
1110commit 119b7a2ca0ef2bf3f81897ae10301b8ca8cba844
1111Author: djm@openbsd.org <djm@openbsd.org>
1112Date: Wed Sep 21 01:35:12 2016 +0000
1113
1114 upstream commit
1115
1116 test all the AuthorizedPrincipalsCommand % expansions
1117
1118 Upstream-Regress-ID: 0a79a84dfaa59f958e46b474c3db780b454d30e3
1119
1120commit bfa9d969ab6235d4938ce069d4db7e5825c56a19
1121Author: djm@openbsd.org <djm@openbsd.org>
1122Date: Wed Sep 21 01:34:45 2016 +0000
1123
1124 upstream commit
1125
1126 add a way for principals command to get see key ID and serial
1127 too
1128
1129 Upstream-ID: 0d30978bdcf7e8eaeee4eea1b030eb2eb1823fcb
1130
1131commit 920585b826af1c639e4ed78b2eba01fd2337b127
1132Author: djm@openbsd.org <djm@openbsd.org>
1133Date: Fri Sep 16 06:09:31 2016 +0000
1134
1135 upstream commit
1136
1137 add a note on kexfuzz' limitations
1138
1139 Upstream-Regress-ID: 03804d4a0dbc5163e1a285a4c8cc0a76a4e864ec
1140
1141commit 0445ff184080b196e12321998b4ce80b0f33f8d1
1142Author: djm@openbsd.org <djm@openbsd.org>
1143Date: Fri Sep 16 01:01:41 2016 +0000
1144
1145 upstream commit
1146
1147 fix for newer modp DH groups
1148 (diffie-hellman-group14-sha256 etc)
1149
1150 Upstream-Regress-ID: fe942c669959462b507516ae1634fde0725f1c68
1151
1152commit 28652bca29046f62c7045e933e6b931de1d16737
1153Author: markus@openbsd.org <markus@openbsd.org>
1154Date: Mon Sep 19 19:02:19 2016 +0000
1155
1156 upstream commit
1157
1158 move inbound NEWKEYS handling to kex layer; otherwise
1159 early NEWKEYS causes NULL deref; found by Robert Swiecki/honggfuzz; fixed
1160 with & ok djm@
1161
1162 Upstream-ID: 9a68b882892e9f51dc7bfa9f5a423858af358b2f
1163
1164commit 492710894acfcc2f173d14d1d45bd2e688df605d
1165Author: natano@openbsd.org <natano@openbsd.org>
1166Date: Mon Sep 19 07:52:42 2016 +0000
1167
1168 upstream commit
1169
1170 Replace two more arc4random() loops with
1171 arc4random_buf().
1172
1173 tweaks and ok dtucker
1174 ok deraadt
1175
1176 Upstream-ID: 738d3229130ccc7eac975c190276ca6fcf0208e4
1177
1178commit 1036356324fecc13099ac6e986b549f6219327d7
1179Author: tedu@openbsd.org <tedu@openbsd.org>
1180Date: Sat Sep 17 18:00:27 2016 +0000
1181
1182 upstream commit
1183
1184 replace two arc4random loops with arc4random_buf ok
1185 deraadt natano
1186
1187 Upstream-ID: e18ede972d1737df54b49f011fa4f3917a403f48
1188
1189commit 00df97ff68a49a756d4b977cd02283690f5dfa34
1190Author: djm@openbsd.org <djm@openbsd.org>
1191Date: Wed Sep 14 20:11:26 2016 +0000
1192
1193 upstream commit
1194
1195 take fingerprint of correct key for
1196 AuthorizedPrincipalsCommand
1197
1198 Upstream-ID: 553581a549cd6a3e73ce9f57559a325cc2cb1f38
1199
1200commit e7907c1cb938b96dd33d27c2fea72c4e08c6b2f6
1201Author: djm@openbsd.org <djm@openbsd.org>
1202Date: Wed Sep 14 05:42:25 2016 +0000
1203
1204 upstream commit
1205
1206 add %-escapes to AuthorizedPrincipalsCommand to match those
1207 supported for AuthorizedKeysCommand (key, key type, fingerprint, etc) and a
1208 few more to provide access to the certificate's CA key; 'looks ok' dtucker@
1209
1210 Upstream-ID: 6b00fd446dbebe67f4e4e146d2e492d650ae04eb
1211
1212commit 2b939c272a81c4d0c47badeedbcb2ba7c128ccda
1213Author: dtucker@openbsd.org <dtucker@openbsd.org>
1214Date: Wed Sep 14 00:45:31 2016 +0000
1215
1216 upstream commit
1217
1218 Improve test coverage of ssh-keygen -T a bit.
1219
1220 Upstream-Regress-ID: 8851668c721bcc2b400600cfc5a87644cc024e72
1221
1222commit 44d82fc83be6c5ccd70881c2dac1a73e5050398b
1223Author: dtucker@openbsd.org <dtucker@openbsd.org>
1224Date: Mon Sep 12 02:25:46 2016 +0000
1225
1226 upstream commit
1227
1228 Add testcase for ssh-keygen -j, -J and -K options for
1229 moduli screening. Does not currently test generation as that is extremely
1230 slow.
1231
1232 Upstream-Regress-ID: 9de6ce801377ed3ce0a63a1413f1cd5fd3c2d062
1233
1234commit 44e5f756d286bc3a1a5272ea484ee276ba3ac5c2
1235Author: djm@openbsd.org <djm@openbsd.org>
1236Date: Tue Aug 23 08:17:04 2016 +0000
1237
1238 upstream commit
1239
1240 add tests for addr_match_list()
1241
1242 Upstream-Regress-ID: fae2d1fef84687ece584738a924c7bf969616c8e
1243
1244commit 445e218878035b59c704c18406e8aeaff4c8aa25
1245Author: djm@openbsd.org <djm@openbsd.org>
1246Date: Mon Sep 12 23:39:34 2016 +0000
1247
1248 upstream commit
1249
1250 handle certs in rsa_hash_alg_from_ident(), saving an
1251 unnecessary special case elsewhere.
1252
1253 Upstream-ID: 901cb081c59d6d2698b57901c427f3f6dc7397d4
1254
1255commit 130f5df4fa37cace8c079dccb690e5cafbf00751
1256Author: djm@openbsd.org <djm@openbsd.org>
1257Date: Mon Sep 12 23:31:27 2016 +0000
1258
1259 upstream commit
1260
1261 list all supported signature algorithms in the
1262 server-sig-algs Reported by mb AT smartftp.com in bz#2547 and (independantly)
1263 Ron Frederick; ok markus@
1264
1265 Upstream-ID: ddf702d721f54646b11ef2cee6d916666cb685cd
1266
1267commit 8f750ccfc07acb8aa98be5a5dd935033a6468cfd
1268Author: Darren Tucker <dtucker@zip.com.au>
1269Date: Mon Sep 12 14:43:58 2016 +1000
1270
1271 Remove no-op brackets to resync with upstream.
1272
1273commit 7050896e7395866278c19c2ff080c26152619d1d
1274Author: Darren Tucker <dtucker@zip.com.au>
1275Date: Mon Sep 12 13:57:28 2016 +1000
1276
1277 Resync ssh-keygen -W error message with upstream.
1278
1279commit 43cceff82cc20413cce58ba3375e19684e62cec4
1280Author: Darren Tucker <dtucker@zip.com.au>
1281Date: Mon Sep 12 13:55:37 2016 +1000
1282
1283 Move ssh-keygen -W handling code to match upstream
1284
1285commit af48d541360b1d7737b35740a4b1ca34e1652cd9
1286Author: Darren Tucker <dtucker@zip.com.au>
1287Date: Mon Sep 12 13:52:17 2016 +1000
1288
1289 Move ssh-keygen -T handling code to match upstream.
1290
1291commit d8c3cfbb018825c6c86547165ddaf11924901c49
1292Author: Darren Tucker <dtucker@zip.com.au>
1293Date: Mon Sep 12 13:30:50 2016 +1000
1294
1295 Move -M handling code to match upstream.
1296
1297commit 7b63cf6dbbfa841c003de57d1061acbf2ff22364
1298Author: dtucker@openbsd.org <dtucker@openbsd.org>
1299Date: Mon Sep 12 03:29:16 2016 +0000
1300
1301 upstream commit
1302
1303 Spaces->tabs.
1304
1305 Upstream-ID: f4829dfc3f36318273f6082b379ac562eead70b7
1306
1307commit 11e5e644536821ceb3bb4dd8487fbf0588522887
1308Author: dtucker@openbsd.org <dtucker@openbsd.org>
1309Date: Mon Sep 12 03:25:20 2016 +0000
1310
1311 upstream commit
1312
1313 Style whitespace fix. Also happens to remove a no-op
1314 diff with portable.
1315
1316 Upstream-ID: 45d90f9a62ad56340913a433a9453eb30ceb8bf3
1317
1318commit 9136ec134c97a8aff2917760c03134f52945ff3c
1319Author: deraadt@openbsd.org <deraadt@openbsd.org>
1320Date: Mon Sep 12 01:22:38 2016 +0000
1321
1322 upstream commit
1323
1324 Add MAXIMUM(), MINIMUM(), and ROUNDUP() to misc.h, then
1325 use those definitions rather than pulling <sys/param.h> and unknown namespace
1326 pollution. ok djm markus dtucker
1327
1328 Upstream-ID: 712cafa816c9f012a61628b66b9fbd5687223fb8
1329
1330commit f219fc8f03caca7ac82a38ed74bbd6432a1195e7
1331Author: jmc@openbsd.org <jmc@openbsd.org>
1332Date: Wed Sep 7 18:39:24 2016 +0000
1333
1334 upstream commit
1335
1336 sort; from matthew martin
1337
1338 Upstream-ID: 73cec7f7ecc82d37a4adffad7745e4684de67ce7
1339
1340commit 06ce56b05def9460aecc7cdb40e861a346214793
1341Author: markus@openbsd.org <markus@openbsd.org>
1342Date: Tue Sep 6 09:22:56 2016 +0000
1343
1344 upstream commit
1345
1346 ssh_set_newkeys: print correct block counters on
1347 rekeying; ok djm@
1348
1349 Upstream-ID: 32bb7a9cb9919ff5bab28d50ecef3a2b2045dd1e
1350
1351commit e5e8d9114ac6837a038f4952994ca95a97fafe8d
1352Author: markus@openbsd.org <markus@openbsd.org>
1353Date: Tue Sep 6 09:14:05 2016 +0000
1354
1355 upstream commit
1356
1357 update ext_info_c every time we receive a kexinit msg;
1358 fixes sending of ext_info if privsep is disabled; report Aris Adamantiadis &
1359 Mancha; ok djm@
1360
1361 Upstream-ID: 2ceaa1076e19dbd3542254b4fb8e42d608f28856
1362
1363commit da95318dbedbaa1335323dba370975c2f251afd8
1364Author: djm@openbsd.org <djm@openbsd.org>
1365Date: Mon Sep 5 14:02:42 2016 +0000
1366
1367 upstream commit
1368
1369 remove 3des-cbc from the client's default proposal;
1370 64-bit block ciphers are not safe in 2016 and we don't want to wait until
1371 attacks like sweet32 are extended to SSH.
1372
1373 As 3des-cbc was the only mandatory cipher in the SSH RFCs, this may
1374 cause problems connecting to older devices using the defaults, but
1375 it's highly likely that such devices already need explicit
1376 configuration for KEX and hostkeys anyway.
1377
1378 ok deraadt, markus, dtucker
1379
1380 Upstream-ID: a505dfe65c6733af0f751b64cbc4bb7e0761bc2f
1381
1382commit b33ad6d997d36edfea65e243cd12ccd01f413549
1383Author: djm@openbsd.org <djm@openbsd.org>
1384Date: Mon Sep 5 13:57:31 2016 +0000
1385
1386 upstream commit
1387
1388 enforce expected request flow for GSSAPI calls; thanks to
1389 Jakub Jelen for testing; ok markus@
1390
1391 Upstream-ID: d4bc0e70e1be403735d3d9d7e176309b1fd626b9
1392
1393commit 0bb2980260fb24e5e0b51adac471395781b66261
1394Author: Darren Tucker <dtucker@zip.com.au>
1395Date: Mon Sep 12 11:07:00 2016 +1000
1396
1397 Restore ssh-keygen's -J and -j option handling.
1398
1399 These were incorrectly removed in the 1d9a2e28 sync commit.
1400
1401commit 775f8a23f2353f5869003c57a213d14b28e0736e
1402Author: Damien Miller <djm@mindrot.org>
1403Date: Wed Aug 31 10:48:07 2016 +1000
1404
1405 tighten PAM monitor calls
1406
1407 only allow kbd-interactive ones when that authentication method is
1408 enabled. Prompted by Solar Designer
1409
1410commit 7fd0ea8a1db4bcfb3d8cd9df149e5d571ebea1f4
1411Author: djm@openbsd.org <djm@openbsd.org>
1412Date: Tue Aug 30 07:50:21 2016 +0000
1413
1414 upstream commit
1415
1416 restrict monitor auth calls to be allowed only when their
1417 respective authentication methods are enabled in the configuration.
1418
1419 prompted by Solar Designer; ok markus dtucker
1420
1421 Upstream-ID: 6eb3f89332b3546d41d6dbf5a8e6ff920142b553
1422
1423commit b38b95f5bcc52278feb839afda2987933f68ff96
1424Author: Damien Miller <djm@mindrot.org>
1425Date: Mon Aug 29 11:47:07 2016 +1000
1426
1427 Tighten monitor state-machine flow for PAM calls
1428
1429 (attack surface reduction)
1430
1431commit dc664d1bd0fc91b24406a3e9575b81c285b8342b
1432Author: djm@openbsd.org <djm@openbsd.org>
1433Date: Sun Aug 28 22:28:12 2016 +0000
1434
1435 upstream commit
1436
1437 fix uninitialised optlen in getsockopt() call; harmless
1438 on Unix/BSD but potentially crashy on Cygwin. Reported by James Slepicka ok
1439 deraadt@
1440
1441 Upstream-ID: 1987ccee508ba5b18f016c85100d7ac3f70ff965
1442
1443commit 5bcc1e2769f7d6927d41daf0719a9446ceab8dd7
1444Author: guenther@openbsd.org <guenther@openbsd.org>
1445Date: Sat Aug 27 04:05:12 2016 +0000
1446
1447 upstream commit
1448
1449 Pull in <sys/time.h> for struct timeval
1450
1451 ok deraadt@
1452
1453 Upstream-ID: ae34525485a173bccd61ac8eefeb91c57e3b7df6
1454
1455commit fa4a4c96b19127dc2fd4e92f20d99c0c7f34b538
1456Author: guenther@openbsd.org <guenther@openbsd.org>
1457Date: Sat Aug 27 04:04:56 2016 +0000
1458
1459 upstream commit
1460
1461 Pull in <stdlib.h> for NULL
1462
1463 ok deraadt@
1464
1465 Upstream-ID: 7baa6a0f1e049bb3682522b4b95a26c866bfc043
1466
1467commit ae363d74ccc1451185c0c8bd4631e28c67c7fd36
1468Author: djm@openbsd.org <djm@openbsd.org>
1469Date: Thu Aug 25 23:57:54 2016 +0000
1470
1471 upstream commit
1472
1473 add a sIgnore opcode that silently ignores options and
1474 use it to suppress noisy deprecation warnings for the Protocol directive.
1475
1476 req henning, ok markus
1477
1478 Upstream-ID: 9fe040aca3d6ff393f6f7e60045cdd821dc4cbe0
1479
1480commit a94c60306643ae904add6e8ed219e4be3494255c
1481Author: djm@openbsd.org <djm@openbsd.org>
1482Date: Thu Aug 25 23:56:51 2016 +0000
1483
1484 upstream commit
1485
1486 remove superfluous NOTREACHED comment
1487
1488 Upstream-ID: a7485c1f1be618e8c9e38fd9be46c13b2d03b90c
1489
1490commit fc041c47144ce28cf71353124a8a5d183cd6a251
1491Author: otto@openbsd.org <otto@openbsd.org>
1492Date: Tue Aug 23 16:21:45 2016 +0000
1493
1494 upstream commit
1495
1496 fix previous, a condition was modified incorrectly; ok
1497 markus@ deraadt@
1498
1499 Upstream-ID: c443e339768e7ed396dff3bb55f693e7d3641453
1500
1501commit 23555eb13a9b0550371a16dcf8beaab7a5806a64
1502Author: djm@openbsd.org <djm@openbsd.org>
1503Date: Tue Aug 23 08:17:42 2016 +0000
1504
1505 upstream commit
1506
1507 downgrade an error() to a debug2() to match similar cases
1508 in addr_match_list()
1509
1510 Upstream-ID: 07c3d53e357214153d9d08f234411e0d1a3d6f5c
1511
1512commit a39627134f6d90e7009eeb14e9582ecbc7a99192
1513Author: djm@openbsd.org <djm@openbsd.org>
1514Date: Tue Aug 23 06:36:23 2016 +0000
1515
1516 upstream commit
1517
1518 remove Protocol directive from client/server configs that
1519 causes spammy deprecation warnings
1520
1521 hardcode SSH_PROTOCOLS=2, since that's all we support on the server
1522 now (the client still may support both, so it could get confused)
1523
1524 Upstream-Regress-ID: c16662c631af51633f9fd06aca552a70535de181
1525
1526commit 6ee4f1c01ee31e65245881d49d4bccf014956066
1527Author: Damien Miller <djm@mindrot.org>
1528Date: Tue Aug 23 16:33:48 2016 +1000
1529
1530 hook match and utf8 unittests up to Makefile
1531
1532commit 114efe2bc0dd2842d997940a833f115e6fc04854
1533Author: djm@openbsd.org <djm@openbsd.org>
1534Date: Fri Aug 19 06:44:13 2016 +0000
1535
1536 upstream commit
1537
1538 add tests for matching functions
1539
1540 Upstream-Regress-ID: 0869d4f5c5d627c583c6a929d69c17d5dd65882c
1541
1542commit 857568d2ac81c14bcfd625b27536c1e28c992b3c
1543Author: Damien Miller <djm@mindrot.org>
1544Date: Tue Aug 23 14:32:37 2016 +1000
1545
1546 removing UseLogin bits from configure.ac
1547
1548commit cc182d01cef8ca35a1d25ea9bf4e2ff72e588208
1549Author: djm@openbsd.org <djm@openbsd.org>
1550Date: Tue Aug 23 03:24:10 2016 +0000
1551
1552 upstream commit
1553
1554 fix negated address matching where the address list
1555 consists of a single negated match, e.g. "Match addr !192.20.0.1"
1556
1557 Report and patch from Jakub Jelen. bz#2397 ok dtucker@
1558
1559 Upstream-ID: 01dcac3f3e6ca47518cf293e31c73597a4bb40d8
1560
1561commit 4067ec8a4c64ccf16250c35ff577b4422767da64
1562Author: djm@openbsd.org <djm@openbsd.org>
1563Date: Tue Aug 23 03:22:49 2016 +0000
1564
1565 upstream commit
1566
1567 fix matching for pattern lists that contain a single
1568 negated match, e.g. "Host !example"
1569
1570 report and patch from Robin Becker. bz#1918 ok dtucker@
1571
1572 Upstream-ID: 05a0cb323ea4bc20e98db099b42c067bfb9ea1ea
1573
1574commit 83b581862a1dbb06fc859959f829dde2654aef3c
1575Author: djm@openbsd.org <djm@openbsd.org>
1576Date: Fri Aug 19 03:18:06 2016 +0000
1577
1578 upstream commit
1579
1580 remove UseLogin option and support for having /bin/login
1581 manage login sessions; ok deraadt markus dtucker
1582
1583 Upstream-ID: bea7213fbf158efab7e602d9d844fba4837d2712
1584
1585commit ffe6549c2f7a999cc5264b873a60322e91862581
1586Author: naddy@openbsd.org <naddy@openbsd.org>
1587Date: Mon Aug 15 12:32:04 2016 +0000
1588
1589 upstream commit
1590
1591 Catch up with the SSH1 code removal and delete all
1592 mention of protocol 1 particularities, key files and formats, command line
1593 options, and configuration keywords from the server documentation and
1594 examples. ok jmc@
1595
1596 Upstream-ID: 850328854675b4b6a0d4a90f0b4a9dd9ca4e905f
1597
1598commit c38ea634893a1975dbbec798fb968c9488013f4a
1599Author: naddy@openbsd.org <naddy@openbsd.org>
1600Date: Mon Aug 15 12:27:56 2016 +0000
1601
1602 upstream commit
1603
1604 Remove more SSH1 server code: * Drop sshd's -k option. *
1605 Retire configuration keywords that only apply to protocol 1, as well as the
1606 "protocol" keyword. * Remove some related vestiges of protocol 1 support.
1607
1608 ok markus@
1609
1610 Upstream-ID: 9402f82886de917779db12f8ee3f03d4decc244d
1611
1612commit 33ba55d9e358c07f069e579bfab80eccaaad52cb
1613Author: Darren Tucker <dtucker@zip.com.au>
1614Date: Wed Aug 17 16:26:04 2016 +1000
1615
1616 Only check for prctl once.
1617
1618commit 976ba8a8fd66a969bf658280c1e5adf694cc2fc6
1619Author: Darren Tucker <dtucker@zip.com.au>
1620Date: Wed Aug 17 15:33:10 2016 +1000
1621
1622 Fix typo.
1623
1624commit 9abf84c25ff4448891edcde60533a6e7b2870de1
1625Author: Darren Tucker <dtucker@zip.com.au>
1626Date: Wed Aug 17 14:25:43 2016 +1000
1627
1628 Correct LDFLAGS for clang example.
1629
1630 --with-ldflags isn't used until after the -ftrapv test, so mention
1631 LDFLAGS instead for now.
1632
1633commit 1e8013a17ff11e3c6bd0012fb1fc8d5f1330eb21
1634Author: Darren Tucker <dtucker@zip.com.au>
1635Date: Wed Aug 17 14:08:42 2016 +1000
1636
1637 Remove obsolete CVS $Id from source files.
1638
1639 Since -portable switched to git the CVS $Id tags are no longer being
1640 updated and are becoming increasingly misleading. Remove them.
1641
1642commit adab758242121181700e48b4f6c60d6b660411fe
1643Author: Darren Tucker <dtucker@zip.com.au>
1644Date: Wed Aug 17 13:40:58 2016 +1000
1645
1646 Remove now-obsolete CVS $Id tags from text files.
1647
1648 Since -portable switched to git, the CVS $Id tags are no longer being
1649 updated and are becoming increasingly misleading. Remove them.
1650
1651commit 560c0068541315002ec4c1c00a560bbd30f2d671
1652Author: Darren Tucker <dtucker@zip.com.au>
1653Date: Wed Aug 17 13:38:30 2016 +1000
1654
1655 Add a section for compiler specifics.
1656
1657 Add a section for compiler specifics and document the runtime requirements
1658 for clang's integer sanitization.
1659
1660commit a8fc0f42e1eda2fa3393d1ea5e61322d5e07a9cd
1661Author: Darren Tucker <dtucker@zip.com.au>
1662Date: Wed Aug 17 13:35:43 2016 +1000
1663
1664 Test multiplying two long long ints.
1665
1666 When using clang with -ftrapv or -sanitize=integer the tests would pass
1667 but linking would fail with "undefined reference to __mulodi4".
1668 Explicitly test for this before enabling -trapv.
1669
1670commit a1cc637e7e11778eb727559634a6ef1c19c619f6
1671Author: Damien Miller <djm@mindrot.org>
1672Date: Tue Aug 16 14:47:34 2016 +1000
1673
1674 add a --with-login-program configure argument
1675
1676 Saves messing around with LOGIN_PROGRAM env var, which come
1677 packaging environments make hard to do during configure phase.
1678
1679commit 8bd81e1596ab1bab355146cb65e82fb96ade3b23
1680Author: Damien Miller <djm@mindrot.org>
1681Date: Tue Aug 16 13:30:56 2016 +1000
1682
1683 add --with-pam-service to specify PAM service name
1684
1685 Saves messing around with CFLAGS to do it.
1686
1687commit 74433a19bb6f4cef607680fa4d1d7d81ca3826aa
1688Author: Damien Miller <djm@mindrot.org>
1689Date: Tue Aug 16 13:28:23 2016 +1000
1690
1691 fix false positives when compiled with msan
1692
1693 Our explicit_bzero successfully confused clang -fsanitize-memory
1694 in to thinking that memset is never called to initialise memory.
1695 Ensure that it is called in a way that the compiler recognises.
1696
1697commit 6cb6dcffe1a2204ba9006de20f73255c268fcb6b
1698Author: markus@openbsd.org <markus@openbsd.org>
1699Date: Sat Aug 13 17:47:40 2016 +0000
1700
1701 upstream commit
1702
1703 remove ssh1 server code; ok djm@
1704
1705 Upstream-ID: c24c0c32c49b91740d5a94ae914fb1898ea5f534
1706
1707commit 42d47adc5ad1187f22c726cbc52e71d6b1767ca2
1708Author: jca@openbsd.org <jca@openbsd.org>
1709Date: Fri Aug 12 19:19:04 2016 +0000
1710
1711 upstream commit
1712
1713 Use 2001:db8::/32, the official IPv6 subnet for
1714 configuration examples.
1715
1716 This makes the IPv6 example consistent with IPv4, and removes a dubious
1717 mention of a 6bone subnet.
1718
1719 ok sthen@ millert@
1720
1721 Upstream-ID: b027f3d0e0073419a132fd1bf002e8089b233634
1722
1723commit b61f53c0c3b43c28e013d3b3696d64d1c0204821
1724Author: dtucker@openbsd.org <dtucker@openbsd.org>
1725Date: Thu Aug 11 01:42:11 2016 +0000
1726
1727 upstream commit
1728
1729 Update moduli file.
1730
1731 Upstream-ID: 6da9a37f74aef9f9cc639004345ad893cad582d8
1732
1733commit f217d9bd42d306f69f56335231036b44502d8191
1734Author: Darren Tucker <dtucker@zip.com.au>
1735Date: Thu Aug 11 11:42:48 2016 +1000
1736
1737 Import updated moduli.
1738
1739commit 67dca60fbb4923b7a11c1645b90a5ca57c03d8be
1740Author: dtucker@openbsd.org <dtucker@openbsd.org>
1741Date: Mon Aug 8 22:40:57 2016 +0000
1742
1743 upstream commit
1744
1745 Improve error message for overlong ControlPath. ok markus@
1746 djm@
1747
1748 Upstream-ID: aed374e2e88dd3eb41390003e5303d0089861eb5
1749
1750commit 4706c1d8c15cd5565b59512853c2da9bd4ca26c9
1751Author: djm@openbsd.org <djm@openbsd.org>
1752Date: Wed Aug 3 05:41:57 2016 +0000
1753
1754 upstream commit
1755
1756 small refactor of cipher.c: make ciphercontext opaque to
1757 callers feedback and ok markus@
1758
1759 Upstream-ID: 094849f8be68c3bdad2c0f3dee551ecf7be87f6f
1760
1761commit e600348a7afd6325cc5cd783cb424065cbc20434
1762Author: dtucker@openbsd.org <dtucker@openbsd.org>
1763Date: Wed Aug 3 04:23:55 2016 +0000
1764
1765 upstream commit
1766
1767 Fix bug introduced in rev 1.467 which causes
1768 "buffer_get_bignum_ret: incomplete message" errors when built with WITH_SSH1
1769 and run such that no Protocol 1 ephemeral host key is generated (eg "Protocol
1770 2", no SSH1 host key supplied). Reported by rainer.laatsch at t-online.de,
1771 ok deraadt@
1772
1773 Upstream-ID: aa6b132da5c325523aed7989cc5a320497c919dc
1774
1775commit d7e7348e72f9b203189e3fffb75605afecba4fda
1776Author: djm@openbsd.org <djm@openbsd.org>
1777Date: Wed Jul 27 23:18:12 2016 +0000
1778
1779 upstream commit
1780
1781 better bounds check on iovcnt (we only ever use fixed,
1782 positive values)
1783
1784 Upstream-ID: 9baa6eb5cd6e30c9dc7398e5fe853721a3a5bdee
1785
1786commit 5faa52d295f764562ed6dd75c4a4ce9134ae71e3
1787Author: Darren Tucker <dtucker@zip.com.au>
1788Date: Tue Aug 2 15:22:40 2016 +1000
1789
1790 Use tabs consistently inside "case $host".
1791
1792commit 20e5e8ba9c5d868d897896190542213a60fffbd2
1793Author: Darren Tucker <dtucker@zip.com.au>
1794Date: Tue Aug 2 12:16:34 2016 +1000
1795
1796 Explicitly test for broken strnvis.
1797
1798 NetBSD added an strnvis and unfortunately made it incompatible with the
1799 existing one in OpenBSD and Linux's libbsd (the former having existed
1800 for over ten years). Despite this incompatibility being reported during
1801 development (see http://gnats.netbsd.org/44977) they still shipped it.
1802 Even more unfortunately FreeBSD and later MacOS picked up this incompatible
1803 implementation. Try to detect this mess, and assume the only safe option
1804 if we're cross compiling.
1805
1806 OpenBSD 2.9 (2001): strnvis(char *dst, const char *src, size_t dlen, int flag);
1807 NetBSD 6.0 (2012): strnvis(char *dst, size_t dlen, const char *src, int flag);
1808
1809 ok djm@
1810
1811commit b0b48beab1b74100b61ecbadb9140c9ab4c2ea8c
1812Author: Damien Miller <djm@mindrot.org>
1813Date: Tue Aug 2 11:06:23 2016 +1000
1814
1815 update recommended autoconf version
1816
1817commit 23902e31dfd18c6d7bb41ccd73de3b5358a377da
1818Author: Damien Miller <djm@mindrot.org>
1819Date: Tue Aug 2 10:48:04 2016 +1000
1820
1821 update config.guess and config.sub to current
1822
1823 upstream commit 562f3512b3911ba0c77a7f68214881d1f241f46e
1824
1825commit dd1031b78b83083615b68d7163c44f4408635be2
1826Author: Darren Tucker <dtucker@zip.com.au>
1827Date: Tue Aug 2 10:01:52 2016 +1000
1828
1829 Replace spaces with tabs.
1830
1831 Mechanically replace spaces with tabs in compat files not synced with
1832 OpenBSD.
1833
1834commit c20dccb5614c5714f4155dda01bcdebf97cfae7e
1835Author: Darren Tucker <dtucker@zip.com.au>
1836Date: Tue Aug 2 09:44:25 2016 +1000
1837
1838 Strip trailing whitespace.
1839
1840 Mechanically strip trailing whitespace on files not synced with OpenBSD
1841 (or in the case of bsd-snprint.c, rsync).
1842
1843commit 30f9bd1c0963c23bfba8468dfd26aa17609ba42f
1844Author: Darren Tucker <dtucker@zip.com.au>
1845Date: Tue Aug 2 09:06:27 2016 +1000
1846
1847 Repair $OpenBSD markers.
1848
1849commit 9715d4ad4b53877ec23dc8681dd7a405de9419a6
1850Author: Darren Tucker <dtucker@zip.com.au>
1851Date: Tue Aug 2 09:02:42 2016 +1000
1852
1853 Repair $OpenBSD marker.
1854
1855commit cf3e0be7f5828a5e5f6c296a607d20be2f07d60c
1856Author: Tim Rice <tim@multitalents.net>
1857Date: Mon Aug 1 14:31:52 2016 -0700
1858
1859 modified: configure.ac opensshd.init.in
1860 Skip generating missing RSA1 key on startup unless ssh1 support is enabled.
1861 Spotted by Jean-Pierre Radley
1862
1commit 99522ba7ec6963a05c04a156bf20e3ba3605987c 1863commit 99522ba7ec6963a05c04a156bf20e3ba3605987c
2Author: Damien Miller <djm@mindrot.org> 1864Author: Damien Miller <djm@mindrot.org>
3Date: Thu Jul 28 08:54:27 2016 +1000 1865Date: Thu Jul 28 08:54:27 2016 +1000
@@ -8402,801 +10264,3 @@ Date: Thu Dec 18 23:58:04 2014 +0000
8402 10264
8403 don't count partial authentication success as a failure 10265 don't count partial authentication success as a failure
8404 against MaxAuthTries; ok deraadt@ 10266 against MaxAuthTries; ok deraadt@
8405
8406commit c7219f4f54d64d6dde66dbcf7a2699daa782d2a1
8407Author: djm@openbsd.org <djm@openbsd.org>
8408Date: Fri Dec 12 00:02:17 2014 +0000
8409
8410 upstream commit
8411
8412 revert chunk I didn't mean to commit yet; via jmc@
8413
8414commit 7de5991aa3997e2981440f39c1ea01273a0a2c7b
8415Author: Damien Miller <djm@mindrot.org>
8416Date: Thu Dec 18 11:44:06 2014 +1100
8417
8418 upstream libc change
8419
8420 revision 1.2
8421 date: 2014/12/08 03:45:00; author: bcook; state: Exp; lines: +2 -2; commitid: 7zWEBgJJOCZ2hvTV;
8422 avoid left shift overflow in reallocarray.
8423
8424 Some 64-bit platforms (e.g. Windows 64) have a 32-bit long. So, shifting
8425 1UL 32-bits to the left causes an overflow. This replaces the constant 1UL with
8426 (size_t)1 so that we get the correct constant size for the platform.
8427
8428 discussed with tedu@ & deraadt@
8429
8430commit 2048f85a5e6da8bc6e0532efe02ecfd4e63c978c
8431Author: Damien Miller <djm@mindrot.org>
8432Date: Thu Dec 18 10:15:49 2014 +1100
8433
8434 include CFLAGS in gnome askpass targets
8435
8436 from Fedora
8437
8438commit 48b68ce19ca42fa488960028048dec023f7899bb
8439Author: djm@openbsd.org <djm@openbsd.org>
8440Date: Thu Dec 11 08:20:09 2014 +0000
8441
8442 upstream commit
8443
8444 explicitly include sys/param.h in files that use the
8445 howmany() macro; from portable
8446
8447commit d663bea30a294d440fef4398e5cd816317bd4518
8448Author: djm@openbsd.org <djm@openbsd.org>
8449Date: Thu Dec 11 05:25:06 2014 +0000
8450
8451 upstream commit
8452
8453 mention AuthorizedKeysCommandUser must be set for
8454 AuthorizedKeysCommand to be run; bz#2287
8455
8456commit 17bf3d81e00f2abb414a4fd271118cf4913f049f
8457Author: djm@openbsd.org <djm@openbsd.org>
8458Date: Thu Dec 11 05:13:28 2014 +0000
8459
8460 upstream commit
8461
8462 show in debug output which hostkeys are being tried when
8463 attempting hostbased auth; patch from Iain Morgan
8464
8465commit da0277e3717eadf5b15e03379fc29db133487e94
8466Author: djm@openbsd.org <djm@openbsd.org>
8467Date: Thu Dec 11 04:16:14 2014 +0000
8468
8469 upstream commit
8470
8471 Make manual reflect reality: sftp-server's -d option
8472 accepts a "%d" option, not a "%h" one.
8473
8474 bz#2316; reported by Kirk Wolf
8475
8476commit 4cf87f4b81fa9380bce5fcff7b0f8382ae3ad996
8477Author: djm@openbsd.org <djm@openbsd.org>
8478Date: Wed Dec 10 01:24:09 2014 +0000
8479
8480 upstream commit
8481
8482 better error value for invalid signature length
8483
8484commit 4bfad14ca56f8ae04f418997816b4ba84e2cfc3c
8485Author: Darren Tucker <dtucker@zip.com.au>
8486Date: Wed Dec 10 02:12:51 2014 +1100
8487
8488 Resync more with OpenBSD's rijndael.c, in particular "#if 0"-ing out some
8489 unused code. Should fix compile error reported by plautrba at redhat.
8490
8491commit 642652d280499691c8212ec6b79724b50008ce09
8492Author: Darren Tucker <dtucker@zip.com.au>
8493Date: Wed Dec 10 01:32:23 2014 +1100
8494
8495 Add reallocarray to compat library
8496
8497commit 3dfd8d93dfcc69261f5af99df56f3ff598581979
8498Author: djm@openbsd.org <djm@openbsd.org>
8499Date: Thu Dec 4 22:31:50 2014 +0000
8500
8501 upstream commit
8502
8503 add tests for new client RevokedHostKeys option; refactor
8504 to make it a bit more readable
8505
8506commit a31046cad1aed16a0b55171192faa6d02665ccec
8507Author: krw@openbsd.org <krw@openbsd.org>
8508Date: Wed Nov 19 13:35:37 2014 +0000
8509
8510 upstream commit
8511
8512 Nuke yet more obvious #include duplications.
8513
8514 ok deraadt@
8515
8516commit a7c762e5b2c1093542c0bc1df25ccec0b4cf479f
8517Author: djm@openbsd.org <djm@openbsd.org>
8518Date: Thu Dec 4 20:47:36 2014 +0000
8519
8520 upstream commit
8521
8522 key_in_file() wrapper is no longer used
8523
8524commit 5e39a49930d885aac9c76af3129332b6e772cd75
8525Author: djm@openbsd.org <djm@openbsd.org>
8526Date: Thu Dec 4 02:24:32 2014 +0000
8527
8528 upstream commit
8529
8530 add RevokedHostKeys option for the client
8531
8532 Allow textfile or KRL-based revocation of hostkeys.
8533
8534commit 74de254bb92c684cf53461da97f52d5ba34ded80
8535Author: djm@openbsd.org <djm@openbsd.org>
8536Date: Thu Dec 4 01:49:59 2014 +0000
8537
8538 upstream commit
8539
8540 convert KRL code to new buffer API
8541
8542 ok markus@
8543
8544commit db995f2eed5fc432598626fa3e30654503bf7151
8545Author: millert@openbsd.org <millert@openbsd.org>
8546Date: Wed Nov 26 18:34:51 2014 +0000
8547
8548 upstream commit
8549
8550 Prefer setvbuf() to setlinebuf() for portability; ok
8551 deraadt@
8552
8553commit 72bba3d179ced8b425272efe6956a309202a91f3
8554Author: jsg@openbsd.org <jsg@openbsd.org>
8555Date: Mon Nov 24 03:39:22 2014 +0000
8556
8557 upstream commit
8558
8559 Fix crashes in the handling of the sshd config file found
8560 with the afl fuzzer.
8561
8562 ok deraadt@ djm@
8563
8564commit 867f49c666adcfe92bf539d9c37c1accdea08bf6
8565Author: Damien Miller <djm@mindrot.org>
8566Date: Wed Nov 26 13:22:41 2014 +1100
8567
8568 Avoid Cygwin ssh-host-config reading /etc/group
8569
8570 Patch from Corinna Vinschen
8571
8572commit 8b66f36291a721b1ba7c44f24a07fdf39235593e
8573Author: Damien Miller <djm@mindrot.org>
8574Date: Wed Nov 26 13:20:35 2014 +1100
8575
8576 allow custom service name for sshd on Cygwin
8577
8578 Permits the use of multiple sshd running with different service names.
8579
8580 Patch by Florian Friesdorf via Corinna Vinschen
8581
8582commit 08c0eebf55d70a9ae1964399e609288ae3186a0c
8583Author: jmc@openbsd.org <jmc@openbsd.org>
8584Date: Sat Nov 22 19:21:03 2014 +0000
8585
8586 upstream commit
8587
8588 restore word zapped in previous, and remove some useless
8589 "No" macros;
8590
8591commit a1418a0033fba43f061513e992e1cbcc3343e563
8592Author: deraadt@openbsd.org <deraadt@openbsd.org>
8593Date: Sat Nov 22 18:15:41 2014 +0000
8594
8595 upstream commit
8596
8597 /dev/random has created the same effect as /dev/arandom
8598 (and /dev/urandom) for quite some time. Mop up the last few, by using
8599 /dev/random where we actually want it, or not even mentioning arandom where
8600 it is irrelevant.
8601
8602commit b6de5ac9ed421362f479d1ad4fa433d2e25dad5b
8603Author: djm@openbsd.org <djm@openbsd.org>
8604Date: Fri Nov 21 01:00:38 2014 +0000
8605
8606 upstream commit
8607
8608 fix NULL pointer dereference crash on invalid timestamp
8609
8610 found using Michal Zalewski's afl fuzzer
8611
8612commit a1f8110cd5ed818d59b3a2964fab7de76e92c18e
8613Author: mikeb@openbsd.org <mikeb@openbsd.org>
8614Date: Tue Nov 18 22:38:48 2014 +0000
8615
8616 upstream commit
8617
8618 Sync AES code to the one shipped in OpenSSL/LibreSSL.
8619
8620 This includes a commit made by Andy Polyakov <appro at openssl ! org>
8621 to the OpenSSL source tree on Wed, 28 Jun 2006 with the following
8622 message: "Mitigate cache-collision timing attack on last round."
8623
8624 OK naddy, miod, djm
8625
8626commit 335c83d5f35d8620e16b8aa26592d4f836e09ad2
8627Author: krw@openbsd.org <krw@openbsd.org>
8628Date: Tue Nov 18 20:54:28 2014 +0000
8629
8630 upstream commit
8631
8632 Nuke more obvious #include duplications.
8633
8634 ok deraadt@ millert@ tedu@
8635
8636commit 51b64e44121194ae4bf153dee391228dada2abcb
8637Author: djm@openbsd.org <djm@openbsd.org>
8638Date: Mon Nov 17 00:21:40 2014 +0000
8639
8640 upstream commit
8641
8642 fix KRL generation when multiple CAs are in use
8643
8644 We would generate an invalid KRL when revoking certs by serial
8645 number for multiple CA keys due to a section being written out
8646 twice.
8647
8648 Also extend the regress test to catch this case by having it
8649 produce a multi-CA KRL.
8650
8651 Reported by peter AT pean.org
8652
8653commit d2d51003a623e21fb2b25567c4878d915e90aa2a
8654Author: djm@openbsd.org <djm@openbsd.org>
8655Date: Tue Nov 18 01:02:25 2014 +0000
8656
8657 upstream commit
8658
8659 fix NULL pointer dereference crash in key loading
8660
8661 found by Michal Zalewski's AFL fuzzer
8662
8663commit 9f9fad0191028edc43d100d0ded39419b6895fdf
8664Author: djm@openbsd.org <djm@openbsd.org>
8665Date: Mon Nov 17 00:21:40 2014 +0000
8666
8667 upstream commit
8668
8669 fix KRL generation when multiple CAs are in use
8670
8671 We would generate an invalid KRL when revoking certs by serial
8672 number for multiple CA keys due to a section being written out
8673 twice.
8674
8675 Also extend the regress test to catch this case by having it
8676 produce a multi-CA KRL.
8677
8678 Reported by peter AT pean.org
8679
8680commit da8af83d3f7ec00099963e455010e0ed1d7d0140
8681Author: bentley@openbsd.org <bentley@openbsd.org>
8682Date: Sat Nov 15 14:41:03 2014 +0000
8683
8684 upstream commit
8685
8686 Reduce instances of `` '' in manuals.
8687
8688 troff displays these as typographic quotes, but nroff implementations
8689 almost always print them literally, which rarely has the intended effect
8690 with modern fonts, even in stock xterm.
8691
8692 These uses of `` '' can be replaced either with more semantic alternatives
8693 or with Dq, which prints typographic quotes in a UTF-8 locale (but will
8694 automatically fall back to `` '' in an ASCII locale).
8695
8696 improvements and ok schwarze@
8697
8698commit fc302561369483bb755b17f671f70fb894aec01d
8699Author: djm@openbsd.org <djm@openbsd.org>
8700Date: Mon Nov 10 22:25:49 2014 +0000
8701
8702 upstream commit
8703
8704 mux-related manual tweaks
8705
8706 mention ControlPersist=0 is the same as ControlPersist=yes
8707
8708 recommend that ControlPath sockets be placed in a og-w directory
8709
8710commit 0e4cff5f35ed11102fe3783779960ef07e0cd381
8711Author: Damien Miller <djm@google.com>
8712Date: Wed Nov 5 11:01:31 2014 +1100
8713
8714 Prepare scripts for next Cygwin release
8715
8716 Makes the Cygwin-specific ssh-user-config script independent of the
8717 existence of /etc/passwd. The next Cygwin release will allow to
8718 generate passwd and group entries from the Windows account DBs, so the
8719 scripts have to adapt.
8720
8721 from Corinna Vinschen
8722
8723commit 7d0ba5336651731949762eb8877ce9e3b52df436
8724Author: Damien Miller <djm@mindrot.org>
8725Date: Thu Oct 30 10:45:41 2014 +1100
8726
8727 include version number in OpenSSL-too-old error
8728
8729commit 3bcb92e04d9207e9f78d82f7918c6d3422054ce9
8730Author: lteo@openbsd.org <lteo@openbsd.org>
8731Date: Fri Oct 24 02:01:20 2014 +0000
8732
8733 upstream commit
8734
8735 Remove unnecessary include: netinet/in_systm.h is not needed
8736 by these programs.
8737
8738 NB. skipped for portable
8739
8740 ok deraadt@ millert@
8741
8742commit 6fdcaeb99532e28a69f1a1599fbd540bb15b70a0
8743Author: djm@openbsd.org <djm@openbsd.org>
8744Date: Mon Oct 20 03:43:01 2014 +0000
8745
8746 upstream commit
8747
8748 whitespace
8749
8750commit 165bc8786299e261706ed60342985f9de93a7461
8751Author: daniel@openbsd.org <daniel@openbsd.org>
8752Date: Tue Oct 14 03:09:59 2014 +0000
8753
8754 upstream commit
8755
8756 plug a memory leak; from Maxime Villard.
8757
8758 ok djm@
8759
8760commit b1ba15f3885947c245c2dbfaad0a04ba050abea0
8761Author: jmc@openbsd.org <jmc@openbsd.org>
8762Date: Thu Oct 9 06:21:31 2014 +0000
8763
8764 upstream commit
8765
8766 tweak previous;
8767
8768commit 259a02ebdf74ad90b41d116ecf70aa823fa4c6e7
8769Author: djm@openbsd.org <djm@openbsd.org>
8770Date: Mon Oct 13 00:38:35 2014 +0000
8771
8772 upstream commit
8773
8774 whitespace
8775
8776commit 957fbceb0f3166e41b76fdb54075ab3b9cc84cba
8777Author: djm@openbsd.org <djm@openbsd.org>
8778Date: Wed Oct 8 22:20:25 2014 +0000
8779
8780 upstream commit
8781
8782 Tweak config reparsing with host canonicalisation
8783
8784 Make the second pass through the config files always run when
8785 hostname canonicalisation is enabled.
8786
8787 Add a "Match canonical" criteria that allows ssh_config Match
8788 blocks to trigger only in the second config pass.
8789
8790 Add a -G option to ssh that causes it to parse its configuration
8791 and dump the result to stdout, similar to "sshd -T"
8792
8793 Allow ssh_config Port options set in the second config parse
8794 phase to be applied (they were being ignored).
8795
8796 bz#2267 bz#2286; ok markus
8797
8798commit 5c0dafd38bf66feeeb45fa0741a5baf5ad8039ba
8799Author: djm@openbsd.org <djm@openbsd.org>
8800Date: Wed Oct 8 22:15:27 2014 +0000
8801
8802 upstream commit
8803
8804 another -Wpointer-sign from clang
8805
8806commit bb005dc815ebda9af3ae4b39ca101c4da918f835
8807Author: djm@openbsd.org <djm@openbsd.org>
8808Date: Wed Oct 8 22:15:06 2014 +0000
8809
8810 upstream commit
8811
8812 fix a few -Wpointer-sign warnings from clang
8813
8814commit 3cc1fbb4fb0e804bfb873fd363cea91b27fc8188
8815Author: djm@openbsd.org <djm@openbsd.org>
8816Date: Wed Oct 8 21:45:48 2014 +0000
8817
8818 upstream commit
8819
8820 parse cert sections using nested buffers to reduce
8821 copies; ok markus
8822
8823commit 4a45922aebf99164e2fc83d34fe55b11ae1866ef
8824Author: djm@openbsd.org <djm@openbsd.org>
8825Date: Mon Oct 6 00:47:15 2014 +0000
8826
8827 upstream commit
8828
8829 correct options in usage(); from mancha1 AT zoho.com
8830
8831commit 48dffd5bebae6fed0556dc5c36cece0370690618
8832Author: djm@openbsd.org <djm@openbsd.org>
8833Date: Tue Sep 9 09:45:36 2014 +0000
8834
8835 upstream commit
8836
8837 mention permissions on tun(4) devices in PermitTunnel
8838 documentation; bz#2273
8839
8840commit a5883d4eccb94b16c355987f58f86a7dee17a0c2
8841Author: djm@openbsd.org <djm@openbsd.org>
8842Date: Wed Sep 3 18:55:07 2014 +0000
8843
8844 upstream commit
8845
8846 tighten permissions on pty when the "tty" group does
8847 not exist; pointed out by Corinna Vinschen; ok markus
8848
8849commit 180bcb406b58bf30723c01a6b010e48ee626dda8
8850Author: sobrado@openbsd.org <sobrado@openbsd.org>
8851Date: Sat Aug 30 16:32:25 2014 +0000
8852
8853 upstream commit
8854
8855 typo.
8856
8857commit f70b22bcdd52f6bf127047b3584371e6e5d45627
8858Author: sobrado@openbsd.org <sobrado@openbsd.org>
8859Date: Sat Aug 30 15:33:50 2014 +0000
8860
8861 upstream commit
8862
8863 improve capitalization for the Ed25519 public-key
8864 signature system.
8865
8866 ok djm@
8867
8868commit 7df8818409c752cf3f0c3f8044fe9aebed8647bd
8869Author: doug@openbsd.org <doug@openbsd.org>
8870Date: Thu Aug 21 01:08:52 2014 +0000
8871
8872 upstream commit
8873
8874 Free resources on error in mkstemp and fdopen
8875
8876 ok djm@
8877
8878commit 40ba4c9733aaed08304714faeb61529f18da144b
8879Author: deraadt@openbsd.org <deraadt@openbsd.org>
8880Date: Wed Aug 20 01:28:55 2014 +0000
8881
8882 upstream commit
8883
8884 djm how did you make a typo like that...
8885
8886commit 57d378ec9278ba417a726f615daad67d157de666
8887Author: djm@openbsd.org <djm@openbsd.org>
8888Date: Tue Aug 19 23:58:28 2014 +0000
8889
8890 upstream commit
8891
8892 When dumping the server configuration (sshd -T), print
8893 correct KEX, MAC and cipher defaults. Spotted by Iain Morgan
8894
8895commit 7ff880ede5195d0b17e7f1e3b6cfbc4cb6f85240
8896Author: djm@openbsd.org <djm@openbsd.org>
8897Date: Tue Aug 19 23:57:18 2014 +0000
8898
8899 upstream commit
8900
8901 ~-expand lcd paths
8902
8903commit 4460a7ad0c78d4cd67c467f6e9f4254d0404ed59
8904Author: Damien Miller <djm@mindrot.org>
8905Date: Sun Oct 12 12:35:48 2014 +1100
8906
8907 remove duplicated KEX_DH1 entry
8908
8909commit c9b8426a616138d0d762176c94f51aff3faad5ff
8910Author: Damien Miller <djm@mindrot.org>
8911Date: Thu Oct 9 10:34:06 2014 +1100
8912
8913 remove ChangeLog file
8914
8915 Commit logs will be generated from git at release time.
8916
8917commit 81d18ff7c93a04affbf3903e0963859763219aed
8918Author: Damien Miller <djm@google.com>
8919Date: Tue Oct 7 21:24:25 2014 +1100
8920
8921 delete contrib/caldera directory
8922
8923commit 0ec9e87d3638206456968202f05bb5123670607a
8924Author: Damien Miller <djm@google.com>
8925Date: Tue Oct 7 19:57:27 2014 +1100
8926
8927 test commit
8928
8929commit 8fb65a44568701b779f3d77326bceae63412d28d
8930Author: Damien Miller <djm@mindrot.org>
8931Date: Tue Oct 7 09:21:49 2014 +1100
8932
8933 - (djm) Release OpenSSH-6.7
8934
8935commit e8c9f2602c46f6781df5e52e6cd8413dab4602a3
8936Author: Damien Miller <djm@mindrot.org>
8937Date: Fri Oct 3 09:24:56 2014 +1000
8938
8939 - (djm) [sshd_config.5] typo; from Iain Morgan
8940
8941commit 703b98a26706f5083801d11059486d77491342ae
8942Author: Damien Miller <djm@mindrot.org>
8943Date: Wed Oct 1 09:43:07 2014 +1000
8944
8945 - (djm) [openbsd-compat/Makefile.in openbsd-compat/kludge-fd_set.c]
8946 [openbsd-compat/openbsd-compat.h] Kludge around bad glibc
8947 _FORTIFY_SOURCE check that doesn't grok heap-allocated fd_sets;
8948 ok dtucker@
8949
8950commit 0fa0ed061bbfedb0daa705e220748154a84c3413
8951Author: Damien Miller <djm@mindrot.org>
8952Date: Wed Sep 10 08:15:34 2014 +1000
8953
8954 - (djm) [sandbox-seccomp-filter.c] Allow mremap and exit for DietLibc;
8955 patch from Felix von Leitner; ok dtucker
8956
8957commit ad7d23d461c3b7e1dcb15db13aee5f4b94dc1a95
8958Author: Darren Tucker <dtucker@zip.com.au>
8959Date: Tue Sep 9 12:23:10 2014 +1000
8960
8961 20140908
8962 - (dtucker) [INSTALL] Update info about egd. ok djm@
8963
8964commit 2a8699f37cc2515e3bc60e0c677ba060f4d48191
8965Author: Damien Miller <djm@mindrot.org>
8966Date: Thu Sep 4 03:46:05 2014 +1000
8967
8968 - (djm) [openbsd-compat/arc4random.c] Zero seed after keying PRNG
8969
8970commit 44988defb1f5e3afe576d86000365e1f07a1b494
8971Author: Damien Miller <djm@mindrot.org>
8972Date: Wed Sep 3 05:35:32 2014 +1000
8973
8974 - (djm) [contrib/cygwin/ssh-host-config] Fix old code leading to
8975 permissions/ACLs; from Corinna Vinschen
8976
8977commit 23f269562b7537b2f6f5014e50a25e5dcc55a837
8978Author: Damien Miller <djm@mindrot.org>
8979Date: Wed Sep 3 05:33:25 2014 +1000
8980
8981 - (djm) [defines.h sshbuf.c] Move __predict_true|false to defines.h and
8982 conditionalise to avoid duplicate definition.
8983
8984commit 41c8de2c0031cf59e7cf0c06b5bcfbf4852c1fda
8985Author: Damien Miller <djm@mindrot.org>
8986Date: Sat Aug 30 16:23:06 2014 +1000
8987
8988 - (djm) [Makefile.in] Make TEST_SHELL a variable; "good idea" tim@
8989
8990commit d7c81e216a7bd9eed6e239c970d9261bb1651947
8991Author: Damien Miller <djm@mindrot.org>
8992Date: Sat Aug 30 04:18:28 2014 +1000
8993
8994 - (djm) [openbsd-compat/openssl-compat.h] add include guard
8995
8996commit 4687802dda57365b984b897fc3c8e2867ea09b22
8997Author: Damien Miller <djm@mindrot.org>
8998Date: Sat Aug 30 03:29:19 2014 +1000
8999
9000 - (djm) [misc.c] Missing newline between functions
9001
9002commit 51c77e29220dee87c53be2dc47092934acab26fe
9003Author: Damien Miller <djm@mindrot.org>
9004Date: Sat Aug 30 02:30:30 2014 +1000
9005
9006 - (djm) [openbsd-compat/openssl-compat.h] add
9007 OPENSSL_[RD]SA_MAX_MODULUS_BITS defines for OpenSSL that lacks them
9008
9009commit 3d673d103bad35afaec6e7ef73e5277216ce33a3
9010Author: Damien Miller <djm@mindrot.org>
9011Date: Wed Aug 27 06:32:01 2014 +1000
9012
9013 - (djm) [openbsd-compat/explicit_bzero.c] implement explicit_bzero()
9014 using memset_s() where possible; improve fallback to indirect bzero
9015 via a volatile pointer to give it more of a chance to avoid being
9016 optimised away.
9017
9018commit 146218ac11a1eb0dcade6f793d7acdef163b5ddc
9019Author: Damien Miller <djm@mindrot.org>
9020Date: Wed Aug 27 04:11:55 2014 +1000
9021
9022 - (djm) [monitor.c sshd.c] SIGXFSZ needs to be ignored in postauth
9023 monitor, not preauth; bz#2263
9024
9025commit 1b215c098b3b37e38aa4e4c91bb908eee41183b1
9026Author: Damien Miller <djm@mindrot.org>
9027Date: Wed Aug 27 04:04:40 2014 +1000
9028
9029 - (djm) [regress/unittests/sshbuf/test_sshbuf_getput_crypto.c]
9030 [regress/unittests/sshbuf/test_sshbuf_getput_fuzz.c]
9031 [regress/unittests/sshkey/common.c]
9032 [regress/unittests/sshkey/test_file.c]
9033 [regress/unittests/sshkey/test_fuzz.c]
9034 [regress/unittests/sshkey/test_sshkey.c] Don't include openssl/ec.h
9035 on !ECC OpenSSL systems
9036
9037commit ad013944af0a19e3f612089d0099bb397cf6502d
9038Author: Damien Miller <djm@mindrot.org>
9039Date: Tue Aug 26 09:27:28 2014 +1000
9040
9041 - (djm) [INSTALL] Recommend libcrypto be built -fPIC, mention LibreSSL,
9042 update OpenSSL version requirement.
9043
9044commit ed126de8ee04c66640a0ea2697c4aaf36801f100
9045Author: Damien Miller <djm@mindrot.org>
9046Date: Tue Aug 26 08:37:47 2014 +1000
9047
9048 - (djm) [bufec.c] Skip this file on !ECC OpenSSL
9049
9050commit 9c1dede005746864a4fdb36a7cdf6c51296ca909
9051Author: Damien Miller <djm@mindrot.org>
9052Date: Sun Aug 24 03:01:06 2014 +1000
9053
9054 - (djm) [sftp-server.c] Some systems (e.g. Irix) have prctl() but not
9055 PR_SET_DUMPABLE, so adjust ifdef; reported by Tom Christensen
9056
9057commit d244a5816fd1312a33404b436e4dd83594f1119e
9058Author: Damien Miller <djm@mindrot.org>
9059Date: Sat Aug 23 17:06:49 2014 +1000
9060
9061 - (djm) [configure.ac] We now require a working vsnprintf everywhere (not
9062 just for systems that lack asprintf); check for it always and extend
9063 test to catch more brokenness. Fixes builds on Solaris <= 9
9064
9065commit 4cec036362a358e398e6a2e6d19d8e5780558634
9066Author: Damien Miller <djm@mindrot.org>
9067Date: Sat Aug 23 03:11:09 2014 +1000
9068
9069 - (djm) [sshd.c] Ignore SIGXFSZ in preauth monitor child; can explode on
9070 lastlog writing on platforms with high UIDs; bz#2263
9071
9072commit 394a60f2598d28b670d934b93942a3370b779b39
9073Author: Damien Miller <djm@mindrot.org>
9074Date: Fri Aug 22 18:06:20 2014 +1000
9075
9076 - (djm) [configure.ac] double braces to appease autoconf
9077
9078commit 4d69aeabd6e60afcdc7cca177ca751708ab79a9d
9079Author: Damien Miller <djm@mindrot.org>
9080Date: Fri Aug 22 17:48:27 2014 +1000
9081
9082 - (djm) [openbsd-compat/bsd-snprintf.c] Fix compilation failure (prototype/
9083 definition mismatch) and warning for broken/missing snprintf case.
9084
9085commit 0c11f1ac369d2c0aeb0ab0458a7cd04c72fe5e9e
9086Author: Damien Miller <djm@mindrot.org>
9087Date: Fri Aug 22 17:36:56 2014 +1000
9088
9089 - (djm) [sshbuf-getput-crypto.c] Fix compilation when OpenSSL lacks ECC
9090
9091commit 6d62784b8973340b251fea6b04890f471adf28db
9092Author: Damien Miller <djm@mindrot.org>
9093Date: Fri Aug 22 17:36:19 2014 +1000
9094
9095 - (djm) [configure.ac] include leading zero characters in OpenSSL version
9096 number; fixes test for unsupported versions
9097
9098commit 4f1ff1ed782117f5d5204d4e91156ed5da07cbb7
9099Author: Damien Miller <djm@mindrot.org>
9100Date: Thu Aug 21 15:54:50 2014 +1000
9101
9102 - (djm) [regress/unittests/test_helper/test_helper.c] Fix for systems that
9103 don't set __progname. Diagnosed by Tom Christensen.
9104
9105commit 005a64da0f457410045ef0bfa93c863c2450447d
9106Author: Damien Miller <djm@mindrot.org>
9107Date: Thu Aug 21 10:48:41 2014 +1000
9108
9109 - (djm) [key.h] Fix ifdefs for no-ECC OpenSSL
9110
9111commit aa6598ebb3343c7380e918388e10e8ca5852b613
9112Author: Damien Miller <djm@mindrot.org>
9113Date: Thu Aug 21 10:47:54 2014 +1000
9114
9115 - (djm) [Makefile.in] fix reference to libtest_helper.a in sshkey test too.
9116
9117commit 54703e3cf63f0c80d4157e5ad7dbc2b363ee2c56
9118Author: Damien Miller <djm@mindrot.org>
9119Date: Wed Aug 20 11:10:51 2014 +1000
9120
9121 - (djm) [contrib/cygwin/README] Correct build instructions; from Corinna
9122
9123commit f0935698f0461f24d8d1f1107b476ee5fd4db1cb
9124Author: Damien Miller <djm@mindrot.org>
9125Date: Wed Aug 20 11:06:50 2014 +1000
9126
9127 - (djm) [sshkey.h] Fix compilation when OpenSSL lacks ECC
9128
9129commit c5089ecaec3b2c02f014f4e67518390702a4ba14
9130Author: Damien Miller <djm@mindrot.org>
9131Date: Wed Aug 20 11:06:20 2014 +1000
9132
9133 - (djm) [Makefile.in] refer to libtest_helper.a by explicit path rather than
9134 -L/-l; fixes linking problems on some platforms
9135
9136commit 2195847e503a382f83ee969b0a8bd3dfe0e55c18
9137Author: Damien Miller <djm@mindrot.org>
9138Date: Wed Aug 20 11:05:03 2014 +1000
9139
9140 - (djm) [configure.ac] Check OpenSSL version is supported at configure time;
9141 suggested by Kevin Brott
9142
9143commit a75aca1bbc989aa9f8b1b08489d37855f3d24d1a
9144Author: Damien Miller <djm@mindrot.org>
9145Date: Tue Aug 19 11:36:07 2014 +1000
9146
9147 - (djm) [INSTALL contrib/caldera/openssh.spec contrib/cygwin/README]
9148 [contrib/redhat/openssh.spec contrib/suse/openssh.spec] Remove mentions
9149 of TCP wrappers.
9150
9151commit 3f022b5a9477abceeb1bbeab04b055f3cc7ca8f6
9152Author: Damien Miller <djm@mindrot.org>
9153Date: Tue Aug 19 11:32:34 2014 +1000
9154
9155 - (djm) [ssh-dss.c] Include openssl/dsa.h for DSA_SIG
9156
9157commit 88137902632aceb923990e98cf5dc923bb3ef2f5
9158Author: Damien Miller <djm@mindrot.org>
9159Date: Tue Aug 19 11:28:11 2014 +1000
9160
9161 - (djm) [sshbuf.h] Fix compilation on systems without OPENSSL_HAS_ECC.
9162
9163commit 2f3d1e7fb2eabd3cfbfd8d0f7bdd2f9a1888690b
9164Author: Damien Miller <djm@mindrot.org>
9165Date: Tue Aug 19 11:14:36 2014 +1000
9166
9167 - (djm) [myproposal.h] Make curve25519 KEX dependent on
9168 HAVE_EVP_SHA256 instead of OPENSSL_HAS_ECC.
9169
9170commit d4e7d59d01a6c7f59e8c1f94a83c086e9a33d8aa
9171Author: Damien Miller <djm@mindrot.org>
9172Date: Tue Aug 19 11:14:17 2014 +1000
9173
9174 - (djm) [serverloop.c] Fix syntax error on Cygwin; from Corinna Vinschen
9175
9176commit 9eaeea2cf2b6af5f166cfa9ad3c7a90711a147a9
9177Author: Damien Miller <djm@mindrot.org>
9178Date: Sun Aug 10 11:35:05 2014 +1000
9179
9180 - (djm) [README contrib/caldera/openssh.spec]
9181 [contrib/redhat/openssh.spec contrib/suse/openssh.spec] Update versions
9182
9183commit f8988fbef0c9801d19fa2f8f4f041690412bec37
9184Author: Damien Miller <djm@mindrot.org>
9185Date: Fri Aug 1 13:31:52 2014 +1000
9186
9187 - (djm) [regress/multiplex.sh] Use -d (detach stdin) flag to disassociate
9188 nc from stdin, it's more portable
9189
9190commit 5b3879fd4b7a4e3d43bab8f40addda39bc1169d0
9191Author: Damien Miller <djm@mindrot.org>
9192Date: Fri Aug 1 12:28:31 2014 +1000
9193
9194 - (djm) [regress/multiplex.sh] Instruct nc not to quit as soon as stdin
9195 is closed; avoid regress failures when stdin is /dev/null
9196
9197commit a9c46746d266f8a1b092a72b2150682d1af8ebfc
9198Author: Damien Miller <djm@mindrot.org>
9199Date: Fri Aug 1 12:26:49 2014 +1000
9200
9201 - (djm) [regress/multiplex.sh] Skip test for non-OpenBSD netcat. We need
9202 a better solution, but this will have to do for now.
diff --git a/INSTALL b/INSTALL
index 582eef8ef..6bc80b68f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,10 +1,15 @@
11. Prerequisites
2---------------- 1----------------
3 2
3A C compiler. Any C89 or better compiler should work. Where supported,
4configure will attempt to enable the compiler's run-time integrity checking
5options. Some notes about specific compilers:
6 - clang: -ftrapv and -sanitize=integer require the compiler-rt runtime
7 (CC=clang LDFLAGS=--rtlib=compiler-rt ./configure)
8
4You will need working installations of Zlib and libcrypto (LibreSSL / 9You will need working installations of Zlib and libcrypto (LibreSSL /
5OpenSSL) 10OpenSSL)
6 11
7Zlib 1.1.4 or 1.2.1.2 or greater (ealier 1.2.x versions have problems): 12Zlib 1.1.4 or 1.2.1.2 or greater (earlier 1.2.x versions have problems):
8http://www.gzip.org/zlib/ 13http://www.gzip.org/zlib/
9 14
10libcrypto (LibreSSL or OpenSSL >= 0.9.8f < 1.1.0) 15libcrypto (LibreSSL or OpenSSL >= 0.9.8f < 1.1.0)
@@ -85,7 +90,7 @@ http://nlnetlabs.nl/projects/ldns/
85Autoconf: 90Autoconf:
86 91
87If you modify configure.ac or configure doesn't exist (eg if you checked 92If you modify configure.ac or configure doesn't exist (eg if you checked
88the code out of CVS yourself) then you will need autoconf-2.68 to rebuild 93the code out of CVS yourself) then you will need autoconf-2.69 to rebuild
89the automatically generated files by running "autoreconf". Earlier 94the automatically generated files by running "autoreconf". Earlier
90versions may also work but this is not guaranteed. 95versions may also work but this is not guaranteed.
91 96
@@ -224,9 +229,13 @@ review it to ensure that it matches your security requirements.
224To generate a host key, run "make host-key". Alternately you can do so 229To generate a host key, run "make host-key". Alternately you can do so
225manually using the following commands: 230manually using the following commands:
226 231
227 ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" 232 ssh-keygen -t [type] -f /etc/ssh/ssh_host_key -N ""
228 ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" 233
229 ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" 234for each of the types you wish to generate (rsa, dsa or ecdsaa) or
235
236 ssh-keygen -A
237
238to generate keys for all supported types.
230 239
231Replacing /etc/ssh with the correct path to the configuration directory. 240Replacing /etc/ssh with the correct path to the configuration directory.
232(${prefix}/etc or whatever you specified with --sysconfdir during 241(${prefix}/etc or whatever you specified with --sysconfdir during
@@ -257,7 +266,4 @@ summary data may be published.
257 266
258If you experience problems compiling, installing or running OpenSSH. 267If you experience problems compiling, installing or running OpenSSH.
259Please refer to the "reporting bugs" section of the webpage at 268Please refer to the "reporting bugs" section of the webpage at
260http://www.openssh.com/ 269https://www.openssh.com/
261
262
263$Id: INSTALL,v 1.91 2014/09/09 02:23:11 dtucker Exp $
diff --git a/Makefile.in b/Makefile.in
index 21948dd7d..a6eb81ec2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -98,14 +98,14 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
98SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \ 98SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
99 sshconnect.o sshconnect1.o sshconnect2.o mux.o 99 sshconnect.o sshconnect1.o sshconnect2.o mux.o
100 100
101SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \ 101SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
102 audit.o audit-bsm.o audit-linux.o platform.o \ 102 audit.o audit-bsm.o audit-linux.o platform.o \
103 sshpty.o sshlogin.o servconf.o serverloop.o \ 103 sshpty.o sshlogin.o servconf.o serverloop.o \
104 auth.o auth1.o auth2.o auth-options.o session.o \ 104 auth.o auth2.o auth-options.o session.o \
105 auth-chall.o auth2-chall.o groupaccess.o \ 105 auth2-chall.o groupaccess.o \
106 auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ 106 auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
107 auth2-none.o auth2-passwd.o auth2-pubkey.o \ 107 auth2-none.o auth2-passwd.o auth2-pubkey.o \
108 monitor_mm.o monitor.o monitor_wrap.o auth-krb5.o \ 108 monitor.o monitor_wrap.o auth-krb5.o \
109 auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o \ 109 auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o \
110 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ 110 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \
111 sftp-server.o sftp-common.o \ 111 sftp-server.o sftp-common.o \
@@ -241,6 +241,10 @@ clean: regressclean
241 rm -f regress/unittests/hostkeys/test_hostkeys 241 rm -f regress/unittests/hostkeys/test_hostkeys
242 rm -f regress/unittests/kex/*.o 242 rm -f regress/unittests/kex/*.o
243 rm -f regress/unittests/kex/test_kex 243 rm -f regress/unittests/kex/test_kex
244 rm -f regress/unittests/match/*.o
245 rm -f regress/unittests/match/test_match
246 rm -f regress/unittests/utf8/*.o
247 rm -f regress/unittests/utf8/test_utf8
244 rm -f regress/misc/kexfuzz/*.o 248 rm -f regress/misc/kexfuzz/*.o
245 rm -f regress/misc/kexfuzz/kexfuzz 249 rm -f regress/misc/kexfuzz/kexfuzz
246 (cd openbsd-compat && $(MAKE) clean) 250 (cd openbsd-compat && $(MAKE) clean)
@@ -263,6 +267,10 @@ distclean: regressclean
263 rm -f regress/unittests/hostkeys/test_hostkeys 267 rm -f regress/unittests/hostkeys/test_hostkeys
264 rm -f regress/unittests/kex/*.o 268 rm -f regress/unittests/kex/*.o
265 rm -f regress/unittests/kex/test_kex 269 rm -f regress/unittests/kex/test_kex
270 rm -f regress/unittests/match/*.o
271 rm -f regress/unittests/match/test_match
272 rm -f regress/unittests/utf8/*.o
273 rm -f regress/unittests/utf8/test_utf8
266 rm -f regress/unittests/misc/kexfuzz 274 rm -f regress/unittests/misc/kexfuzz
267 (cd openbsd-compat && $(MAKE) distclean) 275 (cd openbsd-compat && $(MAKE) distclean)
268 if test -d pkg ; then \ 276 if test -d pkg ; then \
@@ -424,6 +432,10 @@ regress-prep:
424 mkdir -p `pwd`/regress/unittests/hostkeys 432 mkdir -p `pwd`/regress/unittests/hostkeys
425 [ -d `pwd`/regress/unittests/kex ] || \ 433 [ -d `pwd`/regress/unittests/kex ] || \
426 mkdir -p `pwd`/regress/unittests/kex 434 mkdir -p `pwd`/regress/unittests/kex
435 [ -d `pwd`/regress/unittests/match ] || \
436 mkdir -p `pwd`/regress/unittests/match
437 [ -d `pwd`/regress/unittests/utf8 ] || \
438 mkdir -p `pwd`/regress/unittests/utf8
427 [ -d `pwd`/regress/misc/kexfuzz ] || \ 439 [ -d `pwd`/regress/misc/kexfuzz ] || \
428 mkdir -p `pwd`/regress/misc/kexfuzz 440 mkdir -p `pwd`/regress/misc/kexfuzz
429 [ -f `pwd`/regress/Makefile ] || \ 441 [ -f `pwd`/regress/Makefile ] || \
@@ -514,6 +526,26 @@ regress/unittests/hostkeys/test_hostkeys$(EXEEXT): \
514 regress/unittests/test_helper/libtest_helper.a \ 526 regress/unittests/test_helper/libtest_helper.a \
515 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) 527 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
516 528
529UNITTESTS_TEST_MATCH_OBJS=\
530 regress/unittests/match/tests.o
531
532regress/unittests/match/test_match$(EXEEXT): \
533 ${UNITTESTS_TEST_MATCH_OBJS} \
534 regress/unittests/test_helper/libtest_helper.a libssh.a
535 $(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_MATCH_OBJS) \
536 regress/unittests/test_helper/libtest_helper.a \
537 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
538
539UNITTESTS_TEST_UTF8_OBJS=\
540 regress/unittests/utf8/tests.o
541
542regress/unittests/utf8/test_utf8$(EXEEXT): \
543 ${UNITTESTS_TEST_UTF8_OBJS} \
544 regress/unittests/test_helper/libtest_helper.a libssh.a
545 $(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_UTF8_OBJS) \
546 regress/unittests/test_helper/libtest_helper.a \
547 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
548
517MISC_KEX_FUZZ_OBJS=\ 549MISC_KEX_FUZZ_OBJS=\
518 regress/misc/kexfuzz/kexfuzz.o 550 regress/misc/kexfuzz/kexfuzz.o
519 551
@@ -530,6 +562,8 @@ regress-binaries: regress/modpipe$(EXEEXT) \
530 regress/unittests/bitmap/test_bitmap$(EXEEXT) \ 562 regress/unittests/bitmap/test_bitmap$(EXEEXT) \
531 regress/unittests/hostkeys/test_hostkeys$(EXEEXT) \ 563 regress/unittests/hostkeys/test_hostkeys$(EXEEXT) \
532 regress/unittests/kex/test_kex$(EXEEXT) \ 564 regress/unittests/kex/test_kex$(EXEEXT) \
565 regress/unittests/match/test_match$(EXEEXT) \
566 regress/unittests/utf8/test_utf8$(EXEEXT) \
533 regress/misc/kexfuzz/kexfuzz$(EXEEXT) 567 regress/misc/kexfuzz/kexfuzz$(EXEEXT)
534 568
535tests interop-tests t-exec: regress-prep regress-binaries $(TARGETS) 569tests interop-tests t-exec: regress-prep regress-binaries $(TARGETS)
@@ -548,6 +582,7 @@ tests interop-tests t-exec: regress-prep regress-binaries $(TARGETS)
548 TEST_SSH_PUTTYGEN="puttygen"; \ 582 TEST_SSH_PUTTYGEN="puttygen"; \
549 TEST_SSH_CONCH="conch"; \ 583 TEST_SSH_CONCH="conch"; \
550 TEST_SSH_IPV6="@TEST_SSH_IPV6@" ; \ 584 TEST_SSH_IPV6="@TEST_SSH_IPV6@" ; \
585 TEST_SSH_UTF8="@TEST_SSH_UTF8@" ; \
551 TEST_SSH_ECC="@TEST_SSH_ECC@" ; \ 586 TEST_SSH_ECC="@TEST_SSH_ECC@" ; \
552 cd $(srcdir)/regress || exit $$?; \ 587 cd $(srcdir)/regress || exit $$?; \
553 $(MAKE) \ 588 $(MAKE) \
@@ -572,6 +607,7 @@ tests interop-tests t-exec: regress-prep regress-binaries $(TARGETS)
572 TEST_SSH_PUTTYGEN="$${TEST_SSH_PUTTYGEN}" \ 607 TEST_SSH_PUTTYGEN="$${TEST_SSH_PUTTYGEN}" \
573 TEST_SSH_CONCH="$${TEST_SSH_CONCH}" \ 608 TEST_SSH_CONCH="$${TEST_SSH_CONCH}" \
574 TEST_SSH_IPV6="$${TEST_SSH_IPV6}" \ 609 TEST_SSH_IPV6="$${TEST_SSH_IPV6}" \
610 TEST_SSH_UTF8="$${TEST_SSH_UTF8}" \
575 TEST_SSH_ECC="$${TEST_SSH_ECC}" \ 611 TEST_SSH_ECC="$${TEST_SSH_ECC}" \
576 TEST_SHELL="${TEST_SHELL}" \ 612 TEST_SHELL="${TEST_SHELL}" \
577 EXEEXT="$(EXEEXT)" \ 613 EXEEXT="$(EXEEXT)" \
diff --git a/PROTOCOL b/PROTOCOL
index c6f99a31a..192da55b2 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -4,7 +4,7 @@ protocol.
4Note that OpenSSH's sftp and sftp-server implement revision 3 of the SSH 4Note that OpenSSH's sftp and sftp-server implement revision 3 of the SSH
5filexfer protocol described in: 5filexfer protocol described in:
6 6
7http://www.openssh.com/txt/draft-ietf-secsh-filexfer-02.txt 7https://www.openssh.com/txt/draft-ietf-secsh-filexfer-02.txt
8 8
9Newer versions of the draft will not be supported, though some features 9Newer versions of the draft will not be supported, though some features
10are individually implemented as extensions described below. 10are individually implemented as extensions described below.
@@ -20,7 +20,7 @@ This is a new transport-layer MAC method using the UMAC algorithm
20(rfc4418). This method is identical to the "umac-64" method documented 20(rfc4418). This method is identical to the "umac-64" method documented
21in: 21in:
22 22
23http://www.openssh.com/txt/draft-miller-secsh-umac-01.txt 23https://www.openssh.com/txt/draft-miller-secsh-umac-01.txt
24 24
251.2. transport: Protocol 2 compression algorithm "zlib@openssh.com" 251.2. transport: Protocol 2 compression algorithm "zlib@openssh.com"
26 26
@@ -31,7 +31,7 @@ avoids exposing compression code to attacks from unauthenticated users.
31 31
32The method is documented in: 32The method is documented in:
33 33
34http://www.openssh.com/txt/draft-miller-secsh-compression-delayed-00.txt 34https://www.openssh.com/txt/draft-miller-secsh-compression-delayed-00.txt
35 35
361.3. transport: New public key algorithms "ssh-rsa-cert-v00@openssh.com", 361.3. transport: New public key algorithms "ssh-rsa-cert-v00@openssh.com",
37 "ssh-dsa-cert-v00@openssh.com", 37 "ssh-dsa-cert-v00@openssh.com",
diff --git a/README b/README
index 4b6c3423f..60594eeb9 100644
--- a/README
+++ b/README
@@ -1,10 +1,10 @@
1See http://www.openssh.com/txt/release-7.3p1 for the release notes. 1See https://www.openssh.com/releasenotes.html#7.4p1 for the release notes.
2 2
3Please read http://www.openssh.com/report.html for bug reporting 3Please read https://www.openssh.com/report.html for bug reporting
4instructions and note that we do not use Github for bug reporting or 4instructions and note that we do not use Github for bug reporting or
5patch/pull-request management. 5patch/pull-request management.
6 6
7- A Japanese translation of this document and of the OpenSSH FAQ is 7- A Japanese translation of this document and of the release notes is
8- available at http://www.unixuser.org/~haruyama/security/openssh/index.html 8- available at http://www.unixuser.org/~haruyama/security/openssh/index.html
9- Thanks to HARUYAMA Seigo <haruyama@unixuser.org> 9- Thanks to HARUYAMA Seigo <haruyama@unixuser.org>
10 10
@@ -16,7 +16,7 @@ implementation with all patent-encumbered algorithms removed (to
16external libraries), all known security bugs fixed, new features 16external libraries), all known security bugs fixed, new features
17reintroduced and many other clean-ups. OpenSSH has been created by 17reintroduced and many other clean-ups. OpenSSH has been created by
18Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, 18Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt,
19and Dug Song. It has a homepage at http://www.openssh.com/ 19and Dug Song. It has a homepage at https://www.openssh.com/
20 20
21This port consists of the re-introduction of autoconf support, PAM 21This port consists of the re-introduction of autoconf support, PAM
22support, EGD[1]/PRNGD[2] support and replacements for OpenBSD library 22support, EGD[1]/PRNGD[2] support and replacements for OpenBSD library
@@ -33,17 +33,15 @@ all logins, not just when using password authentication.
33OpenSSH depends on Zlib[3], OpenSSL[4] and optionally PAM[5]. 33OpenSSH depends on Zlib[3], OpenSSL[4] and optionally PAM[5].
34 34
35There is now several mailing lists for this port of OpenSSH. Please 35There is now several mailing lists for this port of OpenSSH. Please
36refer to http://www.openssh.com/list.html for details on how to join. 36refer to https://www.openssh.com/list.html for details on how to join.
37 37
38Please send bug reports and patches to the mailing list 38Please send bug reports and patches to the mailing list
39openssh-unix-dev@mindrot.org. The list is open to posting by 39openssh-unix-dev@mindrot.org. The list is open to posting by unsubscribed
40unsubscribed users.Code contribution are welcomed, but please follow the 40users. Code contribution are welcomed, but please follow the OpenBSD
41OpenBSD style guidelines[6]. 41style guidelines[6].
42 42
43Please refer to the INSTALL document for information on how to install 43Please refer to the INSTALL document for information on how to install
44OpenSSH on your system. There are a number of differences between this 44OpenSSH on your system.
45port of OpenSSH and F-Secure SSH 1.x, please refer to the OpenSSH FAQ[7]
46for details and general tips.
47 45
48Damien Miller <djm@mindrot.org> 46Damien Miller <djm@mindrot.org>
49 47
@@ -55,15 +53,12 @@ implementation released by Tatu Ylonen.
55 53
56References - 54References -
57 55
58[0] http://www.openssh.com/faq.html 56[0] https://www.openssh.com/
59[1] http://www.lothar.com/tech/crypto/ 57[1] http://www.lothar.com/tech/crypto/
60[2] http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html 58[2] http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html
61[3] http://www.gzip.org/zlib/ 59[3] http://www.gzip.org/zlib/
62[4] http://www.openssl.org/ 60[4] http://www.openssl.org/
63[5] http://www.openpam.org 61[5] http://www.openpam.org
64 http://www.kernel.org/pub/linux/libs/pam/ 62 http://www.kernel.org/pub/linux/libs/pam/
65 (PAM also is standard on Solaris and HP-UX 11) 63 (PAM also is standard on Solaris and HP-UX 11)
66[6] http://www.openbsd.org/cgi-bin/man.cgi?query=style&sektion=9 64[6] http://man.openbsd.org/style.9
67[7] http://www.openssh.com/faq.html
68
69$Id: README,v 1.87 2014/08/10 01:35:06 djm Exp $
diff --git a/README.platform b/README.platform
index 8d75c16c1..c7be95fb6 100644
--- a/README.platform
+++ b/README.platform
@@ -94,6 +94,3 @@ added to sshd's session stack which will prevent users from starting shell
94sessions. Alternatively, pam_nologin can be added to either the auth or 94sessions. Alternatively, pam_nologin can be added to either the auth or
95account stacks which will prevent authentication entirely, but will still 95account stacks which will prevent authentication entirely, but will still
96return the output from pam_nologin to the client. 96return the output from pam_nologin to the client.
97
98
99$Id: README.platform,v 1.10 2009/08/28 23:14:48 dtucker Exp $
diff --git a/README.privsep b/README.privsep
index f565e72da..2120544c7 100644
--- a/README.privsep
+++ b/README.privsep
@@ -8,10 +8,6 @@ More information is available at:
8Privilege separation is now enabled by default; see the 8Privilege separation is now enabled by default; see the
9UsePrivilegeSeparation option in sshd_config(5). 9UsePrivilegeSeparation option in sshd_config(5).
10 10
11On systems which lack mmap or anonymous (MAP_ANON) memory mapping,
12compression must be disabled in order for privilege separation to
13function.
14
15When privsep is enabled, during the pre-authentication phase sshd will 11When privsep is enabled, during the pre-authentication phase sshd will
16chroot(2) to "/var/empty" and change its privileges to the "sshd" user 12chroot(2) to "/var/empty" and change its privileges to the "sshd" user
17and its primary group. sshd is a pseudo-account that should not be 13and its primary group. sshd is a pseudo-account that should not be
@@ -35,9 +31,6 @@ privsep user and chroot directory:
35 --with-privsep-path=xxx Path for privilege separation chroot 31 --with-privsep-path=xxx Path for privilege separation chroot
36 --with-privsep-user=user Specify non-privileged user for privilege separation 32 --with-privsep-user=user Specify non-privileged user for privilege separation
37 33
38Privsep requires operating system support for file descriptor passing.
39Compression will be disabled on systems without a working mmap MAP_ANON.
40
41PAM-enabled OpenSSH is known to function with privsep on AIX, FreeBSD, 34PAM-enabled OpenSSH is known to function with privsep on AIX, FreeBSD,
42HP-UX (including Trusted Mode), Linux, NetBSD and Solaris. 35HP-UX (including Trusted Mode), Linux, NetBSD and Solaris.
43 36
@@ -59,5 +52,3 @@ Given the following process listing (from HP-UX):
59process 1005 is the sshd process listening for new connections. 52process 1005 is the sshd process listening for new connections.
60process 6917 is the privileged monitor process, 6919 is the user owned 53process 6917 is the privileged monitor process, 6919 is the user owned
61sshd process and 6921 is the shell process. 54sshd process and 6921 is the shell process.
62
63$Id: README.privsep,v 1.16 2005/06/04 23:21:41 djm Exp $
diff --git a/TODO b/TODO
index e8aaa4b96..f22c7e224 100644
--- a/TODO
+++ b/TODO
@@ -69,10 +69,6 @@ Packaging:
69 (gilbert.r.loomis@saic.com) 69 (gilbert.r.loomis@saic.com)
70 70
71PrivSep Issues: 71PrivSep Issues:
72- mmap() issues.
73 + /dev/zero solution (Solaris)
74 + No/broken MAP_ANON (Irix)
75 + broken /dev/zero parse (Linux)
76- PAM 72- PAM
77 + See above PAM notes 73 + See above PAM notes
78- AIX 74- AIX
@@ -82,5 +78,3 @@ PrivSep Issues:
82 + SIA is broken 78 + SIA is broken
83- Cygwin 79- Cygwin
84 + Privsep for Pre-auth only (no fd passing) 80 + Privsep for Pre-auth only (no fd passing)
85
86$Id: TODO,v 1.58 2004/12/06 11:40:11 dtucker Exp $
diff --git a/aclocal.m4 b/aclocal.m4
index 1640683e1..ac6b6684a 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,5 +1,3 @@
1dnl $Id: aclocal.m4,v 1.13 2014/01/22 10:30:12 djm Exp $
2dnl
3dnl OpenSSH-specific autoconf macros 1dnl OpenSSH-specific autoconf macros
4dnl 2dnl
5 3
@@ -59,7 +57,8 @@ int main(int argc, char **argv) {
59 float l = i * 2.1; 57 float l = i * 2.1;
60 double m = l / 0.5; 58 double m = l / 0.5;
61 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 59 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
62 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 60 long long int p = n * o;
61 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
63 exit(0); 62 exit(0);
64} 63}
65 ]])], 64 ]])],
@@ -96,7 +95,8 @@ int main(int argc, char **argv) {
96 float l = i * 2.1; 95 float l = i * 2.1;
97 double m = l / 0.5; 96 double m = l / 0.5;
98 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 97 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
99 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 98 long long p = n * o;
99 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
100 exit(0); 100 exit(0);
101} 101}
102 ]])], 102 ]])],
diff --git a/addrmatch.c b/addrmatch.c
index 70b050e05..8658e105a 100644
--- a/addrmatch.c
+++ b/addrmatch.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: addrmatch.c,v 1.10 2015/07/08 19:04:21 markus Exp $ */ 1/* $OpenBSD: addrmatch.c,v 1.13 2016/09/21 16:55:42 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org> 4 * Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org>
@@ -398,8 +398,8 @@ addr_match_list(const char *addr, const char *_list)
398 /* Prefer CIDR address matching */ 398 /* Prefer CIDR address matching */
399 r = addr_pton_cidr(cp, &match_addr, &masklen); 399 r = addr_pton_cidr(cp, &match_addr, &masklen);
400 if (r == -2) { 400 if (r == -2) {
401 error("Inconsistent mask length for " 401 debug2("%s: inconsistent mask length for "
402 "network \"%.100s\"", cp); 402 "match network \"%.100s\"", __func__, cp);
403 ret = -2; 403 ret = -2;
404 break; 404 break;
405 } else if (r == 0) { 405 } else if (r == 0) {
diff --git a/atomicio.c b/atomicio.c
index b1ec234f5..f854a06f5 100644
--- a/atomicio.c
+++ b/atomicio.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: atomicio.c,v 1.27 2015/01/16 06:40:12 deraadt Exp $ */ 1/* $OpenBSD: atomicio.c,v 1.28 2016/07/27 23:18:12 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2006 Damien Miller. All rights reserved. 3 * Copyright (c) 2006 Damien Miller. All rights reserved.
4 * Copyright (c) 2005 Anil Madhavapeddy. All rights reserved. 4 * Copyright (c) 2005 Anil Madhavapeddy. All rights reserved.
@@ -107,12 +107,12 @@ atomiciov6(ssize_t (*f) (int, const struct iovec *, int), int fd,
107 struct iovec iov_array[IOV_MAX], *iov = iov_array; 107 struct iovec iov_array[IOV_MAX], *iov = iov_array;
108 struct pollfd pfd; 108 struct pollfd pfd;
109 109
110 if (iovcnt > IOV_MAX) { 110 if (iovcnt < 0 || iovcnt > IOV_MAX) {
111 errno = EINVAL; 111 errno = EINVAL;
112 return 0; 112 return 0;
113 } 113 }
114 /* Make a copy of the iov array because we may modify it below */ 114 /* Make a copy of the iov array because we may modify it below */
115 memcpy(iov, _iov, iovcnt * sizeof(*_iov)); 115 memcpy(iov, _iov, (size_t)iovcnt * sizeof(*_iov));
116 116
117#ifndef BROKEN_READV_COMPARISON 117#ifndef BROKEN_READV_COMPARISON
118 pfd.fd = fd; 118 pfd.fd = fd;
diff --git a/audit-bsm.c b/audit-bsm.c
index 613559140..f8e0bea89 100644
--- a/audit-bsm.c
+++ b/audit-bsm.c
@@ -1,5 +1,3 @@
1/* $Id: audit-bsm.c,v 1.8 2012/02/23 23:40:43 dtucker Exp $ */
2
3/* 1/*
4 * TODO 2 * TODO
5 * 3 *
diff --git a/audit-linux.c b/audit-linux.c
index d3524f7e1..136ed76bb 100644
--- a/audit-linux.c
+++ b/audit-linux.c
@@ -1,5 +1,3 @@
1/* $Id: audit-linux.c,v 1.1 2011/01/17 10:15:30 dtucker Exp $ */
2
3/* 1/*
4 * Copyright 2010 Red Hat, Inc. All rights reserved. 2 * Copyright 2010 Red Hat, Inc. All rights reserved.
5 * Use is subject to license terms. 3 * Use is subject to license terms.
diff --git a/audit.c b/audit.c
index ced57fa64..7645c1439 100644
--- a/audit.c
+++ b/audit.c
@@ -1,5 +1,3 @@
1/* $Id: audit.c,v 1.6 2011/01/17 10:15:30 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2004, 2005 Darren Tucker. All rights reserved. 2 * Copyright (c) 2004, 2005 Darren Tucker. All rights reserved.
5 * 3 *
diff --git a/audit.h b/audit.h
index 92ede5bc4..0b593666d 100644
--- a/audit.h
+++ b/audit.h
@@ -1,5 +1,3 @@
1/* $Id: audit.h,v 1.4 2011/01/17 10:15:30 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2004, 2005 Darren Tucker. All rights reserved. 2 * Copyright (c) 2004, 2005 Darren Tucker. All rights reserved.
5 * 3 *
diff --git a/auth-chall.c b/auth-chall.c
deleted file mode 100644
index 60c9f14ca..000000000
--- a/auth-chall.c
+++ /dev/null
@@ -1,125 +0,0 @@
1/* $OpenBSD: auth-chall.c,v 1.14 2014/06/24 01:13:21 djm Exp $ */
2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "includes.h"
27
28#include <sys/types.h>
29#include <stdarg.h>
30#include <stdlib.h>
31#include <stdio.h>
32
33#include "xmalloc.h"
34#include "key.h"
35#include "hostfile.h"
36#include "auth.h"
37#include "log.h"
38#include "misc.h"
39#include "servconf.h"
40
41/* limited protocol v1 interface to kbd-interactive authentication */
42
43extern KbdintDevice *devices[];
44static KbdintDevice *device;
45extern ServerOptions options;
46
47char *
48get_challenge(Authctxt *authctxt)
49{
50 char *challenge, *name, *info, **prompts;
51 u_int i, numprompts;
52 u_int *echo_on;
53
54#ifdef USE_PAM
55 if (!options.use_pam)
56 remove_kbdint_device("pam");
57#endif
58
59 device = devices[0]; /* we always use the 1st device for protocol 1 */
60 if (device == NULL)
61 return NULL;
62 if ((authctxt->kbdintctxt = device->init_ctx(authctxt)) == NULL)
63 return NULL;
64 if (device->query(authctxt->kbdintctxt, &name, &info,
65 &numprompts, &prompts, &echo_on)) {
66 device->free_ctx(authctxt->kbdintctxt);
67 authctxt->kbdintctxt = NULL;
68 return NULL;
69 }
70 if (numprompts < 1)
71 fatal("get_challenge: numprompts < 1");
72 challenge = xstrdup(prompts[0]);
73 for (i = 0; i < numprompts; i++)
74 free(prompts[i]);
75 free(prompts);
76 free(name);
77 free(echo_on);
78 free(info);
79
80 return (challenge);
81}
82int
83verify_response(Authctxt *authctxt, const char *response)
84{
85 char *resp[1], *name, *info, **prompts;
86 u_int i, numprompts, *echo_on;
87 int authenticated = 0;
88
89 if (device == NULL)
90 return 0;
91 if (authctxt->kbdintctxt == NULL)
92 return 0;
93 resp[0] = (char *)response;
94 switch (device->respond(authctxt->kbdintctxt, 1, resp)) {
95 case 0: /* Success */
96 authenticated = 1;
97 break;
98 case 1: /* Postponed - retry with empty query for PAM */
99 if ((device->query(authctxt->kbdintctxt, &name, &info,
100 &numprompts, &prompts, &echo_on)) != 0)
101 break;
102 if (numprompts == 0 &&
103 device->respond(authctxt->kbdintctxt, 0, resp) == 0)
104 authenticated = 1;
105
106 for (i = 0; i < numprompts; i++)
107 free(prompts[i]);
108 free(prompts);
109 free(name);
110 free(echo_on);
111 free(info);
112 break;
113 }
114 device->free_ctx(authctxt->kbdintctxt);
115 authctxt->kbdintctxt = NULL;
116 return authenticated;
117}
118void
119abandon_challenge_response(Authctxt *authctxt)
120{
121 if (authctxt->kbdintctxt != NULL) {
122 device->free_ctx(authctxt->kbdintctxt);
123 authctxt->kbdintctxt = NULL;
124 }
125}
diff --git a/auth-options.c b/auth-options.c
index a9d9a81cb..7eb87b352 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.c,v 1.71 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: auth-options.c,v 1.72 2016/11/30 02:57:40 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -618,7 +618,7 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw,
618 * options so this must be called after auth_parse_options(). 618 * options so this must be called after auth_parse_options().
619 */ 619 */
620int 620int
621auth_cert_options(struct sshkey *k, struct passwd *pw) 621auth_cert_options(struct sshkey *k, struct passwd *pw, const char **reason)
622{ 622{
623 int cert_no_port_forwarding_flag = 1; 623 int cert_no_port_forwarding_flag = 1;
624 int cert_no_agent_forwarding_flag = 1; 624 int cert_no_agent_forwarding_flag = 1;
@@ -628,6 +628,8 @@ auth_cert_options(struct sshkey *k, struct passwd *pw)
628 char *cert_forced_command = NULL; 628 char *cert_forced_command = NULL;
629 int cert_source_address_done = 0; 629 int cert_source_address_done = 0;
630 630
631 *reason = "invalid certificate options";
632
631 /* Separate options and extensions for v01 certs */ 633 /* Separate options and extensions for v01 certs */
632 if (parse_option_list(k->cert->critical, pw, 634 if (parse_option_list(k->cert->critical, pw,
633 OPTIONS_CRITICAL, 1, NULL, NULL, NULL, NULL, NULL, 635 OPTIONS_CRITICAL, 1, NULL, NULL, NULL, NULL, NULL,
@@ -649,11 +651,24 @@ auth_cert_options(struct sshkey *k, struct passwd *pw)
649 no_x11_forwarding_flag |= cert_no_x11_forwarding_flag; 651 no_x11_forwarding_flag |= cert_no_x11_forwarding_flag;
650 no_pty_flag |= cert_no_pty_flag; 652 no_pty_flag |= cert_no_pty_flag;
651 no_user_rc |= cert_no_user_rc; 653 no_user_rc |= cert_no_user_rc;
652 /* CA-specified forced command supersedes key option */ 654 /*
653 if (cert_forced_command != NULL) { 655 * Only permit both CA and key option forced-command if they match.
654 free(forced_command); 656 * Otherwise refuse the certificate.
657 */
658 if (cert_forced_command != NULL && forced_command != NULL) {
659 if (strcmp(forced_command, cert_forced_command) == 0) {
660 free(forced_command);
661 forced_command = cert_forced_command;
662 } else {
663 *reason = "certificate and key options forced command "
664 "do not match";
665 free(cert_forced_command);
666 return -1;
667 }
668 } else if (cert_forced_command != NULL)
655 forced_command = cert_forced_command; 669 forced_command = cert_forced_command;
656 } 670 /* success */
671 *reason = NULL;
657 return 0; 672 return 0;
658} 673}
659 674
diff --git a/auth-options.h b/auth-options.h
index 1653855ee..823552761 100644
--- a/auth-options.h
+++ b/auth-options.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.h,v 1.21 2015/01/14 10:30:34 markus Exp $ */ 1/* $OpenBSD: auth-options.h,v 1.22 2016/11/30 02:57:40 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -36,6 +36,6 @@ extern char *authorized_principals;
36void auth_start_parse_options(void); 36void auth_start_parse_options(void);
37int auth_parse_options(struct passwd *, char *, char *, u_long); 37int auth_parse_options(struct passwd *, char *, char *, u_long);
38void auth_clear_options(void); 38void auth_clear_options(void);
39int auth_cert_options(struct sshkey *, struct passwd *); 39int auth_cert_options(struct sshkey *, struct passwd *, const char **);
40 40
41#endif 41#endif
diff --git a/auth-pam.c b/auth-pam.c
index 348fe370a..7d8b2926b 100644
--- a/auth-pam.c
+++ b/auth-pam.c
@@ -66,6 +66,11 @@
66#include <pam/pam_appl.h> 66#include <pam/pam_appl.h>
67#endif 67#endif
68 68
69#if !defined(SSHD_PAM_SERVICE)
70extern char *__progname;
71# define SSHD_PAM_SERVICE __progname
72#endif
73
69/* OpenGroup RFC86.0 and XSSO specify no "const" on arguments */ 74/* OpenGroup RFC86.0 and XSSO specify no "const" on arguments */
70#ifdef PAM_SUN_CODEBASE 75#ifdef PAM_SUN_CODEBASE
71# define sshpam_const /* Solaris, HP-UX, SunOS */ 76# define sshpam_const /* Solaris, HP-UX, SunOS */
@@ -615,7 +620,6 @@ sshpam_cleanup(void)
615static int 620static int
616sshpam_init(Authctxt *authctxt) 621sshpam_init(Authctxt *authctxt)
617{ 622{
618 extern char *__progname;
619 const char *pam_rhost, *pam_user, *user = authctxt->user; 623 const char *pam_rhost, *pam_user, *user = authctxt->user;
620 const char **ptr_pam_user = &pam_user; 624 const char **ptr_pam_user = &pam_user;
621 struct ssh *ssh = active_state; /* XXX */ 625 struct ssh *ssh = active_state; /* XXX */
@@ -947,18 +951,6 @@ do_pam_account(void)
947} 951}
948 952
949void 953void
950do_pam_set_tty(const char *tty)
951{
952 if (tty != NULL) {
953 debug("PAM: setting PAM_TTY to \"%s\"", tty);
954 sshpam_err = pam_set_item(sshpam_handle, PAM_TTY, tty);
955 if (sshpam_err != PAM_SUCCESS)
956 fatal("PAM: failed to set PAM_TTY: %s",
957 pam_strerror(sshpam_handle, sshpam_err));
958 }
959}
960
961void
962do_pam_setcred(int init) 954do_pam_setcred(int init)
963{ 955{
964 sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, 956 sshpam_err = pam_set_item(sshpam_handle, PAM_CONV,
diff --git a/auth-pam.h b/auth-pam.h
index 2e9a0c0a3..c47b442e4 100644
--- a/auth-pam.h
+++ b/auth-pam.h
@@ -1,5 +1,3 @@
1/* $Id: auth-pam.h,v 1.27 2004/09/11 12:17:26 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2000 Damien Miller. All rights reserved. 2 * Copyright (c) 2000 Damien Miller. All rights reserved.
5 * 3 *
@@ -27,15 +25,10 @@
27#include "includes.h" 25#include "includes.h"
28#ifdef USE_PAM 26#ifdef USE_PAM
29 27
30#if !defined(SSHD_PAM_SERVICE)
31# define SSHD_PAM_SERVICE __progname
32#endif
33
34void start_pam(Authctxt *); 28void start_pam(Authctxt *);
35void finish_pam(void); 29void finish_pam(void);
36u_int do_pam_account(void); 30u_int do_pam_account(void);
37void do_pam_session(void); 31void do_pam_session(void);
38void do_pam_set_tty(const char *);
39void do_pam_setcred(int ); 32void do_pam_setcred(int );
40void do_pam_chauthtok(void); 33void do_pam_chauthtok(void);
41int do_pam_putenv(char *, char *); 34int do_pam_putenv(char *, char *);
diff --git a/auth-rh-rsa.c b/auth-rh-rsa.c
deleted file mode 100644
index 057335ba4..000000000
--- a/auth-rh-rsa.c
+++ /dev/null
@@ -1,109 +0,0 @@
1/* $OpenBSD: auth-rh-rsa.c,v 1.45 2016/03/07 19:02:43 djm Exp $ */
2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved
6 * Rhosts or /etc/hosts.equiv authentication combined with RSA host
7 * authentication.
8 *
9 * As far as I am concerned, the code I have written for this software
10 * can be used freely for any purpose. Any derived versions of this
11 * software must be clearly marked as such, and if the derived work is
12 * incompatible with the protocol description in the RFC file, it must be
13 * called by a name other than "ssh" or "Secure Shell".
14 */
15
16#include "includes.h"
17
18#ifdef WITH_SSH1
19
20#include <sys/types.h>
21
22#include <pwd.h>
23#include <stdarg.h>
24
25#include "packet.h"
26#include "uidswap.h"
27#include "log.h"
28#include "buffer.h"
29#include "misc.h"
30#include "servconf.h"
31#include "key.h"
32#include "hostfile.h"
33#include "pathnames.h"
34#include "auth.h"
35#include "canohost.h"
36#ifdef GSSAPI
37#include "ssh-gss.h"
38#endif
39#include "monitor_wrap.h"
40
41/* import */
42extern ServerOptions options;
43
44int
45auth_rhosts_rsa_key_allowed(struct passwd *pw, const char *cuser,
46 const char *chost, Key *client_host_key)
47{
48 HostStatus host_status;
49
50 if (auth_key_is_revoked(client_host_key))
51 return 0;
52
53 /* Check if we would accept it using rhosts authentication. */
54 if (!auth_rhosts(pw, cuser))
55 return 0;
56
57 host_status = check_key_in_hostfiles(pw, client_host_key,
58 chost, _PATH_SSH_SYSTEM_HOSTFILE,
59 options.ignore_user_known_hosts ? NULL : _PATH_SSH_USER_HOSTFILE);
60
61 return (host_status == HOST_OK);
62}
63
64/*
65 * Tries to authenticate the user using the .rhosts file and the host using
66 * its host key. Returns true if authentication succeeds.
67 */
68int
69auth_rhosts_rsa(Authctxt *authctxt, char *cuser, Key *client_host_key)
70{
71 struct ssh *ssh = active_state; /* XXX */
72 const char *chost;
73 struct passwd *pw = authctxt->pw;
74
75 debug("Trying rhosts with RSA host authentication for client user %.100s",
76 cuser);
77
78 if (!authctxt->valid || client_host_key == NULL ||
79 client_host_key->rsa == NULL)
80 return 0;
81
82 chost = auth_get_canonical_hostname(ssh, options.use_dns);
83 debug("Rhosts RSA authentication: canonical host %.900s", chost);
84
85 if (!PRIVSEP(auth_rhosts_rsa_key_allowed(pw, cuser, chost, client_host_key))) {
86 debug("Rhosts with RSA host authentication denied: unknown or invalid host key");
87 packet_send_debug("Your host key cannot be verified: unknown or invalid host key.");
88 return 0;
89 }
90 /* A matching host key was found and is known. */
91
92 /* Perform the challenge-response dialog with the client for the host key. */
93 if (!auth_rsa_challenge_dialog(client_host_key)) {
94 logit("Client on %.800s failed to respond correctly to host authentication.",
95 chost);
96 return 0;
97 }
98 /*
99 * We have authenticated the user using .rhosts or /etc/hosts.equiv,
100 * and the host using RSA. We accept the authentication.
101 */
102
103 verbose("Rhosts with RSA host authentication accepted for %.100s, %.100s on %.700s.",
104 pw->pw_name, cuser, chost);
105 packet_send_debug("Rhosts with RSA host authentication accepted.");
106 return 1;
107}
108
109#endif /* WITH_SSH1 */
diff --git a/auth-rhosts.c b/auth-rhosts.c
index c17c13cc1..4dccd5e6a 100644
--- a/auth-rhosts.c
+++ b/auth-rhosts.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-rhosts.c,v 1.47 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: auth-rhosts.c,v 1.48 2016/08/13 17:47:41 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -186,20 +186,8 @@ check_rhosts_file(const char *filename, const char *hostname,
186 * true if authentication succeeds. If ignore_rhosts is true, only 186 * true if authentication succeeds. If ignore_rhosts is true, only
187 * /etc/hosts.equiv will be considered (.rhosts and .shosts are ignored). 187 * /etc/hosts.equiv will be considered (.rhosts and .shosts are ignored).
188 */ 188 */
189
190int 189int
191auth_rhosts(struct passwd *pw, const char *client_user) 190auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname,
192{
193 struct ssh *ssh = active_state; /* XXX */
194 const char *hostname, *ipaddr;
195
196 hostname = auth_get_canonical_hostname(ssh, options.use_dns);
197 ipaddr = ssh_remote_ipaddr(ssh);
198 return auth_rhosts2(pw, client_user, hostname, ipaddr);
199}
200
201static int
202auth_rhosts2_raw(struct passwd *pw, const char *client_user, const char *hostname,
203 const char *ipaddr) 191 const char *ipaddr)
204{ 192{
205 char buf[1024]; 193 char buf[1024];
@@ -332,10 +320,3 @@ auth_rhosts2_raw(struct passwd *pw, const char *client_user, const char *hostnam
332 restore_uid(); 320 restore_uid();
333 return 0; 321 return 0;
334} 322}
335
336int
337auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname,
338 const char *ipaddr)
339{
340 return auth_rhosts2_raw(pw, client_user, hostname, ipaddr);
341}
diff --git a/auth-rsa.c b/auth-rsa.c
deleted file mode 100644
index 4cf2163c7..000000000
--- a/auth-rsa.c
+++ /dev/null
@@ -1,351 +0,0 @@
1/* $OpenBSD: auth-rsa.c,v 1.90 2015/01/28 22:36:00 djm Exp $ */
2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved
6 * RSA-based authentication. This code determines whether to admit a login
7 * based on RSA authentication. This file also contains functions to check
8 * validity of the host key.
9 *
10 * As far as I am concerned, the code I have written for this software
11 * can be used freely for any purpose. Any derived versions of this
12 * software must be clearly marked as such, and if the derived work is
13 * incompatible with the protocol description in the RFC file, it must be
14 * called by a name other than "ssh" or "Secure Shell".
15 */
16
17#include "includes.h"
18
19#ifdef WITH_SSH1
20
21#include <sys/types.h>
22#include <sys/stat.h>
23
24#include <openssl/rsa.h>
25
26#include <pwd.h>
27#include <stdio.h>
28#include <stdarg.h>
29#include <string.h>
30
31#include "xmalloc.h"
32#include "rsa.h"
33#include "packet.h"
34#include "ssh1.h"
35#include "uidswap.h"
36#include "match.h"
37#include "buffer.h"
38#include "pathnames.h"
39#include "log.h"
40#include "misc.h"
41#include "servconf.h"
42#include "key.h"
43#include "auth-options.h"
44#include "hostfile.h"
45#include "auth.h"
46#ifdef GSSAPI
47#include "ssh-gss.h"
48#endif
49#include "monitor_wrap.h"
50#include "ssh.h"
51
52#include "digest.h"
53
54/* import */
55extern ServerOptions options;
56
57/*
58 * Session identifier that is used to bind key exchange and authentication
59 * responses to a particular session.
60 */
61extern u_char session_id[16];
62
63/*
64 * The .ssh/authorized_keys file contains public keys, one per line, in the
65 * following format:
66 * options bits e n comment
67 * where bits, e and n are decimal numbers,
68 * and comment is any string of characters up to newline. The maximum
69 * length of a line is SSH_MAX_PUBKEY_BYTES characters. See sshd(8) for a
70 * description of the options.
71 */
72
73BIGNUM *
74auth_rsa_generate_challenge(Key *key)
75{
76 BIGNUM *challenge;
77 BN_CTX *ctx;
78
79 if ((challenge = BN_new()) == NULL)
80 fatal("auth_rsa_generate_challenge: BN_new() failed");
81 /* Generate a random challenge. */
82 if (BN_rand(challenge, 256, 0, 0) == 0)
83 fatal("auth_rsa_generate_challenge: BN_rand failed");
84 if ((ctx = BN_CTX_new()) == NULL)
85 fatal("auth_rsa_generate_challenge: BN_CTX_new failed");
86 if (BN_mod(challenge, challenge, key->rsa->n, ctx) == 0)
87 fatal("auth_rsa_generate_challenge: BN_mod failed");
88 BN_CTX_free(ctx);
89
90 return challenge;
91}
92
93int
94auth_rsa_verify_response(Key *key, BIGNUM *challenge, u_char response[16])
95{
96 u_char buf[32], mdbuf[16];
97 struct ssh_digest_ctx *md;
98 int len;
99
100 /* don't allow short keys */
101 if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) {
102 error("%s: RSA modulus too small: %d < minimum %d bits",
103 __func__,
104 BN_num_bits(key->rsa->n), SSH_RSA_MINIMUM_MODULUS_SIZE);
105 return (0);
106 }
107
108 /* The response is MD5 of decrypted challenge plus session id. */
109 len = BN_num_bytes(challenge);
110 if (len <= 0 || len > 32)
111 fatal("%s: bad challenge length %d", __func__, len);
112 memset(buf, 0, 32);
113 BN_bn2bin(challenge, buf + 32 - len);
114 if ((md = ssh_digest_start(SSH_DIGEST_MD5)) == NULL ||
115 ssh_digest_update(md, buf, 32) < 0 ||
116 ssh_digest_update(md, session_id, 16) < 0 ||
117 ssh_digest_final(md, mdbuf, sizeof(mdbuf)) < 0)
118 fatal("%s: md5 failed", __func__);
119 ssh_digest_free(md);
120
121 /* Verify that the response is the original challenge. */
122 if (timingsafe_bcmp(response, mdbuf, 16) != 0) {
123 /* Wrong answer. */
124 return (0);
125 }
126 /* Correct answer. */
127 return (1);
128}
129
130/*
131 * Performs the RSA authentication challenge-response dialog with the client,
132 * and returns true (non-zero) if the client gave the correct answer to
133 * our challenge; returns zero if the client gives a wrong answer.
134 */
135
136int
137auth_rsa_challenge_dialog(Key *key)
138{
139 BIGNUM *challenge, *encrypted_challenge;
140 u_char response[16];
141 int i, success;
142
143 if ((encrypted_challenge = BN_new()) == NULL)
144 fatal("auth_rsa_challenge_dialog: BN_new() failed");
145
146 challenge = PRIVSEP(auth_rsa_generate_challenge(key));
147
148 /* Encrypt the challenge with the public key. */
149 if (rsa_public_encrypt(encrypted_challenge, challenge, key->rsa) != 0)
150 fatal("%s: rsa_public_encrypt failed", __func__);
151
152 /* Send the encrypted challenge to the client. */
153 packet_start(SSH_SMSG_AUTH_RSA_CHALLENGE);
154 packet_put_bignum(encrypted_challenge);
155 packet_send();
156 BN_clear_free(encrypted_challenge);
157 packet_write_wait();
158
159 /* Wait for a response. */
160 packet_read_expect(SSH_CMSG_AUTH_RSA_RESPONSE);
161 for (i = 0; i < 16; i++)
162 response[i] = (u_char)packet_get_char();
163 packet_check_eom();
164
165 success = PRIVSEP(auth_rsa_verify_response(key, challenge, response));
166 BN_clear_free(challenge);
167 return (success);
168}
169
170static int
171rsa_key_allowed_in_file(struct passwd *pw, char *file,
172 const BIGNUM *client_n, Key **rkey)
173{
174 char *fp, line[SSH_MAX_PUBKEY_BYTES];
175 int allowed = 0, bits;
176 FILE *f;
177 u_long linenum = 0;
178 Key *key;
179
180 debug("trying public RSA key file %s", file);
181 if ((f = auth_openkeyfile(file, pw, options.strict_modes)) == NULL)
182 return 0;
183
184 auth_start_parse_options();
185
186 /*
187 * Go though the accepted keys, looking for the current key. If
188 * found, perform a challenge-response dialog to verify that the
189 * user really has the corresponding private key.
190 */
191 key = key_new(KEY_RSA1);
192 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
193 char *cp;
194 char *key_options;
195 int keybits;
196
197 /* Skip leading whitespace, empty and comment lines. */
198 for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
199 ;
200 if (!*cp || *cp == '\n' || *cp == '#')
201 continue;
202
203 /*
204 * Check if there are options for this key, and if so,
205 * save their starting address and skip the option part
206 * for now. If there are no options, set the starting
207 * address to NULL.
208 */
209 if (*cp < '0' || *cp > '9') {
210 int quoted = 0;
211 key_options = cp;
212 for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) {
213 if (*cp == '\\' && cp[1] == '"')
214 cp++; /* Skip both */
215 else if (*cp == '"')
216 quoted = !quoted;
217 }
218 } else
219 key_options = NULL;
220
221 /* Parse the key from the line. */
222 if (hostfile_read_key(&cp, &bits, key) == 0) {
223 debug("%.100s, line %lu: non ssh1 key syntax",
224 file, linenum);
225 continue;
226 }
227 /* cp now points to the comment part. */
228
229 /*
230 * Check if the we have found the desired key (identified
231 * by its modulus).
232 */
233 if (BN_cmp(key->rsa->n, client_n) != 0)
234 continue;
235
236 /* check the real bits */
237 keybits = BN_num_bits(key->rsa->n);
238 if (keybits < 0 || bits != keybits)
239 logit("Warning: %s, line %lu: keysize mismatch: "
240 "actual %d vs. announced %d.",
241 file, linenum, BN_num_bits(key->rsa->n), bits);
242
243 if ((fp = sshkey_fingerprint(key, options.fingerprint_hash,
244 SSH_FP_DEFAULT)) == NULL)
245 continue;
246 debug("matching key found: file %s, line %lu %s %s",
247 file, linenum, key_type(key), fp);
248 free(fp);
249
250 /* Never accept a revoked key */
251 if (auth_key_is_revoked(key))
252 break;
253
254 /* We have found the desired key. */
255 /*
256 * If our options do not allow this key to be used,
257 * do not send challenge.
258 */
259 if (!auth_parse_options(pw, key_options, file, linenum))
260 continue;
261 if (key_is_cert_authority)
262 continue;
263 /* break out, this key is allowed */
264 allowed = 1;
265 break;
266 }
267
268 /* Close the file. */
269 fclose(f);
270
271 /* return key if allowed */
272 if (allowed && rkey != NULL)
273 *rkey = key;
274 else
275 key_free(key);
276
277 return allowed;
278}
279
280/*
281 * check if there's user key matching client_n,
282 * return key if login is allowed, NULL otherwise
283 */
284
285int
286auth_rsa_key_allowed(struct passwd *pw, BIGNUM *client_n, Key **rkey)
287{
288 char *file;
289 u_int i, allowed = 0;
290
291 temporarily_use_uid(pw);
292
293 for (i = 0; !allowed && i < options.num_authkeys_files; i++) {
294 if (strcasecmp(options.authorized_keys_files[i], "none") == 0)
295 continue;
296 file = expand_authorized_keys(
297 options.authorized_keys_files[i], pw);
298 allowed = rsa_key_allowed_in_file(pw, file, client_n, rkey);
299 free(file);
300 }
301
302 restore_uid();
303
304 return allowed;
305}
306
307/*
308 * Performs the RSA authentication dialog with the client. This returns
309 * 0 if the client could not be authenticated, and 1 if authentication was
310 * successful. This may exit if there is a serious protocol violation.
311 */
312int
313auth_rsa(Authctxt *authctxt, BIGNUM *client_n)
314{
315 Key *key;
316 struct passwd *pw = authctxt->pw;
317
318 /* no user given */
319 if (!authctxt->valid)
320 return 0;
321
322 if (!PRIVSEP(auth_rsa_key_allowed(pw, client_n, &key))) {
323 auth_clear_options();
324 return (0);
325 }
326
327 /* Perform the challenge-response dialog for this key. */
328 if (!auth_rsa_challenge_dialog(key)) {
329 /* Wrong response. */
330 verbose("Wrong response to RSA authentication challenge.");
331 packet_send_debug("Wrong response to RSA authentication challenge.");
332 /*
333 * Break out of the loop. Otherwise we might send
334 * another challenge and break the protocol.
335 */
336 key_free(key);
337 return (0);
338 }
339 /*
340 * Correct response. The client has been successfully
341 * authenticated. Note that we have not yet processed the
342 * options; this will be reset if the options cause the
343 * authentication to be rejected.
344 */
345 pubkey_auth_info(authctxt, key, NULL);
346
347 packet_send_debug("RSA authentication accepted.");
348 return (1);
349}
350
351#endif /* WITH_SSH1 */
diff --git a/auth.c b/auth.c
index 3f8b348fc..90390724d 100644
--- a/auth.c
+++ b/auth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.c,v 1.115 2016/06/15 00:40:40 dtucker Exp $ */ 1/* $OpenBSD: auth.c,v 1.119 2016/12/15 21:29:05 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -103,6 +103,7 @@ allowed_user(struct passwd * pw)
103 struct stat st; 103 struct stat st;
104 const char *hostname = NULL, *ipaddr = NULL, *passwd = NULL; 104 const char *hostname = NULL, *ipaddr = NULL, *passwd = NULL;
105 u_int i; 105 u_int i;
106 int r;
106#ifdef USE_SHADOW 107#ifdef USE_SHADOW
107 struct spwd *spw = NULL; 108 struct spwd *spw = NULL;
108#endif 109#endif
@@ -191,21 +192,31 @@ allowed_user(struct passwd * pw)
191 192
192 /* Return false if user is listed in DenyUsers */ 193 /* Return false if user is listed in DenyUsers */
193 if (options.num_deny_users > 0) { 194 if (options.num_deny_users > 0) {
194 for (i = 0; i < options.num_deny_users; i++) 195 for (i = 0; i < options.num_deny_users; i++) {
195 if (match_user(pw->pw_name, hostname, ipaddr, 196 r = match_user(pw->pw_name, hostname, ipaddr,
196 options.deny_users[i])) { 197 options.deny_users[i]);
198 if (r < 0) {
199 fatal("Invalid DenyUsers pattern \"%.100s\"",
200 options.deny_users[i]);
201 } else if (r != 0) {
197 logit("User %.100s from %.100s not allowed " 202 logit("User %.100s from %.100s not allowed "
198 "because listed in DenyUsers", 203 "because listed in DenyUsers",
199 pw->pw_name, hostname); 204 pw->pw_name, hostname);
200 return 0; 205 return 0;
201 } 206 }
207 }
202 } 208 }
203 /* Return false if AllowUsers isn't empty and user isn't listed there */ 209 /* Return false if AllowUsers isn't empty and user isn't listed there */
204 if (options.num_allow_users > 0) { 210 if (options.num_allow_users > 0) {
205 for (i = 0; i < options.num_allow_users; i++) 211 for (i = 0; i < options.num_allow_users; i++) {
206 if (match_user(pw->pw_name, hostname, ipaddr, 212 r = match_user(pw->pw_name, hostname, ipaddr,
207 options.allow_users[i])) 213 options.allow_users[i]);
214 if (r < 0) {
215 fatal("Invalid AllowUsers pattern \"%.100s\"",
216 options.allow_users[i]);
217 } else if (r == 1)
208 break; 218 break;
219 }
209 /* i < options.num_allow_users iff we break for loop */ 220 /* i < options.num_allow_users iff we break for loop */
210 if (i >= options.num_allow_users) { 221 if (i >= options.num_allow_users) {
211 logit("User %.100s from %.100s not allowed because " 222 logit("User %.100s from %.100s not allowed because "
@@ -298,7 +309,7 @@ auth_log(Authctxt *authctxt, int authenticated, int partial,
298 else 309 else
299 authmsg = authenticated ? "Accepted" : "Failed"; 310 authmsg = authenticated ? "Accepted" : "Failed";
300 311
301 authlog("%s %s%s%s for %s%.100s from %.200s port %d %s%s%s", 312 authlog("%s %s%s%s for %s%.100s from %.200s port %d ssh2%s%s",
302 authmsg, 313 authmsg,
303 method, 314 method,
304 submethod != NULL ? "/" : "", submethod == NULL ? "" : submethod, 315 submethod != NULL ? "/" : "", submethod == NULL ? "" : submethod,
@@ -306,7 +317,6 @@ auth_log(Authctxt *authctxt, int authenticated, int partial,
306 authctxt->user, 317 authctxt->user,
307 ssh_remote_ipaddr(ssh), 318 ssh_remote_ipaddr(ssh),
308 ssh_remote_port(ssh), 319 ssh_remote_port(ssh),
309 compat20 ? "ssh2" : "ssh1",
310 authctxt->info != NULL ? ": " : "", 320 authctxt->info != NULL ? ": " : "",
311 authctxt->info != NULL ? authctxt->info : ""); 321 authctxt->info != NULL ? authctxt->info : "");
312 free(authctxt->info); 322 free(authctxt->info);
@@ -339,12 +349,11 @@ auth_maxtries_exceeded(Authctxt *authctxt)
339 struct ssh *ssh = active_state; /* XXX */ 349 struct ssh *ssh = active_state; /* XXX */
340 350
341 error("maximum authentication attempts exceeded for " 351 error("maximum authentication attempts exceeded for "
342 "%s%.100s from %.200s port %d %s", 352 "%s%.100s from %.200s port %d ssh2",
343 authctxt->valid ? "" : "invalid user ", 353 authctxt->valid ? "" : "invalid user ",
344 authctxt->user, 354 authctxt->user,
345 ssh_remote_ipaddr(ssh), 355 ssh_remote_ipaddr(ssh),
346 ssh_remote_port(ssh), 356 ssh_remote_port(ssh));
347 compat20 ? "ssh2" : "ssh1");
348 packet_disconnect("Too many authentication failures"); 357 packet_disconnect("Too many authentication failures");
349 /* NOTREACHED */ 358 /* NOTREACHED */
350} 359}
diff --git a/auth.h b/auth.h
index 50baeaadb..8c658d16e 100644
--- a/auth.h
+++ b/auth.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.h,v 1.88 2016/05/04 14:04:40 markus Exp $ */ 1/* $OpenBSD: auth.h,v 1.89 2016/08/13 17:47:41 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -113,20 +113,11 @@ struct KbdintDevice
113 void (*free_ctx)(void *ctx); 113 void (*free_ctx)(void *ctx);
114}; 114};
115 115
116int auth_rhosts(struct passwd *, const char *);
117int 116int
118auth_rhosts2(struct passwd *, const char *, const char *, const char *); 117auth_rhosts2(struct passwd *, const char *, const char *, const char *);
119 118
120int auth_rhosts_rsa(Authctxt *, char *, Key *);
121int auth_password(Authctxt *, const char *); 119int auth_password(Authctxt *, const char *);
122int auth_rsa(Authctxt *, BIGNUM *); 120
123int auth_rsa_challenge_dialog(Key *);
124BIGNUM *auth_rsa_generate_challenge(Key *);
125int auth_rsa_verify_response(Key *, BIGNUM *, u_char[]);
126int auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
127
128int auth_rhosts_rsa_key_allowed(struct passwd *, const char *,
129 const char *, Key *);
130int hostbased_key_allowed(struct passwd *, const char *, char *, Key *); 121int hostbased_key_allowed(struct passwd *, const char *, char *, Key *);
131int user_key_allowed(struct passwd *, Key *, int); 122int user_key_allowed(struct passwd *, Key *, int);
132void pubkey_auth_info(Authctxt *, const Key *, const char *, ...) 123void pubkey_auth_info(Authctxt *, const Key *, const char *, ...)
@@ -157,7 +148,6 @@ void remove_kbdint_device(const char *);
157 148
158void disable_forwarding(void); 149void disable_forwarding(void);
159 150
160void do_authentication(Authctxt *);
161void do_authentication2(Authctxt *); 151void do_authentication2(Authctxt *);
162 152
163void auth_info(Authctxt *authctxt, const char *, ...) 153void auth_info(Authctxt *authctxt, const char *, ...)
@@ -188,10 +178,6 @@ int skey_respond(void *, u_int, char **);
188int allowed_user(struct passwd *); 178int allowed_user(struct passwd *);
189struct passwd * getpwnamallow(const char *user); 179struct passwd * getpwnamallow(const char *user);
190 180
191char *get_challenge(Authctxt *);
192int verify_response(Authctxt *, const char *);
193void abandon_challenge_response(Authctxt *);
194
195char *expand_authorized_keys(const char *, struct passwd *pw); 181char *expand_authorized_keys(const char *, struct passwd *pw);
196char *authorized_principals_file(struct passwd *); 182char *authorized_principals_file(struct passwd *);
197 183
@@ -211,7 +197,6 @@ Key *get_hostkey_public_by_index(int, struct ssh *);
211Key *get_hostkey_public_by_type(int, int, struct ssh *); 197Key *get_hostkey_public_by_type(int, int, struct ssh *);
212Key *get_hostkey_private_by_type(int, int, struct ssh *); 198Key *get_hostkey_private_by_type(int, int, struct ssh *);
213int get_hostkey_index(Key *, int, struct ssh *); 199int get_hostkey_index(Key *, int, struct ssh *);
214int ssh1_session_key(BIGNUM *);
215int sshd_hostkey_sign(Key *, Key *, u_char **, size_t *, 200int sshd_hostkey_sign(Key *, Key *, u_char **, size_t *,
216 const u_char *, size_t, const char *, u_int); 201 const u_char *, size_t, const char *, u_int);
217 202
diff --git a/auth1.c b/auth1.c
deleted file mode 100644
index dd0064832..000000000
--- a/auth1.c
+++ /dev/null
@@ -1,450 +0,0 @@
1/* $OpenBSD: auth1.c,v 1.82 2014/07/15 15:54:14 millert Exp $ */
2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved
5 *
6 * As far as I am concerned, the code I have written for this software
7 * can be used freely for any purpose. Any derived versions of this
8 * software must be clearly marked as such, and if the derived work is
9 * incompatible with the protocol description in the RFC file, it must be
10 * called by a name other than "ssh" or "Secure Shell".
11 */
12
13#include "includes.h"
14
15#ifdef WITH_SSH1
16
17#include <sys/types.h>
18
19#include <stdarg.h>
20#include <stdio.h>
21#include <string.h>
22#include <unistd.h>
23#include <pwd.h>
24
25#include "openbsd-compat/sys-queue.h"
26#include "xmalloc.h"
27#include "rsa.h"
28#include "ssh1.h"
29#include "packet.h"
30#include "buffer.h"
31#include "log.h"
32#include "misc.h"
33#include "servconf.h"
34#include "compat.h"
35#include "key.h"
36#include "hostfile.h"
37#include "auth.h"
38#include "channels.h"
39#include "session.h"
40#include "uidswap.h"
41#ifdef GSSAPI
42#include "ssh-gss.h"
43#endif
44#include "monitor_wrap.h"
45#include "buffer.h"
46
47/* import */
48extern ServerOptions options;
49extern Buffer loginmsg;
50
51static int auth1_process_password(Authctxt *);
52static int auth1_process_rsa(Authctxt *);
53static int auth1_process_rhosts_rsa(Authctxt *);
54static int auth1_process_tis_challenge(Authctxt *);
55static int auth1_process_tis_response(Authctxt *);
56
57static char *client_user = NULL; /* Used to fill in remote user for PAM */
58
59struct AuthMethod1 {
60 int type;
61 char *name;
62 int *enabled;
63 int (*method)(Authctxt *);
64};
65
66const struct AuthMethod1 auth1_methods[] = {
67 {
68 SSH_CMSG_AUTH_PASSWORD, "password",
69 &options.password_authentication, auth1_process_password
70 },
71 {
72 SSH_CMSG_AUTH_RSA, "rsa",
73 &options.rsa_authentication, auth1_process_rsa
74 },
75 {
76 SSH_CMSG_AUTH_RHOSTS_RSA, "rhosts-rsa",
77 &options.rhosts_rsa_authentication, auth1_process_rhosts_rsa
78 },
79 {
80 SSH_CMSG_AUTH_TIS, "challenge-response",
81 &options.challenge_response_authentication,
82 auth1_process_tis_challenge
83 },
84 {
85 SSH_CMSG_AUTH_TIS_RESPONSE, "challenge-response",
86 &options.challenge_response_authentication,
87 auth1_process_tis_response
88 },
89 { -1, NULL, NULL, NULL}
90};
91
92static const struct AuthMethod1
93*lookup_authmethod1(int type)
94{
95 int i;
96
97 for (i = 0; auth1_methods[i].name != NULL; i++)
98 if (auth1_methods[i].type == type)
99 return (&(auth1_methods[i]));
100
101 return (NULL);
102}
103
104static char *
105get_authname(int type)
106{
107 const struct AuthMethod1 *a;
108 static char buf[64];
109
110 if ((a = lookup_authmethod1(type)) != NULL)
111 return (a->name);
112 snprintf(buf, sizeof(buf), "bad-auth-msg-%d", type);
113 return (buf);
114}
115
116/*ARGSUSED*/
117static int
118auth1_process_password(Authctxt *authctxt)
119{
120 int authenticated = 0;
121 char *password;
122 u_int dlen;
123
124 /*
125 * Read user password. It is in plain text, but was
126 * transmitted over the encrypted channel so it is
127 * not visible to an outside observer.
128 */
129 password = packet_get_string(&dlen);
130 packet_check_eom();
131
132 /* Try authentication with the password. */
133 authenticated = PRIVSEP(auth_password(authctxt, password));
134
135 explicit_bzero(password, dlen);
136 free(password);
137
138 return (authenticated);
139}
140
141/*ARGSUSED*/
142static int
143auth1_process_rsa(Authctxt *authctxt)
144{
145 int authenticated = 0;
146 BIGNUM *n;
147
148 /* RSA authentication requested. */
149 if ((n = BN_new()) == NULL)
150 fatal("do_authloop: BN_new failed");
151 packet_get_bignum(n);
152 packet_check_eom();
153 authenticated = auth_rsa(authctxt, n);
154 BN_clear_free(n);
155
156 return (authenticated);
157}
158
159/*ARGSUSED*/
160static int
161auth1_process_rhosts_rsa(Authctxt *authctxt)
162{
163 int keybits, authenticated = 0;
164 u_int bits;
165 Key *client_host_key;
166 u_int ulen;
167
168 /*
169 * Get client user name. Note that we just have to
170 * trust the client; root on the client machine can
171 * claim to be any user.
172 */
173 client_user = packet_get_cstring(&ulen);
174
175 /* Get the client host key. */
176 client_host_key = key_new(KEY_RSA1);
177 bits = packet_get_int();
178 packet_get_bignum(client_host_key->rsa->e);
179 packet_get_bignum(client_host_key->rsa->n);
180
181 keybits = BN_num_bits(client_host_key->rsa->n);
182 if (keybits < 0 || bits != (u_int)keybits) {
183 verbose("Warning: keysize mismatch for client_host_key: "
184 "actual %d, announced %d",
185 BN_num_bits(client_host_key->rsa->n), bits);
186 }
187 packet_check_eom();
188
189 authenticated = auth_rhosts_rsa(authctxt, client_user,
190 client_host_key);
191 key_free(client_host_key);
192
193 auth_info(authctxt, "ruser %.100s", client_user);
194
195 return (authenticated);
196}
197
198/*ARGSUSED*/
199static int
200auth1_process_tis_challenge(Authctxt *authctxt)
201{
202 char *challenge;
203
204 if ((challenge = get_challenge(authctxt)) == NULL)
205 return (0);
206
207 debug("sending challenge '%s'", challenge);
208 packet_start(SSH_SMSG_AUTH_TIS_CHALLENGE);
209 packet_put_cstring(challenge);
210 free(challenge);
211 packet_send();
212 packet_write_wait();
213
214 return (-1);
215}
216
217/*ARGSUSED*/
218static int
219auth1_process_tis_response(Authctxt *authctxt)
220{
221 int authenticated = 0;
222 char *response;
223 u_int dlen;
224
225 response = packet_get_string(&dlen);
226 packet_check_eom();
227 authenticated = verify_response(authctxt, response);
228 explicit_bzero(response, dlen);
229 free(response);
230
231 return (authenticated);
232}
233
234/*
235 * read packets, try to authenticate the user and
236 * return only if authentication is successful
237 */
238static void
239do_authloop(Authctxt *authctxt)
240{
241 int authenticated = 0;
242 int prev = 0, type = 0;
243 const struct AuthMethod1 *meth;
244
245 debug("Attempting authentication for %s%.100s.",
246 authctxt->valid ? "" : "invalid user ", authctxt->user);
247
248 /* If the user has no password, accept authentication immediately. */
249 if (options.permit_empty_passwd && options.password_authentication &&
250#ifdef KRB5
251 (!options.kerberos_authentication || options.kerberos_or_local_passwd) &&
252#endif
253 PRIVSEP(auth_password(authctxt, ""))) {
254#ifdef USE_PAM
255 if (options.use_pam && (PRIVSEP(do_pam_account())))
256#endif
257 {
258 auth_log(authctxt, 1, 0, "without authentication",
259 NULL);
260 return;
261 }
262 }
263
264 /* Indicate that authentication is needed. */
265 packet_start(SSH_SMSG_FAILURE);
266 packet_send();
267 packet_write_wait();
268
269 for (;;) {
270 /* default to fail */
271 authenticated = 0;
272
273
274 /* Get a packet from the client. */
275 prev = type;
276 type = packet_read();
277
278 /*
279 * If we started challenge-response authentication but the
280 * next packet is not a response to our challenge, release
281 * the resources allocated by get_challenge() (which would
282 * normally have been released by verify_response() had we
283 * received such a response)
284 */
285 if (prev == SSH_CMSG_AUTH_TIS &&
286 type != SSH_CMSG_AUTH_TIS_RESPONSE)
287 abandon_challenge_response(authctxt);
288
289 if (authctxt->failures >= options.max_authtries)
290 goto skip;
291 if ((meth = lookup_authmethod1(type)) == NULL) {
292 logit("Unknown message during authentication: "
293 "type %d", type);
294 goto skip;
295 }
296
297 if (!*(meth->enabled)) {
298 verbose("%s authentication disabled.", meth->name);
299 goto skip;
300 }
301
302 authenticated = meth->method(authctxt);
303 if (authenticated == -1)
304 continue; /* "postponed" */
305
306#ifdef BSD_AUTH
307 if (authctxt->as) {
308 auth_close(authctxt->as);
309 authctxt->as = NULL;
310 }
311#endif
312 if (!authctxt->valid && authenticated)
313 fatal("INTERNAL ERROR: authenticated invalid user %s",
314 authctxt->user);
315
316#ifdef _UNICOS
317 if (authenticated && cray_access_denied(authctxt->user)) {
318 authenticated = 0;
319 fatal("Access denied for user %s.",authctxt->user);
320 }
321#endif /* _UNICOS */
322
323#ifndef HAVE_CYGWIN
324 /* Special handling for root */
325 if (authenticated && authctxt->pw->pw_uid == 0 &&
326 !auth_root_allowed(meth->name)) {
327 authenticated = 0;
328# ifdef SSH_AUDIT_EVENTS
329 PRIVSEP(audit_event(SSH_LOGIN_ROOT_DENIED));
330# endif
331 }
332#endif
333
334#ifdef USE_PAM
335 if (options.use_pam && authenticated &&
336 !PRIVSEP(do_pam_account())) {
337 char *msg;
338 size_t len;
339
340 error("Access denied for user %s by PAM account "
341 "configuration", authctxt->user);
342 len = buffer_len(&loginmsg);
343 buffer_append(&loginmsg, "\0", 1);
344 msg = buffer_ptr(&loginmsg);
345 /* strip trailing newlines */
346 if (len > 0)
347 while (len > 0 && msg[--len] == '\n')
348 msg[len] = '\0';
349 else
350 msg = "Access denied.";
351 packet_disconnect("%s", msg);
352 }
353#endif
354
355 skip:
356 /* Log before sending the reply */
357 auth_log(authctxt, authenticated, 0, get_authname(type), NULL);
358
359 free(client_user);
360 client_user = NULL;
361
362 if (authenticated)
363 return;
364
365 if (++authctxt->failures >= options.max_authtries) {
366#ifdef SSH_AUDIT_EVENTS
367 PRIVSEP(audit_event(SSH_LOGIN_EXCEED_MAXTRIES));
368#endif
369 auth_maxtries_exceeded(authctxt);
370 }
371
372 packet_start(SSH_SMSG_FAILURE);
373 packet_send();
374 packet_write_wait();
375 }
376}
377
378/*
379 * Performs authentication of an incoming connection. Session key has already
380 * been exchanged and encryption is enabled.
381 */
382void
383do_authentication(Authctxt *authctxt)
384{
385 u_int ulen;
386 char *user, *style = NULL, *role = NULL;
387
388 /* Get the name of the user that we wish to log in as. */
389 packet_read_expect(SSH_CMSG_USER);
390
391 /* Get the user name. */
392 user = packet_get_cstring(&ulen);
393 packet_check_eom();
394
395 if ((role = strchr(user, '/')) != NULL)
396 *role++ = '\0';
397
398 if ((style = strchr(user, ':')) != NULL)
399 *style++ = '\0';
400 else if (role && (style = strchr(role, ':')) != NULL)
401 *style++ = '\0';
402
403 authctxt->user = user;
404 authctxt->style = style;
405 authctxt->role = role;
406
407 /* Verify that the user is a valid user. */
408 if ((authctxt->pw = PRIVSEP(getpwnamallow(user))) != NULL)
409 authctxt->valid = 1;
410 else {
411 debug("do_authentication: invalid user %s", user);
412 authctxt->pw = fakepw();
413 }
414
415 /* Configuration may have changed as a result of Match */
416 if (options.num_auth_methods != 0)
417 fatal("AuthenticationMethods is not supported with SSH "
418 "protocol 1");
419
420 setproctitle("%s%s", authctxt->valid ? user : "unknown",
421 use_privsep ? " [net]" : "");
422
423#ifdef USE_PAM
424 if (options.use_pam)
425 PRIVSEP(start_pam(authctxt));
426#endif
427
428 /*
429 * If we are not running as root, the user must have the same uid as
430 * the server.
431 */
432#ifndef HAVE_CYGWIN
433 if (!use_privsep && getuid() != 0 && authctxt->pw &&
434 authctxt->pw->pw_uid != getuid())
435 packet_disconnect("Cannot change user when server not running as root.");
436#endif
437
438 /*
439 * Loop until the user has been authenticated or the connection is
440 * closed, do_authloop() returns only if authentication is successful
441 */
442 do_authloop(authctxt);
443
444 /* The user has been authenticated and accepted. */
445 packet_start(SSH_SMSG_SUCCESS);
446 packet_send();
447 packet_write_wait();
448}
449
450#endif /* WITH_SSH1 */
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index aace7ca15..add77136e 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-pubkey.c,v 1.55 2016/01/27 00:53:12 djm Exp $ */ 1/* $OpenBSD: auth2-pubkey.c,v 1.60 2016/11/30 02:57:40 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -560,7 +560,7 @@ match_principals_option(const char *principal_list, struct sshkey_cert *cert)
560 560
561static int 561static int
562process_principals(FILE *f, char *file, struct passwd *pw, 562process_principals(FILE *f, char *file, struct passwd *pw,
563 struct sshkey_cert *cert) 563 const struct sshkey_cert *cert)
564{ 564{
565 char line[SSH_MAX_PUBKEY_BYTES], *cp, *ep, *line_opts; 565 char line[SSH_MAX_PUBKEY_BYTES], *cp, *ep, *line_opts;
566 u_long linenum = 0; 566 u_long linenum = 0;
@@ -630,14 +630,17 @@ match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert)
630 * returns 1 if the principal is allowed or 0 otherwise. 630 * returns 1 if the principal is allowed or 0 otherwise.
631 */ 631 */
632static int 632static int
633match_principals_command(struct passwd *user_pw, struct sshkey_cert *cert) 633match_principals_command(struct passwd *user_pw, const struct sshkey *key)
634{ 634{
635 const struct sshkey_cert *cert = key->cert;
635 FILE *f = NULL; 636 FILE *f = NULL;
636 int ok, found_principal = 0; 637 int r, ok, found_principal = 0;
637 struct passwd *pw; 638 struct passwd *pw;
638 int i, ac = 0, uid_swapped = 0; 639 int i, ac = 0, uid_swapped = 0;
639 pid_t pid; 640 pid_t pid;
640 char *tmp, *username = NULL, *command = NULL, **av = NULL; 641 char *tmp, *username = NULL, *command = NULL, **av = NULL;
642 char *ca_fp = NULL, *key_fp = NULL, *catext = NULL, *keytext = NULL;
643 char serial_s[16];
641 void (*osigchld)(int); 644 void (*osigchld)(int);
642 645
643 if (options.authorized_principals_command == NULL) 646 if (options.authorized_principals_command == NULL)
@@ -675,10 +678,38 @@ match_principals_command(struct passwd *user_pw, struct sshkey_cert *cert)
675 command); 678 command);
676 goto out; 679 goto out;
677 } 680 }
681 if ((ca_fp = sshkey_fingerprint(cert->signature_key,
682 options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) {
683 error("%s: sshkey_fingerprint failed", __func__);
684 goto out;
685 }
686 if ((key_fp = sshkey_fingerprint(key,
687 options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) {
688 error("%s: sshkey_fingerprint failed", __func__);
689 goto out;
690 }
691 if ((r = sshkey_to_base64(cert->signature_key, &catext)) != 0) {
692 error("%s: sshkey_to_base64 failed: %s", __func__, ssh_err(r));
693 goto out;
694 }
695 if ((r = sshkey_to_base64(key, &keytext)) != 0) {
696 error("%s: sshkey_to_base64 failed: %s", __func__, ssh_err(r));
697 goto out;
698 }
699 snprintf(serial_s, sizeof(serial_s), "%llu",
700 (unsigned long long)cert->serial);
678 for (i = 1; i < ac; i++) { 701 for (i = 1; i < ac; i++) {
679 tmp = percent_expand(av[i], 702 tmp = percent_expand(av[i],
680 "u", user_pw->pw_name, 703 "u", user_pw->pw_name,
681 "h", user_pw->pw_dir, 704 "h", user_pw->pw_dir,
705 "t", sshkey_ssh_name(key),
706 "T", sshkey_ssh_name(cert->signature_key),
707 "f", key_fp,
708 "F", ca_fp,
709 "k", keytext,
710 "K", catext,
711 "i", cert->key_id,
712 "s", serial_s,
682 (char *)NULL); 713 (char *)NULL);
683 if (tmp == NULL) 714 if (tmp == NULL)
684 fatal("%s: percent_expand failed", __func__); 715 fatal("%s: percent_expand failed", __func__);
@@ -713,6 +744,10 @@ match_principals_command(struct passwd *user_pw, struct sshkey_cert *cert)
713 restore_uid(); 744 restore_uid();
714 free(command); 745 free(command);
715 free(username); 746 free(username);
747 free(ca_fp);
748 free(key_fp);
749 free(catext);
750 free(keytext);
716 return found_principal; 751 return found_principal;
717} 752}
718/* 753/*
@@ -723,18 +758,18 @@ static int
723check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw) 758check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw)
724{ 759{
725 char line[SSH_MAX_PUBKEY_BYTES]; 760 char line[SSH_MAX_PUBKEY_BYTES];
726 const char *reason;
727 int found_key = 0; 761 int found_key = 0;
728 u_long linenum = 0; 762 u_long linenum = 0;
729 Key *found; 763 Key *found;
730 char *fp;
731 764
732 found_key = 0; 765 found_key = 0;
733 766
734 found = NULL; 767 found = NULL;
735 auth_start_parse_options(); 768 auth_start_parse_options();
736 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 769 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
737 char *cp, *key_options = NULL; 770 char *cp, *key_options = NULL, *fp = NULL;
771 const char *reason = NULL;
772
738 if (found != NULL) 773 if (found != NULL)
739 key_free(found); 774 key_free(found);
740 found = key_new(key_is_cert(key) ? KEY_UNSPEC : key->type); 775 found = key_new(key_is_cert(key) ? KEY_UNSPEC : key->type);
@@ -799,10 +834,8 @@ check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw)
799 authorized_principals == NULL ? pw->pw_name : NULL, 834 authorized_principals == NULL ? pw->pw_name : NULL,
800 &reason) != 0) 835 &reason) != 0)
801 goto fail_reason; 836 goto fail_reason;
802 if (auth_cert_options(key, pw) != 0) { 837 if (auth_cert_options(key, pw, &reason) != 0)
803 free(fp); 838 goto fail_reason;
804 continue;
805 }
806 verbose("Accepted certificate ID \"%s\" (serial %llu) " 839 verbose("Accepted certificate ID \"%s\" (serial %llu) "
807 "signed by %s CA %s via %s", key->cert->key_id, 840 "signed by %s CA %s via %s", key->cert->key_id,
808 (unsigned long long)key->cert->serial, 841 (unsigned long long)key->cert->serial,
@@ -865,7 +898,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
865 found_principal = 1; 898 found_principal = 1;
866 } 899 }
867 /* Try querying command if specified */ 900 /* Try querying command if specified */
868 if (!found_principal && match_principals_command(pw, key->cert)) 901 if (!found_principal && match_principals_command(pw, key))
869 found_principal = 1; 902 found_principal = 1;
870 /* If principals file or command is specified, then require a match */ 903 /* If principals file or command is specified, then require a match */
871 use_authorized_principals = principals_file != NULL || 904 use_authorized_principals = principals_file != NULL ||
@@ -881,8 +914,8 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
881 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0) 914 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0)
882 goto fail_reason; 915 goto fail_reason;
883 auth_start_parse_options(); 916 auth_start_parse_options();
884 if (auth_cert_options(key, pw) != 0) 917 if (auth_cert_options(key, pw, &reason) != 0)
885 goto out; 918 goto fail_reason;
886 919
887 verbose("Accepted certificate ID \"%s\" (serial %llu) signed by " 920 verbose("Accepted certificate ID \"%s\" (serial %llu) signed by "
888 "%s CA %s via %s", key->cert->key_id, 921 "%s CA %s via %s", key->cert->key_id,
diff --git a/authfile.c b/authfile.c
index f46b4e37f..7411b68f6 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfile.c,v 1.121 2016/04/09 12:39:30 djm Exp $ */ 1/* $OpenBSD: authfile.c,v 1.122 2016/11/25 23:24:45 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved.
4 * 4 *
@@ -100,13 +100,25 @@ sshkey_load_file(int fd, struct sshbuf *blob)
100 u_char buf[1024]; 100 u_char buf[1024];
101 size_t len; 101 size_t len;
102 struct stat st; 102 struct stat st;
103 int r; 103 int r, dontmax = 0;
104 104
105 if (fstat(fd, &st) < 0) 105 if (fstat(fd, &st) < 0)
106 return SSH_ERR_SYSTEM_ERROR; 106 return SSH_ERR_SYSTEM_ERROR;
107 if ((st.st_mode & (S_IFSOCK|S_IFCHR|S_IFIFO)) == 0 && 107 if ((st.st_mode & (S_IFSOCK|S_IFCHR|S_IFIFO)) == 0 &&
108 st.st_size > MAX_KEY_FILE_SIZE) 108 st.st_size > MAX_KEY_FILE_SIZE)
109 return SSH_ERR_INVALID_FORMAT; 109 return SSH_ERR_INVALID_FORMAT;
110 /*
111 * Pre-allocate the buffer used for the key contents and clamp its
112 * maximum size. This ensures that key contents are never leaked via
113 * implicit realloc() in the sshbuf code.
114 */
115 if ((st.st_mode & S_IFREG) == 0 || st.st_size <= 0) {
116 st.st_size = 64*1024; /* 64k should be enough for anyone :) */
117 dontmax = 1;
118 }
119 if ((r = sshbuf_allocate(blob, st.st_size)) != 0 ||
120 (dontmax && (r = sshbuf_set_max_size(blob, st.st_size)) != 0))
121 return r;
110 for (;;) { 122 for (;;) {
111 if ((len = atomicio(read, fd, buf, sizeof(buf))) == 0) { 123 if ((len = atomicio(read, fd, buf, sizeof(buf))) == 0) {
112 if (errno == EPIPE) 124 if (errno == EPIPE)
diff --git a/buildpkg.sh.in b/buildpkg.sh.in
index 4b842b3f7..4ccc5f8d1 100644
--- a/buildpkg.sh.in
+++ b/buildpkg.sh.in
@@ -247,7 +247,7 @@ cat > pkginfo << _EOF
247PKG=$PKGNAME 247PKG=$PKGNAME
248NAME="OpenSSH Portable for ${UNAME_S}" 248NAME="OpenSSH Portable for ${UNAME_S}"
249DESC="Secure Shell remote access utility; replaces telnet and rlogin/rsh." 249DESC="Secure Shell remote access utility; replaces telnet and rlogin/rsh."
250VENDOR="OpenSSH Portable Team - http://www.openssh.com/portable.html" 250VENDOR="OpenSSH Portable Team - https://www.openssh.com/portable.html"
251ARCH=$ARCH 251ARCH=$ARCH
252VERSION=$VERSION$REV 252VERSION=$VERSION$REV
253CATEGORY="Security,application" 253CATEGORY="Security,application"
diff --git a/chacha.h b/chacha.h
index 40eaf2d90..762052565 100644
--- a/chacha.h
+++ b/chacha.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: chacha.h,v 1.3 2014/05/02 03:27:54 djm Exp $ */ 1/* $OpenBSD: chacha.h,v 1.4 2016/08/27 04:04:56 guenther Exp $ */
2 2
3/* 3/*
4chacha-merged.c version 20080118 4chacha-merged.c version 20080118
@@ -10,6 +10,7 @@ Public domain.
10#define CHACHA_H 10#define CHACHA_H
11 11
12#include <sys/types.h> 12#include <sys/types.h>
13#include <stdlib.h>
13 14
14struct chacha_ctx { 15struct chacha_ctx {
15 u_int input[16]; 16 u_int input[16];
diff --git a/channels.c b/channels.c
index 9f9e972f4..bef8ad6aa 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.c,v 1.351 2016/07/19 11:38:53 dtucker Exp $ */ 1/* $OpenBSD: channels.c,v 1.356 2016/10/18 17:32:54 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -42,7 +42,6 @@
42#include "includes.h" 42#include "includes.h"
43 43
44#include <sys/types.h> 44#include <sys/types.h>
45#include <sys/param.h> /* MIN MAX */
46#include <sys/stat.h> 45#include <sys/stat.h>
47#include <sys/ioctl.h> 46#include <sys/ioctl.h>
48#include <sys/un.h> 47#include <sys/un.h>
@@ -72,6 +71,7 @@
72#include "ssh.h" 71#include "ssh.h"
73#include "ssh1.h" 72#include "ssh1.h"
74#include "ssh2.h" 73#include "ssh2.h"
74#include "ssherr.h"
75#include "packet.h" 75#include "packet.h"
76#include "log.h" 76#include "log.h"
77#include "misc.h" 77#include "misc.h"
@@ -121,6 +121,7 @@ typedef struct {
121 char *listen_host; /* Remote side should listen address. */ 121 char *listen_host; /* Remote side should listen address. */
122 char *listen_path; /* Remote side should listen path. */ 122 char *listen_path; /* Remote side should listen path. */
123 int listen_port; /* Remote side should listen port. */ 123 int listen_port; /* Remote side should listen port. */
124 Channel *downstream; /* Downstream mux*/
124} ForwardPermission; 125} ForwardPermission;
125 126
126/* List of all permitted host/port pairs to connect by the user. */ 127/* List of all permitted host/port pairs to connect by the user. */
@@ -184,6 +185,7 @@ static int IPv4or6 = AF_UNSPEC;
184 185
185/* helper */ 186/* helper */
186static void port_open_helper(Channel *c, char *rtype); 187static void port_open_helper(Channel *c, char *rtype);
188static const char *channel_rfwd_bind_host(const char *listen_host);
187 189
188/* non-blocking connect helpers */ 190/* non-blocking connect helpers */
189static int connect_next(struct channel_connect *); 191static int connect_next(struct channel_connect *);
@@ -208,6 +210,20 @@ channel_by_id(int id)
208 return c; 210 return c;
209} 211}
210 212
213Channel *
214channel_by_remote_id(int remote_id)
215{
216 Channel *c;
217 u_int i;
218
219 for (i = 0; i < channels_alloc; i++) {
220 c = channels[i];
221 if (c != NULL && c->remote_id == remote_id)
222 return c;
223 }
224 return NULL;
225}
226
211/* 227/*
212 * Returns the channel if it is allowed to receive protocol messages. 228 * Returns the channel if it is allowed to receive protocol messages.
213 * Private channels, like listening sockets, may not receive messages. 229 * Private channels, like listening sockets, may not receive messages.
@@ -230,6 +246,7 @@ channel_lookup(int id)
230 case SSH_CHANNEL_INPUT_DRAINING: 246 case SSH_CHANNEL_INPUT_DRAINING:
231 case SSH_CHANNEL_OUTPUT_DRAINING: 247 case SSH_CHANNEL_OUTPUT_DRAINING:
232 case SSH_CHANNEL_ABANDONED: 248 case SSH_CHANNEL_ABANDONED:
249 case SSH_CHANNEL_MUX_PROXY:
233 return (c); 250 return (c);
234 } 251 }
235 logit("Non-public channel %d, type %d.", id, c->type); 252 logit("Non-public channel %d, type %d.", id, c->type);
@@ -245,9 +262,9 @@ channel_register_fds(Channel *c, int rfd, int wfd, int efd,
245 int extusage, int nonblock, int is_tty) 262 int extusage, int nonblock, int is_tty)
246{ 263{
247 /* Update the maximum file descriptor value. */ 264 /* Update the maximum file descriptor value. */
248 channel_max_fd = MAX(channel_max_fd, rfd); 265 channel_max_fd = MAXIMUM(channel_max_fd, rfd);
249 channel_max_fd = MAX(channel_max_fd, wfd); 266 channel_max_fd = MAXIMUM(channel_max_fd, wfd);
250 channel_max_fd = MAX(channel_max_fd, efd); 267 channel_max_fd = MAXIMUM(channel_max_fd, efd);
251 268
252 if (rfd != -1) 269 if (rfd != -1)
253 fcntl(rfd, F_SETFD, FD_CLOEXEC); 270 fcntl(rfd, F_SETFD, FD_CLOEXEC);
@@ -373,9 +390,9 @@ channel_find_maxfd(void)
373 for (i = 0; i < channels_alloc; i++) { 390 for (i = 0; i < channels_alloc; i++) {
374 c = channels[i]; 391 c = channels[i];
375 if (c != NULL) { 392 if (c != NULL) {
376 max = MAX(max, c->rfd); 393 max = MAXIMUM(max, c->rfd);
377 max = MAX(max, c->wfd); 394 max = MAXIMUM(max, c->wfd);
378 max = MAX(max, c->efd); 395 max = MAXIMUM(max, c->efd);
379 } 396 }
380 } 397 }
381 return max; 398 return max;
@@ -411,14 +428,56 @@ channel_free(Channel *c)
411{ 428{
412 char *s; 429 char *s;
413 u_int i, n; 430 u_int i, n;
431 Channel *other;
414 struct channel_confirm *cc; 432 struct channel_confirm *cc;
415 433
416 for (n = 0, i = 0; i < channels_alloc; i++) 434 for (n = 0, i = 0; i < channels_alloc; i++) {
417 if (channels[i]) 435 if ((other = channels[i]) != NULL) {
418 n++; 436 n++;
437
438 /* detach from mux client and prepare for closing */
439 if (c->type == SSH_CHANNEL_MUX_CLIENT &&
440 other->type == SSH_CHANNEL_MUX_PROXY &&
441 other->mux_ctx == c) {
442 other->mux_ctx = NULL;
443 other->type = SSH_CHANNEL_OPEN;
444 other->istate = CHAN_INPUT_CLOSED;
445 other->ostate = CHAN_OUTPUT_CLOSED;
446 }
447 }
448 }
419 debug("channel %d: free: %s, nchannels %u", c->self, 449 debug("channel %d: free: %s, nchannels %u", c->self,
420 c->remote_name ? c->remote_name : "???", n); 450 c->remote_name ? c->remote_name : "???", n);
421 451
452 /* XXX more MUX cleanup: remove remote forwardings */
453 if (c->type == SSH_CHANNEL_MUX_CLIENT) {
454 for (i = 0; i < (u_int)num_permitted_opens; i++) {
455 if (permitted_opens[i].downstream != c)
456 continue;
457 /* cancel on the server, since mux client is gone */
458 debug("channel %d: cleanup remote forward for %s:%u",
459 c->self,
460 permitted_opens[i].listen_host,
461 permitted_opens[i].listen_port);
462 packet_start(SSH2_MSG_GLOBAL_REQUEST);
463 packet_put_cstring("cancel-tcpip-forward");
464 packet_put_char(0);
465 packet_put_cstring(channel_rfwd_bind_host(
466 permitted_opens[i].listen_host));
467 packet_put_int(permitted_opens[i].listen_port);
468 packet_send();
469 /* unregister */
470 permitted_opens[i].listen_port = 0;
471 permitted_opens[i].port_to_connect = 0;
472 free(permitted_opens[i].host_to_connect);
473 permitted_opens[i].host_to_connect = NULL;
474 free(permitted_opens[i].listen_host);
475 permitted_opens[i].listen_host = NULL;
476 permitted_opens[i].listen_path = NULL;
477 permitted_opens[i].downstream = NULL;
478 }
479 }
480
422 s = channel_open_message(); 481 s = channel_open_message();
423 debug3("channel %d: status: %s", c->self, s); 482 debug3("channel %d: status: %s", c->self, s);
424 free(s); 483 free(s);
@@ -564,6 +623,7 @@ channel_still_open(void)
564 case SSH_CHANNEL_OPEN: 623 case SSH_CHANNEL_OPEN:
565 case SSH_CHANNEL_X11_OPEN: 624 case SSH_CHANNEL_X11_OPEN:
566 case SSH_CHANNEL_MUX_CLIENT: 625 case SSH_CHANNEL_MUX_CLIENT:
626 case SSH_CHANNEL_MUX_PROXY:
567 return 1; 627 return 1;
568 case SSH_CHANNEL_INPUT_DRAINING: 628 case SSH_CHANNEL_INPUT_DRAINING:
569 case SSH_CHANNEL_OUTPUT_DRAINING: 629 case SSH_CHANNEL_OUTPUT_DRAINING:
@@ -597,6 +657,7 @@ channel_find_open(void)
597 case SSH_CHANNEL_RPORT_LISTENER: 657 case SSH_CHANNEL_RPORT_LISTENER:
598 case SSH_CHANNEL_MUX_LISTENER: 658 case SSH_CHANNEL_MUX_LISTENER:
599 case SSH_CHANNEL_MUX_CLIENT: 659 case SSH_CHANNEL_MUX_CLIENT:
660 case SSH_CHANNEL_MUX_PROXY:
600 case SSH_CHANNEL_OPENING: 661 case SSH_CHANNEL_OPENING:
601 case SSH_CHANNEL_CONNECTING: 662 case SSH_CHANNEL_CONNECTING:
602 case SSH_CHANNEL_ZOMBIE: 663 case SSH_CHANNEL_ZOMBIE:
@@ -622,7 +683,6 @@ channel_find_open(void)
622 return -1; 683 return -1;
623} 684}
624 685
625
626/* 686/*
627 * Returns a message describing the currently open forwarded connections, 687 * Returns a message describing the currently open forwarded connections,
628 * suitable for sending to the client. The message contains crlf pairs for 688 * suitable for sending to the client. The message contains crlf pairs for
@@ -651,7 +711,6 @@ channel_open_message(void)
651 case SSH_CHANNEL_AUTH_SOCKET: 711 case SSH_CHANNEL_AUTH_SOCKET:
652 case SSH_CHANNEL_ZOMBIE: 712 case SSH_CHANNEL_ZOMBIE:
653 case SSH_CHANNEL_ABANDONED: 713 case SSH_CHANNEL_ABANDONED:
654 case SSH_CHANNEL_MUX_CLIENT:
655 case SSH_CHANNEL_MUX_LISTENER: 714 case SSH_CHANNEL_MUX_LISTENER:
656 case SSH_CHANNEL_UNIX_LISTENER: 715 case SSH_CHANNEL_UNIX_LISTENER:
657 case SSH_CHANNEL_RUNIX_LISTENER: 716 case SSH_CHANNEL_RUNIX_LISTENER:
@@ -664,6 +723,8 @@ channel_open_message(void)
664 case SSH_CHANNEL_X11_OPEN: 723 case SSH_CHANNEL_X11_OPEN:
665 case SSH_CHANNEL_INPUT_DRAINING: 724 case SSH_CHANNEL_INPUT_DRAINING:
666 case SSH_CHANNEL_OUTPUT_DRAINING: 725 case SSH_CHANNEL_OUTPUT_DRAINING:
726 case SSH_CHANNEL_MUX_PROXY:
727 case SSH_CHANNEL_MUX_CLIENT:
667 snprintf(buf, sizeof buf, 728 snprintf(buf, sizeof buf,
668 " #%d %.300s (t%d r%d i%u/%d o%u/%d fd %d/%d cc %d)\r\n", 729 " #%d %.300s (t%d r%d i%u/%d o%u/%d fd %d/%d cc %d)\r\n",
669 c->self, c->remote_name, 730 c->self, c->remote_name,
@@ -1898,7 +1959,7 @@ read_mux(Channel *c, u_int need)
1898 1959
1899 if (buffer_len(&c->input) < need) { 1960 if (buffer_len(&c->input) < need) {
1900 rlen = need - buffer_len(&c->input); 1961 rlen = need - buffer_len(&c->input);
1901 len = read(c->rfd, buf, MIN(rlen, CHAN_RBUF)); 1962 len = read(c->rfd, buf, MINIMUM(rlen, CHAN_RBUF));
1902 if (len < 0 && (errno == EINTR || errno == EAGAIN)) 1963 if (len < 0 && (errno == EINTR || errno == EAGAIN))
1903 return buffer_len(&c->input); 1964 return buffer_len(&c->input);
1904 if (len <= 0) { 1965 if (len <= 0) {
@@ -2201,7 +2262,7 @@ channel_prepare_select(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
2201{ 2262{
2202 u_int n, sz, nfdset; 2263 u_int n, sz, nfdset;
2203 2264
2204 n = MAX(*maxfdp, channel_max_fd); 2265 n = MAXIMUM(*maxfdp, channel_max_fd);
2205 2266
2206 nfdset = howmany(n+1, NFDBITS); 2267 nfdset = howmany(n+1, NFDBITS);
2207 /* Explicitly test here, because xrealloc isn't always called */ 2268 /* Explicitly test here, because xrealloc isn't always called */
@@ -2361,6 +2422,284 @@ channel_output_poll(void)
2361 } 2422 }
2362} 2423}
2363 2424
2425/* -- mux proxy support */
2426
2427/*
2428 * When multiplexing channel messages for mux clients we have to deal
2429 * with downstream messages from the mux client and upstream messages
2430 * from the ssh server:
2431 * 1) Handling downstream messages is straightforward and happens
2432 * in channel_proxy_downstream():
2433 * - We forward all messages (mostly) unmodified to the server.
2434 * - However, in order to route messages from upstream to the correct
2435 * downstream client, we have to replace the channel IDs used by the
2436 * mux clients with a unique channel ID because the mux clients might
2437 * use conflicting channel IDs.
2438 * - so we inspect and change both SSH2_MSG_CHANNEL_OPEN and
2439 * SSH2_MSG_CHANNEL_OPEN_CONFIRMATION messages, create a local
2440 * SSH_CHANNEL_MUX_PROXY channel and replace the mux clients ID
2441 * with the newly allocated channel ID.
2442 * 2) Upstream messages are received by matching SSH_CHANNEL_MUX_PROXY
2443 * channels and procesed by channel_proxy_upstream(). The local channel ID
2444 * is then translated back to the original mux client ID.
2445 * 3) In both cases we need to keep track of matching SSH2_MSG_CHANNEL_CLOSE
2446 * messages so we can clean up SSH_CHANNEL_MUX_PROXY channels.
2447 * 4) The SSH_CHANNEL_MUX_PROXY channels also need to closed when the
2448 * downstream mux client are removed.
2449 * 5) Handling SSH2_MSG_CHANNEL_OPEN messages from the upstream server
2450 * requires more work, because they are not addressed to a specific
2451 * channel. E.g. client_request_forwarded_tcpip() needs to figure
2452 * out whether the request is addressed to the local client or a
2453 * specific downstream client based on the listen-address/port.
2454 * 6) Agent and X11-Forwarding have a similar problem and are currenly
2455 * not supported as the matching session/channel cannot be identified
2456 * easily.
2457 */
2458
2459/*
2460 * receive packets from downstream mux clients:
2461 * channel callback fired on read from mux client, creates
2462 * SSH_CHANNEL_MUX_PROXY channels and translates channel IDs
2463 * on channel creation.
2464 */
2465int
2466channel_proxy_downstream(Channel *downstream)
2467{
2468 Channel *c = NULL;
2469 struct ssh *ssh = active_state;
2470 struct sshbuf *original = NULL, *modified = NULL;
2471 const u_char *cp;
2472 char *ctype = NULL, *listen_host = NULL;
2473 u_char type;
2474 size_t have;
2475 int ret = -1, r, idx;
2476 u_int id, remote_id, listen_port;
2477
2478 /* sshbuf_dump(&downstream->input, stderr); */
2479 if ((r = sshbuf_get_string_direct(&downstream->input, &cp, &have))
2480 != 0) {
2481 error("%s: malformed message: %s", __func__, ssh_err(r));
2482 return -1;
2483 }
2484 if (have < 2) {
2485 error("%s: short message", __func__);
2486 return -1;
2487 }
2488 type = cp[1];
2489 /* skip padlen + type */
2490 cp += 2;
2491 have -= 2;
2492 if (ssh_packet_log_type(type))
2493 debug3("%s: channel %u: down->up: type %u", __func__,
2494 downstream->self, type);
2495
2496 switch (type) {
2497 case SSH2_MSG_CHANNEL_OPEN:
2498 if ((original = sshbuf_from(cp, have)) == NULL ||
2499 (modified = sshbuf_new()) == NULL) {
2500 error("%s: alloc", __func__);
2501 goto out;
2502 }
2503 if ((r = sshbuf_get_cstring(original, &ctype, NULL)) != 0 ||
2504 (r = sshbuf_get_u32(original, &id)) != 0) {
2505 error("%s: parse error %s", __func__, ssh_err(r));
2506 goto out;
2507 }
2508 c = channel_new("mux proxy", SSH_CHANNEL_MUX_PROXY,
2509 -1, -1, -1, 0, 0, 0, ctype, 1);
2510 c->mux_ctx = downstream; /* point to mux client */
2511 c->mux_downstream_id = id; /* original downstream id */
2512 if ((r = sshbuf_put_cstring(modified, ctype)) != 0 ||
2513 (r = sshbuf_put_u32(modified, c->self)) != 0 ||
2514 (r = sshbuf_putb(modified, original)) != 0) {
2515 error("%s: compose error %s", __func__, ssh_err(r));
2516 channel_free(c);
2517 goto out;
2518 }
2519 break;
2520 case SSH2_MSG_CHANNEL_OPEN_CONFIRMATION:
2521 /*
2522 * Almost the same as SSH2_MSG_CHANNEL_OPEN, except then we
2523 * need to parse 'remote_id' instead of 'ctype'.
2524 */
2525 if ((original = sshbuf_from(cp, have)) == NULL ||
2526 (modified = sshbuf_new()) == NULL) {
2527 error("%s: alloc", __func__);
2528 goto out;
2529 }
2530 if ((r = sshbuf_get_u32(original, &remote_id)) != 0 ||
2531 (r = sshbuf_get_u32(original, &id)) != 0) {
2532 error("%s: parse error %s", __func__, ssh_err(r));
2533 goto out;
2534 }
2535 c = channel_new("mux proxy", SSH_CHANNEL_MUX_PROXY,
2536 -1, -1, -1, 0, 0, 0, "mux-down-connect", 1);
2537 c->mux_ctx = downstream; /* point to mux client */
2538 c->mux_downstream_id = id;
2539 c->remote_id = remote_id;
2540 if ((r = sshbuf_put_u32(modified, remote_id)) != 0 ||
2541 (r = sshbuf_put_u32(modified, c->self)) != 0 ||
2542 (r = sshbuf_putb(modified, original)) != 0) {
2543 error("%s: compose error %s", __func__, ssh_err(r));
2544 channel_free(c);
2545 goto out;
2546 }
2547 break;
2548 case SSH2_MSG_GLOBAL_REQUEST:
2549 if ((original = sshbuf_from(cp, have)) == NULL) {
2550 error("%s: alloc", __func__);
2551 goto out;
2552 }
2553 if ((r = sshbuf_get_cstring(original, &ctype, NULL)) != 0) {
2554 error("%s: parse error %s", __func__, ssh_err(r));
2555 goto out;
2556 }
2557 if (strcmp(ctype, "tcpip-forward") != 0) {
2558 error("%s: unsupported request %s", __func__, ctype);
2559 goto out;
2560 }
2561 if ((r = sshbuf_get_u8(original, NULL)) != 0 ||
2562 (r = sshbuf_get_cstring(original, &listen_host, NULL)) != 0 ||
2563 (r = sshbuf_get_u32(original, &listen_port)) != 0) {
2564 error("%s: parse error %s", __func__, ssh_err(r));
2565 goto out;
2566 }
2567 if (listen_port > 65535) {
2568 error("%s: tcpip-forward for %s: bad port %u",
2569 __func__, listen_host, listen_port);
2570 goto out;
2571 }
2572 /* Record that connection to this host/port is permitted. */
2573 permitted_opens = xreallocarray(permitted_opens,
2574 num_permitted_opens + 1, sizeof(*permitted_opens));
2575 idx = num_permitted_opens++;
2576 permitted_opens[idx].host_to_connect = xstrdup("<mux>");
2577 permitted_opens[idx].port_to_connect = -1;
2578 permitted_opens[idx].listen_host = listen_host;
2579 permitted_opens[idx].listen_port = (int)listen_port;
2580 permitted_opens[idx].downstream = downstream;
2581 listen_host = NULL;
2582 break;
2583 case SSH2_MSG_CHANNEL_CLOSE:
2584 if (have < 4)
2585 break;
2586 remote_id = PEEK_U32(cp);
2587 if ((c = channel_by_remote_id(remote_id)) != NULL) {
2588 if (c->flags & CHAN_CLOSE_RCVD)
2589 channel_free(c);
2590 else
2591 c->flags |= CHAN_CLOSE_SENT;
2592 }
2593 break;
2594 }
2595 if (modified) {
2596 if ((r = sshpkt_start(ssh, type)) != 0 ||
2597 (r = sshpkt_putb(ssh, modified)) != 0 ||
2598 (r = sshpkt_send(ssh)) != 0) {
2599 error("%s: send %s", __func__, ssh_err(r));
2600 goto out;
2601 }
2602 } else {
2603 if ((r = sshpkt_start(ssh, type)) != 0 ||
2604 (r = sshpkt_put(ssh, cp, have)) != 0 ||
2605 (r = sshpkt_send(ssh)) != 0) {
2606 error("%s: send %s", __func__, ssh_err(r));
2607 goto out;
2608 }
2609 }
2610 ret = 0;
2611 out:
2612 free(ctype);
2613 free(listen_host);
2614 sshbuf_free(original);
2615 sshbuf_free(modified);
2616 return ret;
2617}
2618
2619/*
2620 * receive packets from upstream server and de-multiplex packets
2621 * to correct downstream:
2622 * implemented as a helper for channel input handlers,
2623 * replaces local (proxy) channel ID with downstream channel ID.
2624 */
2625int
2626channel_proxy_upstream(Channel *c, int type, u_int32_t seq, void *ctxt)
2627{
2628 struct ssh *ssh = active_state;
2629 struct sshbuf *b = NULL;
2630 Channel *downstream;
2631 const u_char *cp = NULL;
2632 size_t len;
2633 int r;
2634
2635 /*
2636 * When receiving packets from the peer we need to check whether we
2637 * need to forward the packets to the mux client. In this case we
2638 * restore the orignal channel id and keep track of CLOSE messages,
2639 * so we can cleanup the channel.
2640 */
2641 if (c == NULL || c->type != SSH_CHANNEL_MUX_PROXY)
2642 return 0;
2643 if ((downstream = c->mux_ctx) == NULL)
2644 return 0;
2645 switch (type) {
2646 case SSH2_MSG_CHANNEL_CLOSE:
2647 case SSH2_MSG_CHANNEL_DATA:
2648 case SSH2_MSG_CHANNEL_EOF:
2649 case SSH2_MSG_CHANNEL_EXTENDED_DATA:
2650 case SSH2_MSG_CHANNEL_OPEN_CONFIRMATION:
2651 case SSH2_MSG_CHANNEL_OPEN_FAILURE:
2652 case SSH2_MSG_CHANNEL_WINDOW_ADJUST:
2653 case SSH2_MSG_CHANNEL_SUCCESS:
2654 case SSH2_MSG_CHANNEL_FAILURE:
2655 case SSH2_MSG_CHANNEL_REQUEST:
2656 break;
2657 default:
2658 debug2("%s: channel %u: unsupported type %u", __func__,
2659 c->self, type);
2660 return 0;
2661 }
2662 if ((b = sshbuf_new()) == NULL) {
2663 error("%s: alloc reply", __func__);
2664 goto out;
2665 }
2666 /* get remaining payload (after id) */
2667 cp = sshpkt_ptr(ssh, &len);
2668 if (cp == NULL) {
2669 error("%s: no packet", __func__);
2670 goto out;
2671 }
2672 /* translate id and send to muxclient */
2673 if ((r = sshbuf_put_u8(b, 0)) != 0 || /* padlen */
2674 (r = sshbuf_put_u8(b, type)) != 0 ||
2675 (r = sshbuf_put_u32(b, c->mux_downstream_id)) != 0 ||
2676 (r = sshbuf_put(b, cp, len)) != 0 ||
2677 (r = sshbuf_put_stringb(&downstream->output, b)) != 0) {
2678 error("%s: compose for muxclient %s", __func__, ssh_err(r));
2679 goto out;
2680 }
2681 /* sshbuf_dump(b, stderr); */
2682 if (ssh_packet_log_type(type))
2683 debug3("%s: channel %u: up->down: type %u", __func__, c->self,
2684 type);
2685 out:
2686 /* update state */
2687 switch (type) {
2688 case SSH2_MSG_CHANNEL_OPEN_CONFIRMATION:
2689 /* record remote_id for SSH2_MSG_CHANNEL_CLOSE */
2690 if (cp && len > 4)
2691 c->remote_id = PEEK_U32(cp);
2692 break;
2693 case SSH2_MSG_CHANNEL_CLOSE:
2694 if (c->flags & CHAN_CLOSE_SENT)
2695 channel_free(c);
2696 else
2697 c->flags |= CHAN_CLOSE_RCVD;
2698 break;
2699 }
2700 sshbuf_free(b);
2701 return 1;
2702}
2364 2703
2365/* -- protocol input */ 2704/* -- protocol input */
2366 2705
@@ -2378,6 +2717,8 @@ channel_input_data(int type, u_int32_t seq, void *ctxt)
2378 c = channel_lookup(id); 2717 c = channel_lookup(id);
2379 if (c == NULL) 2718 if (c == NULL)
2380 packet_disconnect("Received data for nonexistent channel %d.", id); 2719 packet_disconnect("Received data for nonexistent channel %d.", id);
2720 if (channel_proxy_upstream(c, type, seq, ctxt))
2721 return 0;
2381 2722
2382 /* Ignore any data for non-open channels (might happen on close) */ 2723 /* Ignore any data for non-open channels (might happen on close) */
2383 if (c->type != SSH_CHANNEL_OPEN && 2724 if (c->type != SSH_CHANNEL_OPEN &&
@@ -2440,6 +2781,8 @@ channel_input_extended_data(int type, u_int32_t seq, void *ctxt)
2440 2781
2441 if (c == NULL) 2782 if (c == NULL)
2442 packet_disconnect("Received extended_data for bad channel %d.", id); 2783 packet_disconnect("Received extended_data for bad channel %d.", id);
2784 if (channel_proxy_upstream(c, type, seq, ctxt))
2785 return 0;
2443 if (c->type != SSH_CHANNEL_OPEN) { 2786 if (c->type != SSH_CHANNEL_OPEN) {
2444 logit("channel %d: ext data for non open", id); 2787 logit("channel %d: ext data for non open", id);
2445 return 0; 2788 return 0;
@@ -2485,6 +2828,8 @@ channel_input_ieof(int type, u_int32_t seq, void *ctxt)
2485 c = channel_lookup(id); 2828 c = channel_lookup(id);
2486 if (c == NULL) 2829 if (c == NULL)
2487 packet_disconnect("Received ieof for nonexistent channel %d.", id); 2830 packet_disconnect("Received ieof for nonexistent channel %d.", id);
2831 if (channel_proxy_upstream(c, type, seq, ctxt))
2832 return 0;
2488 chan_rcvd_ieof(c); 2833 chan_rcvd_ieof(c);
2489 2834
2490 /* XXX force input close */ 2835 /* XXX force input close */
@@ -2509,7 +2854,8 @@ channel_input_close(int type, u_int32_t seq, void *ctxt)
2509 c = channel_lookup(id); 2854 c = channel_lookup(id);
2510 if (c == NULL) 2855 if (c == NULL)
2511 packet_disconnect("Received close for nonexistent channel %d.", id); 2856 packet_disconnect("Received close for nonexistent channel %d.", id);
2512 2857 if (channel_proxy_upstream(c, type, seq, ctxt))
2858 return 0;
2513 /* 2859 /*
2514 * Send a confirmation that we have closed the channel and no more 2860 * Send a confirmation that we have closed the channel and no more
2515 * data is coming for it. 2861 * data is coming for it.
@@ -2544,9 +2890,11 @@ channel_input_oclose(int type, u_int32_t seq, void *ctxt)
2544 int id = packet_get_int(); 2890 int id = packet_get_int();
2545 Channel *c = channel_lookup(id); 2891 Channel *c = channel_lookup(id);
2546 2892
2547 packet_check_eom();
2548 if (c == NULL) 2893 if (c == NULL)
2549 packet_disconnect("Received oclose for nonexistent channel %d.", id); 2894 packet_disconnect("Received oclose for nonexistent channel %d.", id);
2895 if (channel_proxy_upstream(c, type, seq, ctxt))
2896 return 0;
2897 packet_check_eom();
2550 chan_rcvd_oclose(c); 2898 chan_rcvd_oclose(c);
2551 return 0; 2899 return 0;
2552} 2900}
@@ -2558,10 +2906,12 @@ channel_input_close_confirmation(int type, u_int32_t seq, void *ctxt)
2558 int id = packet_get_int(); 2906 int id = packet_get_int();
2559 Channel *c = channel_lookup(id); 2907 Channel *c = channel_lookup(id);
2560 2908
2561 packet_check_eom();
2562 if (c == NULL) 2909 if (c == NULL)
2563 packet_disconnect("Received close confirmation for " 2910 packet_disconnect("Received close confirmation for "
2564 "out-of-range channel %d.", id); 2911 "out-of-range channel %d.", id);
2912 if (channel_proxy_upstream(c, type, seq, ctxt))
2913 return 0;
2914 packet_check_eom();
2565 if (c->type != SSH_CHANNEL_CLOSED && c->type != SSH_CHANNEL_ABANDONED) 2915 if (c->type != SSH_CHANNEL_CLOSED && c->type != SSH_CHANNEL_ABANDONED)
2566 packet_disconnect("Received close confirmation for " 2916 packet_disconnect("Received close confirmation for "
2567 "non-closed channel %d (type %d).", id, c->type); 2917 "non-closed channel %d (type %d).", id, c->type);
@@ -2579,7 +2929,12 @@ channel_input_open_confirmation(int type, u_int32_t seq, void *ctxt)
2579 id = packet_get_int(); 2929 id = packet_get_int();
2580 c = channel_lookup(id); 2930 c = channel_lookup(id);
2581 2931
2582 if (c==NULL || c->type != SSH_CHANNEL_OPENING) 2932 if (c==NULL)
2933 packet_disconnect("Received open confirmation for "
2934 "unknown channel %d.", id);
2935 if (channel_proxy_upstream(c, type, seq, ctxt))
2936 return 0;
2937 if (c->type != SSH_CHANNEL_OPENING)
2583 packet_disconnect("Received open confirmation for " 2938 packet_disconnect("Received open confirmation for "
2584 "non-opening channel %d.", id); 2939 "non-opening channel %d.", id);
2585 remote_id = packet_get_int(); 2940 remote_id = packet_get_int();
@@ -2629,7 +2984,12 @@ channel_input_open_failure(int type, u_int32_t seq, void *ctxt)
2629 id = packet_get_int(); 2984 id = packet_get_int();
2630 c = channel_lookup(id); 2985 c = channel_lookup(id);
2631 2986
2632 if (c==NULL || c->type != SSH_CHANNEL_OPENING) 2987 if (c==NULL)
2988 packet_disconnect("Received open failure for "
2989 "unknown channel %d.", id);
2990 if (channel_proxy_upstream(c, type, seq, ctxt))
2991 return 0;
2992 if (c->type != SSH_CHANNEL_OPENING)
2633 packet_disconnect("Received open failure for " 2993 packet_disconnect("Received open failure for "
2634 "non-opening channel %d.", id); 2994 "non-opening channel %d.", id);
2635 if (compat20) { 2995 if (compat20) {
@@ -2673,6 +3033,8 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
2673 logit("Received window adjust for non-open channel %d.", id); 3033 logit("Received window adjust for non-open channel %d.", id);
2674 return 0; 3034 return 0;
2675 } 3035 }
3036 if (channel_proxy_upstream(c, type, seq, ctxt))
3037 return 0;
2676 adjust = packet_get_int(); 3038 adjust = packet_get_int();
2677 packet_check_eom(); 3039 packet_check_eom();
2678 debug2("channel %d: rcvd adjust %u", id, adjust); 3040 debug2("channel %d: rcvd adjust %u", id, adjust);
@@ -2727,14 +3089,15 @@ channel_input_status_confirm(int type, u_int32_t seq, void *ctxt)
2727 packet_set_alive_timeouts(0); 3089 packet_set_alive_timeouts(0);
2728 3090
2729 id = packet_get_int(); 3091 id = packet_get_int();
2730 packet_check_eom();
2731
2732 debug2("channel_input_status_confirm: type %d id %d", type, id); 3092 debug2("channel_input_status_confirm: type %d id %d", type, id);
2733 3093
2734 if ((c = channel_lookup(id)) == NULL) { 3094 if ((c = channel_lookup(id)) == NULL) {
2735 logit("channel_input_status_confirm: %d: unknown", id); 3095 logit("channel_input_status_confirm: %d: unknown", id);
2736 return 0; 3096 return 0;
2737 } 3097 }
3098 if (channel_proxy_upstream(c, type, seq, ctxt))
3099 return 0;
3100 packet_check_eom();
2738 if ((cc = TAILQ_FIRST(&c->status_confirms)) == NULL) 3101 if ((cc = TAILQ_FIRST(&c->status_confirms)) == NULL)
2739 return 0; 3102 return 0;
2740 cc->cb(type, c, cc->ctx); 3103 cc->cb(type, c, cc->ctx);
@@ -3288,6 +3651,7 @@ channel_request_remote_forwarding(struct Forward *fwd)
3288 permitted_opens[idx].listen_path = NULL; 3651 permitted_opens[idx].listen_path = NULL;
3289 permitted_opens[idx].listen_port = fwd->listen_port; 3652 permitted_opens[idx].listen_port = fwd->listen_port;
3290 } 3653 }
3654 permitted_opens[idx].downstream = NULL;
3291 } 3655 }
3292 return (idx); 3656 return (idx);
3293} 3657}
@@ -3383,6 +3747,7 @@ channel_request_rforward_cancel_tcpip(const char *host, u_short port)
3383 free(permitted_opens[i].listen_host); 3747 free(permitted_opens[i].listen_host);
3384 permitted_opens[i].listen_host = NULL; 3748 permitted_opens[i].listen_host = NULL;
3385 permitted_opens[i].listen_path = NULL; 3749 permitted_opens[i].listen_path = NULL;
3750 permitted_opens[i].downstream = NULL;
3386 3751
3387 return 0; 3752 return 0;
3388} 3753}
@@ -3420,6 +3785,7 @@ channel_request_rforward_cancel_streamlocal(const char *path)
3420 permitted_opens[i].listen_host = NULL; 3785 permitted_opens[i].listen_host = NULL;
3421 free(permitted_opens[i].listen_path); 3786 free(permitted_opens[i].listen_path);
3422 permitted_opens[i].listen_path = NULL; 3787 permitted_opens[i].listen_path = NULL;
3788 permitted_opens[i].downstream = NULL;
3423 3789
3424 return 0; 3790 return 0;
3425} 3791}
@@ -3440,45 +3806,6 @@ channel_request_rforward_cancel(struct Forward *fwd)
3440} 3806}
3441 3807
3442/* 3808/*
3443 * This is called after receiving CHANNEL_FORWARDING_REQUEST. This initates
3444 * listening for the port, and sends back a success reply (or disconnect
3445 * message if there was an error).
3446 */
3447int
3448channel_input_port_forward_request(int is_root, struct ForwardOptions *fwd_opts)
3449{
3450 int success = 0;
3451 struct Forward fwd;
3452
3453 /* Get arguments from the packet. */
3454 memset(&fwd, 0, sizeof(fwd));
3455 fwd.listen_port = packet_get_int();
3456 fwd.connect_host = packet_get_string(NULL);
3457 fwd.connect_port = packet_get_int();
3458
3459#ifndef HAVE_CYGWIN
3460 /*
3461 * Check that an unprivileged user is not trying to forward a
3462 * privileged port.
3463 */
3464 if (fwd.listen_port < IPPORT_RESERVED && !is_root)
3465 packet_disconnect(
3466 "Requested forwarding of port %d but user is not root.",
3467 fwd.listen_port);
3468 if (fwd.connect_port == 0)
3469 packet_disconnect("Dynamic forwarding denied.");
3470#endif
3471
3472 /* Initiate forwarding */
3473 success = channel_setup_local_fwd_listener(&fwd, fwd_opts);
3474
3475 /* Free the argument string. */
3476 free(fwd.connect_host);
3477
3478 return (success ? 0 : -1);
3479}
3480
3481/*
3482 * Permits opening to any host/port if permitted_opens[] is empty. This is 3809 * Permits opening to any host/port if permitted_opens[] is empty. This is
3483 * usually called by the server, because the user could connect to any port 3810 * usually called by the server, because the user could connect to any port
3484 * anyway, and the server has no way to know but to trust the client anyway. 3811 * anyway, and the server has no way to know but to trust the client anyway.
@@ -3502,6 +3829,7 @@ channel_add_permitted_opens(char *host, int port)
3502 permitted_opens[num_permitted_opens].listen_host = NULL; 3829 permitted_opens[num_permitted_opens].listen_host = NULL;
3503 permitted_opens[num_permitted_opens].listen_path = NULL; 3830 permitted_opens[num_permitted_opens].listen_path = NULL;
3504 permitted_opens[num_permitted_opens].listen_port = 0; 3831 permitted_opens[num_permitted_opens].listen_port = 0;
3832 permitted_opens[num_permitted_opens].downstream = NULL;
3505 num_permitted_opens++; 3833 num_permitted_opens++;
3506 3834
3507 all_opens_permitted = 0; 3835 all_opens_permitted = 0;
@@ -3633,7 +3961,7 @@ connect_next(struct channel_connect *cctx)
3633{ 3961{
3634 int sock, saved_errno; 3962 int sock, saved_errno;
3635 struct sockaddr_un *sunaddr; 3963 struct sockaddr_un *sunaddr;
3636 char ntop[NI_MAXHOST], strport[MAX(NI_MAXSERV,sizeof(sunaddr->sun_path))]; 3964 char ntop[NI_MAXHOST], strport[MAXIMUM(NI_MAXSERV,sizeof(sunaddr->sun_path))];
3637 3965
3638 for (; cctx->ai; cctx->ai = cctx->ai->ai_next) { 3966 for (; cctx->ai; cctx->ai = cctx->ai->ai_next) {
3639 switch (cctx->ai->ai_family) { 3967 switch (cctx->ai->ai_family) {
@@ -3764,6 +4092,10 @@ connect_to(const char *name, int port, char *ctype, char *rname)
3764 return c; 4092 return c;
3765} 4093}
3766 4094
4095/*
4096 * returns either the newly connected channel or the downstream channel
4097 * that needs to deal with this connection.
4098 */
3767Channel * 4099Channel *
3768channel_connect_by_listen_address(const char *listen_host, 4100channel_connect_by_listen_address(const char *listen_host,
3769 u_short listen_port, char *ctype, char *rname) 4101 u_short listen_port, char *ctype, char *rname)
@@ -3773,6 +4105,8 @@ channel_connect_by_listen_address(const char *listen_host,
3773 for (i = 0; i < num_permitted_opens; i++) { 4105 for (i = 0; i < num_permitted_opens; i++) {
3774 if (open_listen_match_tcpip(&permitted_opens[i], listen_host, 4106 if (open_listen_match_tcpip(&permitted_opens[i], listen_host,
3775 listen_port, 1)) { 4107 listen_port, 1)) {
4108 if (permitted_opens[i].downstream)
4109 return permitted_opens[i].downstream;
3776 return connect_to( 4110 return connect_to(
3777 permitted_opens[i].host_to_connect, 4111 permitted_opens[i].host_to_connect,
3778 permitted_opens[i].port_to_connect, ctype, rname); 4112 permitted_opens[i].port_to_connect, ctype, rname);
@@ -4216,7 +4550,6 @@ x11_request_forwarding_with_spoofing(int client_session_id, const char *disp,
4216 char *new_data; 4550 char *new_data;
4217 int screen_number; 4551 int screen_number;
4218 const char *cp; 4552 const char *cp;
4219 u_int32_t rnd = 0;
4220 4553
4221 if (x11_saved_display == NULL) 4554 if (x11_saved_display == NULL)
4222 x11_saved_display = xstrdup(disp); 4555 x11_saved_display = xstrdup(disp);
@@ -4237,23 +4570,20 @@ x11_request_forwarding_with_spoofing(int client_session_id, const char *disp,
4237 if (x11_saved_proto == NULL) { 4570 if (x11_saved_proto == NULL) {
4238 /* Save protocol name. */ 4571 /* Save protocol name. */
4239 x11_saved_proto = xstrdup(proto); 4572 x11_saved_proto = xstrdup(proto);
4240 /* 4573
4241 * Extract real authentication data and generate fake data 4574 /* Extract real authentication data. */
4242 * of the same length.
4243 */
4244 x11_saved_data = xmalloc(data_len); 4575 x11_saved_data = xmalloc(data_len);
4245 x11_fake_data = xmalloc(data_len);
4246 for (i = 0; i < data_len; i++) { 4576 for (i = 0; i < data_len; i++) {
4247 if (sscanf(data + 2 * i, "%2x", &value) != 1) 4577 if (sscanf(data + 2 * i, "%2x", &value) != 1)
4248 fatal("x11_request_forwarding: bad " 4578 fatal("x11_request_forwarding: bad "
4249 "authentication data: %.100s", data); 4579 "authentication data: %.100s", data);
4250 if (i % 4 == 0)
4251 rnd = arc4random();
4252 x11_saved_data[i] = value; 4580 x11_saved_data[i] = value;
4253 x11_fake_data[i] = rnd & 0xff;
4254 rnd >>= 8;
4255 } 4581 }
4256 x11_saved_data_len = data_len; 4582 x11_saved_data_len = data_len;
4583
4584 /* Generate fake data of the same length. */
4585 x11_fake_data = xmalloc(data_len);
4586 arc4random_buf(x11_fake_data, data_len);
4257 x11_fake_data_len = data_len; 4587 x11_fake_data_len = data_len;
4258 } 4588 }
4259 4589
diff --git a/channels.h b/channels.h
index 9d76c9d2a..09c3c3655 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.h,v 1.118 2015/07/01 02:26:31 djm Exp $ */ 1/* $OpenBSD: channels.h,v 1.120 2016/10/18 17:32:54 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -58,7 +58,8 @@
58#define SSH_CHANNEL_ABANDONED 17 /* Abandoned session, eg mux */ 58#define SSH_CHANNEL_ABANDONED 17 /* Abandoned session, eg mux */
59#define SSH_CHANNEL_UNIX_LISTENER 18 /* Listening on a domain socket. */ 59#define SSH_CHANNEL_UNIX_LISTENER 18 /* Listening on a domain socket. */
60#define SSH_CHANNEL_RUNIX_LISTENER 19 /* Listening to a R-style domain socket. */ 60#define SSH_CHANNEL_RUNIX_LISTENER 19 /* Listening to a R-style domain socket. */
61#define SSH_CHANNEL_MAX_TYPE 20 61#define SSH_CHANNEL_MUX_PROXY 20 /* proxy channel for mux-slave */
62#define SSH_CHANNEL_MAX_TYPE 21
62 63
63#define CHANNEL_CANCEL_PORT_STATIC -1 64#define CHANNEL_CANCEL_PORT_STATIC -1
64 65
@@ -162,6 +163,7 @@ struct Channel {
162 mux_callback_fn *mux_rcb; 163 mux_callback_fn *mux_rcb;
163 void *mux_ctx; 164 void *mux_ctx;
164 int mux_pause; 165 int mux_pause;
166 int mux_downstream_id;
165}; 167};
166 168
167#define CHAN_EXTENDED_IGNORE 0 169#define CHAN_EXTENDED_IGNORE 0
@@ -209,6 +211,7 @@ struct Channel {
209/* channel management */ 211/* channel management */
210 212
211Channel *channel_by_id(int); 213Channel *channel_by_id(int);
214Channel *channel_by_remote_id(int);
212Channel *channel_lookup(int); 215Channel *channel_lookup(int);
213Channel *channel_new(char *, int, int, int, int, u_int, u_int, int, char *, int); 216Channel *channel_new(char *, int, int, int, int, u_int, u_int, int, char *, int);
214void channel_set_fds(int, int, int, int, int, int, int, u_int); 217void channel_set_fds(int, int, int, int, int, int, int, u_int);
@@ -228,6 +231,11 @@ void channel_cancel_cleanup(int);
228int channel_close_fd(int *); 231int channel_close_fd(int *);
229void channel_send_window_changes(void); 232void channel_send_window_changes(void);
230 233
234/* mux proxy support */
235
236int channel_proxy_downstream(Channel *mc);
237int channel_proxy_upstream(Channel *, int, u_int32_t, void *);
238
231/* protocol handler */ 239/* protocol handler */
232 240
233int channel_input_close(int, u_int32_t, void *); 241int channel_input_close(int, u_int32_t, void *);
@@ -267,7 +275,6 @@ void channel_update_permitted_opens(int, int);
267void channel_clear_permitted_opens(void); 275void channel_clear_permitted_opens(void);
268void channel_clear_adm_permitted_opens(void); 276void channel_clear_adm_permitted_opens(void);
269void channel_print_adm_permitted_opens(void); 277void channel_print_adm_permitted_opens(void);
270int channel_input_port_forward_request(int, struct ForwardOptions *);
271Channel *channel_connect_to_port(const char *, u_short, char *, char *); 278Channel *channel_connect_to_port(const char *, u_short, char *, char *);
272Channel *channel_connect_to_path(const char *, char *, char *); 279Channel *channel_connect_to_path(const char *, char *, char *);
273Channel *channel_connect_stdio_fwd(const char*, u_short, int, int); 280Channel *channel_connect_stdio_fwd(const char*, u_short, int, int);
diff --git a/cipher-3des1.c b/cipher-3des1.c
index 6a0f1f37b..9fcc2785a 100644
--- a/cipher-3des1.c
+++ b/cipher-3des1.c
@@ -20,6 +20,8 @@
20 20
21#include "includes.h" 21#include "includes.h"
22 22
23#ifdef WITH_SSH1
24
23#include <sys/types.h> 25#include <sys/types.h>
24#include <string.h> 26#include <string.h>
25#include <openssl/evp.h> 27#include <openssl/evp.h>
@@ -153,3 +155,4 @@ evp_ssh1_3des(void)
153 ssh1_3des.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH; 155 ssh1_3des.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH;
154 return &ssh1_3des; 156 return &ssh1_3des;
155} 157}
158#endif /* WITH_SSH1 */
diff --git a/cipher-bf1.c b/cipher-bf1.c
index 7d51f5198..c205b077c 100644
--- a/cipher-bf1.c
+++ b/cipher-bf1.c
@@ -20,6 +20,7 @@
20 20
21#include "includes.h" 21#include "includes.h"
22 22
23#ifdef WITH_SSH1
23#if defined(WITH_OPENSSL) && !defined(OPENSSL_NO_BF) 24#if defined(WITH_OPENSSL) && !defined(OPENSSL_NO_BF)
24 25
25#include <sys/types.h> 26#include <sys/types.h>
@@ -101,3 +102,5 @@ evp_ssh1_bf(void)
101 return (&ssh1_bf); 102 return (&ssh1_bf);
102} 103}
103#endif /* defined(WITH_OPENSSL) && !defined(OPENSSL_NO_BF) */ 104#endif /* defined(WITH_OPENSSL) && !defined(OPENSSL_NO_BF) */
105
106#endif /* WITH_SSH1 */
diff --git a/cipher-chachapoly.c b/cipher-chachapoly.c
index 7f31ff4ce..0899c5ad5 100644
--- a/cipher-chachapoly.c
+++ b/cipher-chachapoly.c
@@ -14,7 +14,7 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17/* $OpenBSD: cipher-chachapoly.c,v 1.7 2015/01/14 10:24:42 markus Exp $ */ 17/* $OpenBSD: cipher-chachapoly.c,v 1.8 2016/08/03 05:41:57 djm Exp $ */
18 18
19#include "includes.h" 19#include "includes.h"
20 20
@@ -28,7 +28,8 @@
28#include "ssherr.h" 28#include "ssherr.h"
29#include "cipher-chachapoly.h" 29#include "cipher-chachapoly.h"
30 30
31int chachapoly_init(struct chachapoly_ctx *ctx, 31int
32chachapoly_init(struct chachapoly_ctx *ctx,
32 const u_char *key, u_int keylen) 33 const u_char *key, u_int keylen)
33{ 34{
34 if (keylen != (32 + 32)) /* 2 x 256 bit keys */ 35 if (keylen != (32 + 32)) /* 2 x 256 bit keys */
diff --git a/cipher.c b/cipher.c
index 031bda9ec..2def333b1 100644
--- a/cipher.c
+++ b/cipher.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: cipher.c,v 1.101 2015/12/10 17:08:40 mmcc Exp $ */ 1/* $OpenBSD: cipher.c,v 1.102 2016/08/03 05:41:57 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -57,6 +57,15 @@ extern const EVP_CIPHER *evp_ssh1_3des(void);
57extern int ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int); 57extern int ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int);
58#endif 58#endif
59 59
60struct sshcipher_ctx {
61 int plaintext;
62 int encrypt;
63 EVP_CIPHER_CTX *evp;
64 struct chachapoly_ctx cp_ctx; /* XXX union with evp? */
65 struct aesctr_ctx ac_ctx; /* XXX union with evp? */
66 const struct sshcipher *cipher;
67};
68
60struct sshcipher { 69struct sshcipher {
61 char *name; 70 char *name;
62 int number; /* for ssh1 only */ 71 int number; /* for ssh1 only */
@@ -206,6 +215,18 @@ cipher_is_cbc(const struct sshcipher *c)
206} 215}
207 216
208u_int 217u_int
218cipher_ctx_is_plaintext(struct sshcipher_ctx *cc)
219{
220 return cc->plaintext;
221}
222
223u_int
224cipher_ctx_get_number(struct sshcipher_ctx *cc)
225{
226 return cc->cipher->number;
227}
228
229u_int
209cipher_mask_ssh1(int client) 230cipher_mask_ssh1(int client)
210{ 231{
211 u_int mask = 0; 232 u_int mask = 0;
@@ -297,65 +318,81 @@ cipher_warning_message(const struct sshcipher_ctx *cc)
297} 318}
298 319
299int 320int
300cipher_init(struct sshcipher_ctx *cc, const struct sshcipher *cipher, 321cipher_init(struct sshcipher_ctx **ccp, const struct sshcipher *cipher,
301 const u_char *key, u_int keylen, const u_char *iv, u_int ivlen, 322 const u_char *key, u_int keylen, const u_char *iv, u_int ivlen,
302 int do_encrypt) 323 int do_encrypt)
303{ 324{
304#ifdef WITH_OPENSSL 325 struct sshcipher_ctx *cc = NULL;
305 int ret = SSH_ERR_INTERNAL_ERROR; 326 int ret = SSH_ERR_INTERNAL_ERROR;
327#ifdef WITH_OPENSSL
306 const EVP_CIPHER *type; 328 const EVP_CIPHER *type;
307 int klen; 329 int klen;
308 u_char *junk, *discard; 330 u_char *junk, *discard;
331#endif
332
333 *ccp = NULL;
334 if ((cc = calloc(sizeof(*cc), 1)) == NULL)
335 return SSH_ERR_ALLOC_FAIL;
309 336
310 if (cipher->number == SSH_CIPHER_DES) { 337 if (cipher->number == SSH_CIPHER_DES) {
311 if (keylen > 8) 338 if (keylen > 8)
312 keylen = 8; 339 keylen = 8;
313 } 340 }
314#endif 341
315 cc->plaintext = (cipher->number == SSH_CIPHER_NONE); 342 cc->plaintext = (cipher->number == SSH_CIPHER_NONE);
316 cc->encrypt = do_encrypt; 343 cc->encrypt = do_encrypt;
317 344
318 if (keylen < cipher->key_len || 345 if (keylen < cipher->key_len ||
319 (iv != NULL && ivlen < cipher_ivlen(cipher))) 346 (iv != NULL && ivlen < cipher_ivlen(cipher))) {
320 return SSH_ERR_INVALID_ARGUMENT; 347 ret = SSH_ERR_INVALID_ARGUMENT;
348 goto out;
349 }
321 350
322 cc->cipher = cipher; 351 cc->cipher = cipher;
323 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { 352 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) {
324 return chachapoly_init(&cc->cp_ctx, key, keylen); 353 ret = chachapoly_init(&cc->cp_ctx, key, keylen);
354 goto out;
325 } 355 }
326#ifndef WITH_OPENSSL 356#ifndef WITH_OPENSSL
327 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) { 357 if ((cc->cipher->flags & CFLAG_AESCTR) != 0) {
328 aesctr_keysetup(&cc->ac_ctx, key, 8 * keylen, 8 * ivlen); 358 aesctr_keysetup(&cc->ac_ctx, key, 8 * keylen, 8 * ivlen);
329 aesctr_ivsetup(&cc->ac_ctx, iv); 359 aesctr_ivsetup(&cc->ac_ctx, iv);
330 return 0; 360 ret = 0;
361 goto out;
331 } 362 }
332 if ((cc->cipher->flags & CFLAG_NONE) != 0) 363 if ((cc->cipher->flags & CFLAG_NONE) != 0) {
333 return 0; 364 ret = 0;
334 return SSH_ERR_INVALID_ARGUMENT; 365 goto out;
335#else 366 }
367 ret = SSH_ERR_INVALID_ARGUMENT;
368 goto out;
369#else /* WITH_OPENSSL */
336 type = (*cipher->evptype)(); 370 type = (*cipher->evptype)();
337 EVP_CIPHER_CTX_init(&cc->evp); 371 if ((cc->evp = EVP_CIPHER_CTX_new()) == NULL) {
338 if (EVP_CipherInit(&cc->evp, type, NULL, (u_char *)iv, 372 ret = SSH_ERR_ALLOC_FAIL;
373 goto out;
374 }
375 if (EVP_CipherInit(cc->evp, type, NULL, (u_char *)iv,
339 (do_encrypt == CIPHER_ENCRYPT)) == 0) { 376 (do_encrypt == CIPHER_ENCRYPT)) == 0) {
340 ret = SSH_ERR_LIBCRYPTO_ERROR; 377 ret = SSH_ERR_LIBCRYPTO_ERROR;
341 goto bad; 378 goto out;
342 } 379 }
343 if (cipher_authlen(cipher) && 380 if (cipher_authlen(cipher) &&
344 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_IV_FIXED, 381 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_IV_FIXED,
345 -1, (u_char *)iv)) { 382 -1, (u_char *)iv)) {
346 ret = SSH_ERR_LIBCRYPTO_ERROR; 383 ret = SSH_ERR_LIBCRYPTO_ERROR;
347 goto bad; 384 goto out;
348 } 385 }
349 klen = EVP_CIPHER_CTX_key_length(&cc->evp); 386 klen = EVP_CIPHER_CTX_key_length(cc->evp);
350 if (klen > 0 && keylen != (u_int)klen) { 387 if (klen > 0 && keylen != (u_int)klen) {
351 if (EVP_CIPHER_CTX_set_key_length(&cc->evp, keylen) == 0) { 388 if (EVP_CIPHER_CTX_set_key_length(cc->evp, keylen) == 0) {
352 ret = SSH_ERR_LIBCRYPTO_ERROR; 389 ret = SSH_ERR_LIBCRYPTO_ERROR;
353 goto bad; 390 goto out;
354 } 391 }
355 } 392 }
356 if (EVP_CipherInit(&cc->evp, NULL, (u_char *)key, NULL, -1) == 0) { 393 if (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) {
357 ret = SSH_ERR_LIBCRYPTO_ERROR; 394 ret = SSH_ERR_LIBCRYPTO_ERROR;
358 goto bad; 395 goto out;
359 } 396 }
360 397
361 if (cipher->discard_len > 0) { 398 if (cipher->discard_len > 0) {
@@ -363,21 +400,34 @@ cipher_init(struct sshcipher_ctx *cc, const struct sshcipher *cipher,
363 (discard = malloc(cipher->discard_len)) == NULL) { 400 (discard = malloc(cipher->discard_len)) == NULL) {
364 free(junk); 401 free(junk);
365 ret = SSH_ERR_ALLOC_FAIL; 402 ret = SSH_ERR_ALLOC_FAIL;
366 goto bad; 403 goto out;
367 } 404 }
368 ret = EVP_Cipher(&cc->evp, discard, junk, cipher->discard_len); 405 ret = EVP_Cipher(cc->evp, discard, junk, cipher->discard_len);
369 explicit_bzero(discard, cipher->discard_len); 406 explicit_bzero(discard, cipher->discard_len);
370 free(junk); 407 free(junk);
371 free(discard); 408 free(discard);
372 if (ret != 1) { 409 if (ret != 1) {
373 ret = SSH_ERR_LIBCRYPTO_ERROR; 410 ret = SSH_ERR_LIBCRYPTO_ERROR;
374 bad: 411 goto out;
375 EVP_CIPHER_CTX_cleanup(&cc->evp);
376 return ret;
377 } 412 }
378 } 413 }
379#endif 414 ret = 0;
380 return 0; 415#endif /* WITH_OPENSSL */
416 out:
417 if (ret == 0) {
418 /* success */
419 *ccp = cc;
420 } else {
421 if (cc != NULL) {
422#ifdef WITH_OPENSSL
423 if (cc->evp != NULL)
424 EVP_CIPHER_CTX_free(cc->evp);
425#endif /* WITH_OPENSSL */
426 explicit_bzero(cc, sizeof(*cc));
427 free(cc);
428 }
429 }
430 return ret;
381} 431}
382 432
383/* 433/*
@@ -418,33 +468,33 @@ cipher_crypt(struct sshcipher_ctx *cc, u_int seqnr, u_char *dest,
418 if (authlen != cipher_authlen(cc->cipher)) 468 if (authlen != cipher_authlen(cc->cipher))
419 return SSH_ERR_INVALID_ARGUMENT; 469 return SSH_ERR_INVALID_ARGUMENT;
420 /* increment IV */ 470 /* increment IV */
421 if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN, 471 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,
422 1, lastiv)) 472 1, lastiv))
423 return SSH_ERR_LIBCRYPTO_ERROR; 473 return SSH_ERR_LIBCRYPTO_ERROR;
424 /* set tag on decyption */ 474 /* set tag on decyption */
425 if (!cc->encrypt && 475 if (!cc->encrypt &&
426 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_SET_TAG, 476 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_SET_TAG,
427 authlen, (u_char *)src + aadlen + len)) 477 authlen, (u_char *)src + aadlen + len))
428 return SSH_ERR_LIBCRYPTO_ERROR; 478 return SSH_ERR_LIBCRYPTO_ERROR;
429 } 479 }
430 if (aadlen) { 480 if (aadlen) {
431 if (authlen && 481 if (authlen &&
432 EVP_Cipher(&cc->evp, NULL, (u_char *)src, aadlen) < 0) 482 EVP_Cipher(cc->evp, NULL, (u_char *)src, aadlen) < 0)
433 return SSH_ERR_LIBCRYPTO_ERROR; 483 return SSH_ERR_LIBCRYPTO_ERROR;
434 memcpy(dest, src, aadlen); 484 memcpy(dest, src, aadlen);
435 } 485 }
436 if (len % cc->cipher->block_size) 486 if (len % cc->cipher->block_size)
437 return SSH_ERR_INVALID_ARGUMENT; 487 return SSH_ERR_INVALID_ARGUMENT;
438 if (EVP_Cipher(&cc->evp, dest + aadlen, (u_char *)src + aadlen, 488 if (EVP_Cipher(cc->evp, dest + aadlen, (u_char *)src + aadlen,
439 len) < 0) 489 len) < 0)
440 return SSH_ERR_LIBCRYPTO_ERROR; 490 return SSH_ERR_LIBCRYPTO_ERROR;
441 if (authlen) { 491 if (authlen) {
442 /* compute tag (on encrypt) or verify tag (on decrypt) */ 492 /* compute tag (on encrypt) or verify tag (on decrypt) */
443 if (EVP_Cipher(&cc->evp, NULL, NULL, 0) < 0) 493 if (EVP_Cipher(cc->evp, NULL, NULL, 0) < 0)
444 return cc->encrypt ? 494 return cc->encrypt ?
445 SSH_ERR_LIBCRYPTO_ERROR : SSH_ERR_MAC_INVALID; 495 SSH_ERR_LIBCRYPTO_ERROR : SSH_ERR_MAC_INVALID;
446 if (cc->encrypt && 496 if (cc->encrypt &&
447 !EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_GET_TAG, 497 !EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_GET_TAG,
448 authlen, dest + aadlen + len)) 498 authlen, dest + aadlen + len))
449 return SSH_ERR_LIBCRYPTO_ERROR; 499 return SSH_ERR_LIBCRYPTO_ERROR;
450 } 500 }
@@ -466,20 +516,23 @@ cipher_get_length(struct sshcipher_ctx *cc, u_int *plenp, u_int seqnr,
466 return 0; 516 return 0;
467} 517}
468 518
469int 519void
470cipher_cleanup(struct sshcipher_ctx *cc) 520cipher_free(struct sshcipher_ctx *cc)
471{ 521{
472 if (cc == NULL || cc->cipher == NULL) 522 if (cc == NULL)
473 return 0; 523 return;
474 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) 524 if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0)
475 explicit_bzero(&cc->cp_ctx, sizeof(cc->cp_ctx)); 525 explicit_bzero(&cc->cp_ctx, sizeof(cc->cp_ctx));
476 else if ((cc->cipher->flags & CFLAG_AESCTR) != 0) 526 else if ((cc->cipher->flags & CFLAG_AESCTR) != 0)
477 explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx)); 527 explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx));
478#ifdef WITH_OPENSSL 528#ifdef WITH_OPENSSL
479 else if (EVP_CIPHER_CTX_cleanup(&cc->evp) == 0) 529 if (cc->evp != NULL) {
480 return SSH_ERR_LIBCRYPTO_ERROR; 530 EVP_CIPHER_CTX_free(cc->evp);
531 cc->evp = NULL;
532 }
481#endif 533#endif
482 return 0; 534 explicit_bzero(cc, sizeof(*cc));
535 free(cc);
483} 536}
484 537
485/* 538/*
@@ -487,8 +540,8 @@ cipher_cleanup(struct sshcipher_ctx *cc)
487 * passphrase and using the resulting 16 bytes as the key. 540 * passphrase and using the resulting 16 bytes as the key.
488 */ 541 */
489int 542int
490cipher_set_key_string(struct sshcipher_ctx *cc, const struct sshcipher *cipher, 543cipher_set_key_string(struct sshcipher_ctx **ccp,
491 const char *passphrase, int do_encrypt) 544 const struct sshcipher *cipher, const char *passphrase, int do_encrypt)
492{ 545{
493 u_char digest[16]; 546 u_char digest[16];
494 int r = SSH_ERR_INTERNAL_ERROR; 547 int r = SSH_ERR_INTERNAL_ERROR;
@@ -498,7 +551,7 @@ cipher_set_key_string(struct sshcipher_ctx *cc, const struct sshcipher *cipher,
498 digest, sizeof(digest))) != 0) 551 digest, sizeof(digest))) != 0)
499 goto out; 552 goto out;
500 553
501 r = cipher_init(cc, cipher, digest, 16, NULL, 0, do_encrypt); 554 r = cipher_init(ccp, cipher, digest, 16, NULL, 0, do_encrypt);
502 out: 555 out:
503 explicit_bzero(digest, sizeof(digest)); 556 explicit_bzero(digest, sizeof(digest));
504 return r; 557 return r;
@@ -523,7 +576,7 @@ cipher_get_keyiv_len(const struct sshcipher_ctx *cc)
523 ivlen = sizeof(cc->ac_ctx.ctr); 576 ivlen = sizeof(cc->ac_ctx.ctr);
524#ifdef WITH_OPENSSL 577#ifdef WITH_OPENSSL
525 else 578 else
526 ivlen = EVP_CIPHER_CTX_iv_length(&cc->evp); 579 ivlen = EVP_CIPHER_CTX_iv_length(cc->evp);
527#endif /* WITH_OPENSSL */ 580#endif /* WITH_OPENSSL */
528 return (ivlen); 581 return (ivlen);
529} 582}
@@ -555,7 +608,7 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len)
555 case SSH_CIPHER_SSH2: 608 case SSH_CIPHER_SSH2:
556 case SSH_CIPHER_DES: 609 case SSH_CIPHER_DES:
557 case SSH_CIPHER_BLOWFISH: 610 case SSH_CIPHER_BLOWFISH:
558 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp); 611 evplen = EVP_CIPHER_CTX_iv_length(cc->evp);
559 if (evplen == 0) 612 if (evplen == 0)
560 return 0; 613 return 0;
561 else if (evplen < 0) 614 else if (evplen < 0)
@@ -564,20 +617,20 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len)
564 return SSH_ERR_INVALID_ARGUMENT; 617 return SSH_ERR_INVALID_ARGUMENT;
565#ifndef OPENSSL_HAVE_EVPCTR 618#ifndef OPENSSL_HAVE_EVPCTR
566 if (c->evptype == evp_aes_128_ctr) 619 if (c->evptype == evp_aes_128_ctr)
567 ssh_aes_ctr_iv(&cc->evp, 0, iv, len); 620 ssh_aes_ctr_iv(cc->evp, 0, iv, len);
568 else 621 else
569#endif 622#endif
570 if (cipher_authlen(c)) { 623 if (cipher_authlen(c)) {
571 if (!EVP_CIPHER_CTX_ctrl(&cc->evp, EVP_CTRL_GCM_IV_GEN, 624 if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,
572 len, iv)) 625 len, iv))
573 return SSH_ERR_LIBCRYPTO_ERROR; 626 return SSH_ERR_LIBCRYPTO_ERROR;
574 } else 627 } else
575 memcpy(iv, cc->evp.iv, len); 628 memcpy(iv, cc->evp->iv, len);
576 break; 629 break;
577#endif 630#endif
578#ifdef WITH_SSH1 631#ifdef WITH_SSH1
579 case SSH_CIPHER_3DES: 632 case SSH_CIPHER_3DES:
580 return ssh1_3des_iv(&cc->evp, 0, iv, 24); 633 return ssh1_3des_iv(cc->evp, 0, iv, 24);
581#endif 634#endif
582 default: 635 default:
583 return SSH_ERR_INVALID_ARGUMENT; 636 return SSH_ERR_INVALID_ARGUMENT;
@@ -603,21 +656,27 @@ cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv)
603 case SSH_CIPHER_SSH2: 656 case SSH_CIPHER_SSH2:
604 case SSH_CIPHER_DES: 657 case SSH_CIPHER_DES:
605 case SSH_CIPHER_BLOWFISH: 658 case SSH_CIPHER_BLOWFISH:
606 evplen = EVP_CIPHER_CTX_iv_length(&cc->evp); 659 evplen = EVP_CIPHER_CTX_iv_length(cc->evp);
607 if (evplen <= 0) 660 if (evplen <= 0)
608 return SSH_ERR_LIBCRYPTO_ERROR; 661 return SSH_ERR_LIBCRYPTO_ERROR;
662#ifndef OPENSSL_HAVE_EVPCTR
663 /* XXX iv arg is const, but ssh_aes_ctr_iv isn't */
664 if (c->evptype == evp_aes_128_ctr)
665 ssh_aes_ctr_iv(cc->evp, 1, (u_char *)iv, evplen);
666 else
667#endif
609 if (cipher_authlen(c)) { 668 if (cipher_authlen(c)) {
610 /* XXX iv arg is const, but EVP_CIPHER_CTX_ctrl isn't */ 669 /* XXX iv arg is const, but EVP_CIPHER_CTX_ctrl isn't */
611 if (!EVP_CIPHER_CTX_ctrl(&cc->evp, 670 if (!EVP_CIPHER_CTX_ctrl(cc->evp,
612 EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv)) 671 EVP_CTRL_GCM_SET_IV_FIXED, -1, (void *)iv))
613 return SSH_ERR_LIBCRYPTO_ERROR; 672 return SSH_ERR_LIBCRYPTO_ERROR;
614 } else 673 } else
615 memcpy(cc->evp.iv, iv, evplen); 674 memcpy(cc->evp->iv, iv, evplen);
616 break; 675 break;
617#endif 676#endif
618#ifdef WITH_SSH1 677#ifdef WITH_SSH1
619 case SSH_CIPHER_3DES: 678 case SSH_CIPHER_3DES:
620 return ssh1_3des_iv(&cc->evp, 1, (u_char *)iv, 24); 679 return ssh1_3des_iv(cc->evp, 1, (u_char *)iv, 24);
621#endif 680#endif
622 default: 681 default:
623 return SSH_ERR_INVALID_ARGUMENT; 682 return SSH_ERR_INVALID_ARGUMENT;
@@ -626,8 +685,8 @@ cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv)
626} 685}
627 686
628#ifdef WITH_OPENSSL 687#ifdef WITH_OPENSSL
629#define EVP_X_STATE(evp) (evp).cipher_data 688#define EVP_X_STATE(evp) (evp)->cipher_data
630#define EVP_X_STATE_LEN(evp) (evp).cipher->ctx_size 689#define EVP_X_STATE_LEN(evp) (evp)->cipher->ctx_size
631#endif 690#endif
632 691
633int 692int
diff --git a/cipher.h b/cipher.h
index 06d4be4d7..f4bca6285 100644
--- a/cipher.h
+++ b/cipher.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: cipher.h,v 1.48 2015/07/08 19:09:25 markus Exp $ */ 1/* $OpenBSD: cipher.h,v 1.49 2016/08/03 05:41:57 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -63,14 +63,7 @@
63#define CIPHER_DECRYPT 0 63#define CIPHER_DECRYPT 0
64 64
65struct sshcipher; 65struct sshcipher;
66struct sshcipher_ctx { 66struct sshcipher_ctx;
67 int plaintext;
68 int encrypt;
69 EVP_CIPHER_CTX evp;
70 struct chachapoly_ctx cp_ctx; /* XXX union with evp? */
71 struct aesctr_ctx ac_ctx; /* XXX union with evp? */
72 const struct sshcipher *cipher;
73};
74 67
75u_int cipher_mask_ssh1(int); 68u_int cipher_mask_ssh1(int);
76const struct sshcipher *cipher_by_name(const char *); 69const struct sshcipher *cipher_by_name(const char *);
@@ -80,15 +73,15 @@ char *cipher_name(int);
80const char *cipher_warning_message(const struct sshcipher_ctx *); 73const char *cipher_warning_message(const struct sshcipher_ctx *);
81int ciphers_valid(const char *); 74int ciphers_valid(const char *);
82char *cipher_alg_list(char, int); 75char *cipher_alg_list(char, int);
83int cipher_init(struct sshcipher_ctx *, const struct sshcipher *, 76int cipher_init(struct sshcipher_ctx **, const struct sshcipher *,
84 const u_char *, u_int, const u_char *, u_int, int); 77 const u_char *, u_int, const u_char *, u_int, int);
85int cipher_crypt(struct sshcipher_ctx *, u_int, u_char *, const u_char *, 78int cipher_crypt(struct sshcipher_ctx *, u_int, u_char *, const u_char *,
86 u_int, u_int, u_int); 79 u_int, u_int, u_int);
87int cipher_get_length(struct sshcipher_ctx *, u_int *, u_int, 80int cipher_get_length(struct sshcipher_ctx *, u_int *, u_int,
88 const u_char *, u_int); 81 const u_char *, u_int);
89int cipher_cleanup(struct sshcipher_ctx *); 82void cipher_free(struct sshcipher_ctx *);
90int cipher_set_key_string(struct sshcipher_ctx *, const struct sshcipher *, 83int cipher_set_key_string(struct sshcipher_ctx **,
91 const char *, int); 84 const struct sshcipher *, const char *, int);
92u_int cipher_blocksize(const struct sshcipher *); 85u_int cipher_blocksize(const struct sshcipher *);
93u_int cipher_keylen(const struct sshcipher *); 86u_int cipher_keylen(const struct sshcipher *);
94u_int cipher_seclen(const struct sshcipher *); 87u_int cipher_seclen(const struct sshcipher *);
@@ -96,10 +89,14 @@ u_int cipher_authlen(const struct sshcipher *);
96u_int cipher_ivlen(const struct sshcipher *); 89u_int cipher_ivlen(const struct sshcipher *);
97u_int cipher_is_cbc(const struct sshcipher *); 90u_int cipher_is_cbc(const struct sshcipher *);
98 91
92u_int cipher_ctx_is_plaintext(struct sshcipher_ctx *);
93u_int cipher_ctx_get_number(struct sshcipher_ctx *);
94
99u_int cipher_get_number(const struct sshcipher *); 95u_int cipher_get_number(const struct sshcipher *);
100int cipher_get_keyiv(struct sshcipher_ctx *, u_char *, u_int); 96int cipher_get_keyiv(struct sshcipher_ctx *, u_char *, u_int);
101int cipher_set_keyiv(struct sshcipher_ctx *, const u_char *); 97int cipher_set_keyiv(struct sshcipher_ctx *, const u_char *);
102int cipher_get_keyiv_len(const struct sshcipher_ctx *); 98int cipher_get_keyiv_len(const struct sshcipher_ctx *);
103int cipher_get_keycontext(const struct sshcipher_ctx *, u_char *); 99int cipher_get_keycontext(const struct sshcipher_ctx *, u_char *);
104void cipher_set_keycontext(struct sshcipher_ctx *, const u_char *); 100void cipher_set_keycontext(struct sshcipher_ctx *, const u_char *);
101
105#endif /* CIPHER_H */ 102#endif /* CIPHER_H */
diff --git a/clientloop.c b/clientloop.c
index e5cc3f8cb..5876cc9af 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.c,v 1.286 2016/07/23 02:54:08 djm Exp $ */ 1/* $OpenBSD: clientloop.c,v 1.289 2016/09/30 09:19:13 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -61,7 +61,6 @@
61 61
62#include "includes.h" 62#include "includes.h"
63 63
64#include <sys/param.h> /* MIN MAX */
65#include <sys/types.h> 64#include <sys/types.h>
66#include <sys/ioctl.h> 65#include <sys/ioctl.h>
67#ifdef HAVE_SYS_STAT_H 66#ifdef HAVE_SYS_STAT_H
@@ -316,7 +315,7 @@ client_x11_get_proto(const char *display, const char *xauth_path,
316 char xauthfile[PATH_MAX], xauthdir[PATH_MAX]; 315 char xauthfile[PATH_MAX], xauthdir[PATH_MAX];
317 static char proto[512], data[512]; 316 static char proto[512], data[512];
318 FILE *f; 317 FILE *f;
319 int got_data = 0, generated = 0, do_unlink = 0, i, r; 318 int got_data = 0, generated = 0, do_unlink = 0, r;
320 struct stat st; 319 struct stat st;
321 u_int now, x11_timeout_real; 320 u_int now, x11_timeout_real;
322 321
@@ -443,17 +442,16 @@ client_x11_get_proto(const char *display, const char *xauth_path,
443 * for the local connection. 442 * for the local connection.
444 */ 443 */
445 if (!got_data) { 444 if (!got_data) {
446 u_int32_t rnd = 0; 445 u_int8_t rnd[16];
446 u_int i;
447 447
448 logit("Warning: No xauth data; " 448 logit("Warning: No xauth data; "
449 "using fake authentication data for X11 forwarding."); 449 "using fake authentication data for X11 forwarding.");
450 strlcpy(proto, SSH_X11_PROTO, sizeof proto); 450 strlcpy(proto, SSH_X11_PROTO, sizeof proto);
451 for (i = 0; i < 16; i++) { 451 arc4random_buf(rnd, sizeof(rnd));
452 if (i % 4 == 0) 452 for (i = 0; i < sizeof(rnd); i++) {
453 rnd = arc4random();
454 snprintf(data + 2 * i, sizeof data - 2 * i, "%02x", 453 snprintf(data + 2 * i, sizeof data - 2 * i, "%02x",
455 rnd & 0xff); 454 rnd[i]);
456 rnd >>= 8;
457 } 455 }
458 } 456 }
459 457
@@ -676,16 +674,16 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp,
676 server_alive_time = now + options.server_alive_interval; 674 server_alive_time = now + options.server_alive_interval;
677 } 675 }
678 if (options.rekey_interval > 0 && compat20 && !rekeying) 676 if (options.rekey_interval > 0 && compat20 && !rekeying)
679 timeout_secs = MIN(timeout_secs, packet_get_rekey_timeout()); 677 timeout_secs = MINIMUM(timeout_secs, packet_get_rekey_timeout());
680 set_control_persist_exit_time(); 678 set_control_persist_exit_time();
681 if (control_persist_exit_time > 0) { 679 if (control_persist_exit_time > 0) {
682 timeout_secs = MIN(timeout_secs, 680 timeout_secs = MINIMUM(timeout_secs,
683 control_persist_exit_time - now); 681 control_persist_exit_time - now);
684 if (timeout_secs < 0) 682 if (timeout_secs < 0)
685 timeout_secs = 0; 683 timeout_secs = 0;
686 } 684 }
687 if (minwait_secs != 0) 685 if (minwait_secs != 0)
688 timeout_secs = MIN(timeout_secs, (int)minwait_secs); 686 timeout_secs = MINIMUM(timeout_secs, (int)minwait_secs);
689 if (timeout_secs == INT_MAX) 687 if (timeout_secs == INT_MAX)
690 tvp = NULL; 688 tvp = NULL;
691 else { 689 else {
@@ -1557,7 +1555,7 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
1557 buffer_high = 64 * 1024; 1555 buffer_high = 64 * 1024;
1558 connection_in = packet_get_connection_in(); 1556 connection_in = packet_get_connection_in();
1559 connection_out = packet_get_connection_out(); 1557 connection_out = packet_get_connection_out();
1560 max_fd = MAX(connection_in, connection_out); 1558 max_fd = MAXIMUM(connection_in, connection_out);
1561 1559
1562 if (!compat20) { 1560 if (!compat20) {
1563 /* enable nonblocking unless tty */ 1561 /* enable nonblocking unless tty */
@@ -1567,9 +1565,9 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
1567 set_nonblock(fileno(stdout)); 1565 set_nonblock(fileno(stdout));
1568 if (!isatty(fileno(stderr))) 1566 if (!isatty(fileno(stderr)))
1569 set_nonblock(fileno(stderr)); 1567 set_nonblock(fileno(stderr));
1570 max_fd = MAX(max_fd, fileno(stdin)); 1568 max_fd = MAXIMUM(max_fd, fileno(stdin));
1571 max_fd = MAX(max_fd, fileno(stdout)); 1569 max_fd = MAXIMUM(max_fd, fileno(stdout));
1572 max_fd = MAX(max_fd, fileno(stderr)); 1570 max_fd = MAXIMUM(max_fd, fileno(stderr));
1573 } 1571 }
1574 quit_pending = 0; 1572 quit_pending = 0;
1575 escape_char1 = escape_char_arg; 1573 escape_char1 = escape_char_arg;
@@ -1900,11 +1898,14 @@ client_input_agent_open(int type, u_int32_t seq, void *ctxt)
1900} 1898}
1901 1899
1902static Channel * 1900static Channel *
1903client_request_forwarded_tcpip(const char *request_type, int rchan) 1901client_request_forwarded_tcpip(const char *request_type, int rchan,
1902 u_int rwindow, u_int rmaxpack)
1904{ 1903{
1905 Channel *c = NULL; 1904 Channel *c = NULL;
1905 struct sshbuf *b = NULL;
1906 char *listen_address, *originator_address; 1906 char *listen_address, *originator_address;
1907 u_short listen_port, originator_port; 1907 u_short listen_port, originator_port;
1908 int r;
1908 1909
1909 /* Get rest of the packet */ 1910 /* Get rest of the packet */
1910 listen_address = packet_get_string(NULL); 1911 listen_address = packet_get_string(NULL);
@@ -1919,6 +1920,31 @@ client_request_forwarded_tcpip(const char *request_type, int rchan)
1919 c = channel_connect_by_listen_address(listen_address, listen_port, 1920 c = channel_connect_by_listen_address(listen_address, listen_port,
1920 "forwarded-tcpip", originator_address); 1921 "forwarded-tcpip", originator_address);
1921 1922
1923 if (c != NULL && c->type == SSH_CHANNEL_MUX_CLIENT) {
1924 if ((b = sshbuf_new()) == NULL) {
1925 error("%s: alloc reply", __func__);
1926 goto out;
1927 }
1928 /* reconstruct and send to muxclient */
1929 if ((r = sshbuf_put_u8(b, 0)) != 0 || /* padlen */
1930 (r = sshbuf_put_u8(b, SSH2_MSG_CHANNEL_OPEN)) != 0 ||
1931 (r = sshbuf_put_cstring(b, request_type)) != 0 ||
1932 (r = sshbuf_put_u32(b, rchan)) != 0 ||
1933 (r = sshbuf_put_u32(b, rwindow)) != 0 ||
1934 (r = sshbuf_put_u32(b, rmaxpack)) != 0 ||
1935 (r = sshbuf_put_cstring(b, listen_address)) != 0 ||
1936 (r = sshbuf_put_u32(b, listen_port)) != 0 ||
1937 (r = sshbuf_put_cstring(b, originator_address)) != 0 ||
1938 (r = sshbuf_put_u32(b, originator_port)) != 0 ||
1939 (r = sshbuf_put_stringb(&c->output, b)) != 0) {
1940 error("%s: compose for muxclient %s", __func__,
1941 ssh_err(r));
1942 goto out;
1943 }
1944 }
1945
1946 out:
1947 sshbuf_free(b);
1922 free(originator_address); 1948 free(originator_address);
1923 free(listen_address); 1949 free(listen_address);
1924 return c; 1950 return c;
@@ -2074,7 +2100,8 @@ client_input_channel_open(int type, u_int32_t seq, void *ctxt)
2074 ctype, rchan, rwindow, rmaxpack); 2100 ctype, rchan, rwindow, rmaxpack);
2075 2101
2076 if (strcmp(ctype, "forwarded-tcpip") == 0) { 2102 if (strcmp(ctype, "forwarded-tcpip") == 0) {
2077 c = client_request_forwarded_tcpip(ctype, rchan); 2103 c = client_request_forwarded_tcpip(ctype, rchan, rwindow,
2104 rmaxpack);
2078 } else if (strcmp(ctype, "forwarded-streamlocal@openssh.com") == 0) { 2105 } else if (strcmp(ctype, "forwarded-streamlocal@openssh.com") == 0) {
2079 c = client_request_forwarded_streamlocal(ctype, rchan); 2106 c = client_request_forwarded_streamlocal(ctype, rchan);
2080 } else if (strcmp(ctype, "x11") == 0) { 2107 } else if (strcmp(ctype, "x11") == 0) {
@@ -2082,8 +2109,9 @@ client_input_channel_open(int type, u_int32_t seq, void *ctxt)
2082 } else if (strcmp(ctype, "auth-agent@openssh.com") == 0) { 2109 } else if (strcmp(ctype, "auth-agent@openssh.com") == 0) {
2083 c = client_request_agent(ctype, rchan); 2110 c = client_request_agent(ctype, rchan);
2084 } 2111 }
2085/* XXX duplicate : */ 2112 if (c != NULL && c->type == SSH_CHANNEL_MUX_CLIENT) {
2086 if (c != NULL) { 2113 debug3("proxied to downstream: %s", ctype);
2114 } else if (c != NULL) {
2087 debug("confirm %s", ctype); 2115 debug("confirm %s", ctype);
2088 c->remote_id = rchan; 2116 c->remote_id = rchan;
2089 c->remote_window = rwindow; 2117 c->remote_window = rwindow;
@@ -2119,6 +2147,9 @@ client_input_channel_req(int type, u_int32_t seq, void *ctxt)
2119 char *rtype; 2147 char *rtype;
2120 2148
2121 id = packet_get_int(); 2149 id = packet_get_int();
2150 c = channel_lookup(id);
2151 if (channel_proxy_upstream(c, type, seq, ctxt))
2152 return 0;
2122 rtype = packet_get_string(NULL); 2153 rtype = packet_get_string(NULL);
2123 reply = packet_get_char(); 2154 reply = packet_get_char();
2124 2155
@@ -2127,7 +2158,7 @@ client_input_channel_req(int type, u_int32_t seq, void *ctxt)
2127 2158
2128 if (id == -1) { 2159 if (id == -1) {
2129 error("client_input_channel_req: request for channel -1"); 2160 error("client_input_channel_req: request for channel -1");
2130 } else if ((c = channel_lookup(id)) == NULL) { 2161 } else if (c == NULL) {
2131 error("client_input_channel_req: channel %d: " 2162 error("client_input_channel_req: channel %d: "
2132 "unknown channel", id); 2163 "unknown channel", id);
2133 } else if (strcmp(rtype, "eow@openssh.com") == 0) { 2164 } else if (strcmp(rtype, "eow@openssh.com") == 0) {
diff --git a/clientloop.h b/clientloop.h
index f4d4c69b7..ae83aa8cf 100644
--- a/clientloop.h
+++ b/clientloop.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.h,v 1.32 2016/01/13 23:04:47 djm Exp $ */ 1/* $OpenBSD: clientloop.h,v 1.33 2016/09/30 09:19:13 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -71,9 +71,10 @@ void client_expect_confirm(int, const char *, enum confirm_action);
71#define SSHMUX_COMMAND_FORWARD 5 /* Forward only, no command */ 71#define SSHMUX_COMMAND_FORWARD 5 /* Forward only, no command */
72#define SSHMUX_COMMAND_STOP 6 /* Disable mux but not conn */ 72#define SSHMUX_COMMAND_STOP 6 /* Disable mux but not conn */
73#define SSHMUX_COMMAND_CANCEL_FWD 7 /* Cancel forwarding(s) */ 73#define SSHMUX_COMMAND_CANCEL_FWD 7 /* Cancel forwarding(s) */
74#define SSHMUX_COMMAND_PROXY 8 /* Open new connection */
74 75
75void muxserver_listen(void); 76void muxserver_listen(void);
76void muxclient(const char *); 77int muxclient(const char *);
77void mux_exit_message(Channel *, int); 78void mux_exit_message(Channel *, int);
78void mux_tty_alloc_failed(Channel *); 79void mux_tty_alloc_failed(Channel *);
79 80
diff --git a/config.guess b/config.guess
index c5636280d..c4bd827a7 100755
--- a/config.guess
+++ b/config.guess
@@ -1,14 +1,12 @@
1#! /bin/sh 1#! /bin/sh
2# Attempt to guess a canonical system name. 2# Attempt to guess a canonical system name.
3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3# Copyright 1992-2016 Free Software Foundation, Inc.
4# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
5# 2011, 2012, 2013 Free Software Foundation, Inc.
6 4
7timestamp='2012-12-23' 5timestamp='2016-05-15'
8 6
9# This file is free software; you can redistribute it and/or modify it 7# This file is free software; you can redistribute it and/or modify it
10# under the terms of the GNU General Public License as published by 8# under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2 of the License, or 9# the Free Software Foundation; either version 3 of the License, or
12# (at your option) any later version. 10# (at your option) any later version.
13# 11#
14# This program is distributed in the hope that it will be useful, but 12# This program is distributed in the hope that it will be useful, but
@@ -22,19 +20,17 @@ timestamp='2012-12-23'
22# As a special exception to the GNU General Public License, if you 20# As a special exception to the GNU General Public License, if you
23# distribute this file as part of a program that contains a 21# distribute this file as part of a program that contains a
24# configuration script generated by Autoconf, you may include it under 22# configuration script generated by Autoconf, you may include it under
25# the same distribution terms that you use for the rest of that program. 23# the same distribution terms that you use for the rest of that
26 24# program. This Exception is an additional permission under section 7
27 25# of the GNU General Public License, version 3 ("GPLv3").
28# Originally written by Per Bothner. Please send patches (context
29# diff format) to <config-patches@gnu.org> and include a ChangeLog
30# entry.
31# 26#
32# This script attempts to guess a canonical system name similar to 27# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
33# config.sub. If it succeeds, it prints the system name on stdout, and
34# exits with 0. Otherwise, it exits with 1.
35# 28#
36# You can get the latest version of this script from: 29# You can get the latest version of this script from:
37# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD 30# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
31#
32# Please send patches to <config-patches@gnu.org>.
33
38 34
39me=`echo "$0" | sed -e 's,.*/,,'` 35me=`echo "$0" | sed -e 's,.*/,,'`
40 36
@@ -54,9 +50,7 @@ version="\
54GNU config.guess ($timestamp) 50GNU config.guess ($timestamp)
55 51
56Originally written by Per Bothner. 52Originally written by Per Bothner.
57Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 53Copyright 1992-2016 Free Software Foundation, Inc.
582001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
592012, 2013 Free Software Foundation, Inc.
60 54
61This is free software; see the source for copying conditions. There is NO 55This is free software; see the source for copying conditions. There is NO
62warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 56warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
138UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown 132UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
139UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown 133UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
140 134
135case "${UNAME_SYSTEM}" in
136Linux|GNU|GNU/*)
137 # If the system lacks a compiler, then just pick glibc.
138 # We could probably try harder.
139 LIBC=gnu
140
141 eval $set_cc_for_build
142 cat <<-EOF > $dummy.c
143 #include <features.h>
144 #if defined(__UCLIBC__)
145 LIBC=uclibc
146 #elif defined(__dietlibc__)
147 LIBC=dietlibc
148 #else
149 LIBC=gnu
150 #endif
151 EOF
152 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
153 ;;
154esac
155
141# Note: order is significant - the case branches are not exclusive. 156# Note: order is significant - the case branches are not exclusive.
142 157
143case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 158case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -153,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
153 # Note: NetBSD doesn't particularly care about the vendor 168 # Note: NetBSD doesn't particularly care about the vendor
154 # portion of the name. We always set it to "unknown". 169 # portion of the name. We always set it to "unknown".
155 sysctl="sysctl -n hw.machine_arch" 170 sysctl="sysctl -n hw.machine_arch"
156 UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ 171 UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
157 /usr/sbin/$sysctl 2>/dev/null || echo unknown)` 172 /sbin/$sysctl 2>/dev/null || \
173 /usr/sbin/$sysctl 2>/dev/null || \
174 echo unknown)`
158 case "${UNAME_MACHINE_ARCH}" in 175 case "${UNAME_MACHINE_ARCH}" in
159 armeb) machine=armeb-unknown ;; 176 armeb) machine=armeb-unknown ;;
160 arm*) machine=arm-unknown ;; 177 arm*) machine=arm-unknown ;;
161 sh3el) machine=shl-unknown ;; 178 sh3el) machine=shl-unknown ;;
162 sh3eb) machine=sh-unknown ;; 179 sh3eb) machine=sh-unknown ;;
163 sh5el) machine=sh5le-unknown ;; 180 sh5el) machine=sh5le-unknown ;;
181 earmv*)
182 arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
183 endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
184 machine=${arch}${endian}-unknown
185 ;;
164 *) machine=${UNAME_MACHINE_ARCH}-unknown ;; 186 *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
165 esac 187 esac
166 # The Operating System including object format, if it has switched 188 # The Operating System including object format, if it has switched
167 # to ELF recently, or will in the future. 189 # to ELF recently (or will in the future) and ABI.
168 case "${UNAME_MACHINE_ARCH}" in 190 case "${UNAME_MACHINE_ARCH}" in
191 earm*)
192 os=netbsdelf
193 ;;
169 arm*|i386|m68k|ns32k|sh3*|sparc|vax) 194 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
170 eval $set_cc_for_build 195 eval $set_cc_for_build
171 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ 196 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -182,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
182 os=netbsd 207 os=netbsd
183 ;; 208 ;;
184 esac 209 esac
210 # Determine ABI tags.
211 case "${UNAME_MACHINE_ARCH}" in
212 earm*)
213 expr='s/^earmv[0-9]/-eabi/;s/eb$//'
214 abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
215 ;;
216 esac
185 # The OS release 217 # The OS release
186 # Debian GNU/NetBSD machines have a different userland, and 218 # Debian GNU/NetBSD machines have a different userland, and
187 # thus, need a distinct triplet. However, they do not need 219 # thus, need a distinct triplet. However, they do not need
@@ -192,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
192 release='-gnu' 224 release='-gnu'
193 ;; 225 ;;
194 *) 226 *)
195 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` 227 release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
196 ;; 228 ;;
197 esac 229 esac
198 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: 230 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
199 # contains redundant information, the shorter form: 231 # contains redundant information, the shorter form:
200 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. 232 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
201 echo "${machine}-${os}${release}" 233 echo "${machine}-${os}${release}${abi}"
202 exit ;; 234 exit ;;
203 *:Bitrig:*:*) 235 *:Bitrig:*:*)
204 UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` 236 UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -208,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
208 UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` 240 UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
209 echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} 241 echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
210 exit ;; 242 exit ;;
243 *:LibertyBSD:*:*)
244 UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
245 echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
246 exit ;;
211 *:ekkoBSD:*:*) 247 *:ekkoBSD:*:*)
212 echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} 248 echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
213 exit ;; 249 exit ;;
@@ -220,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
220 *:MirBSD:*:*) 256 *:MirBSD:*:*)
221 echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} 257 echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
222 exit ;; 258 exit ;;
259 *:Sortix:*:*)
260 echo ${UNAME_MACHINE}-unknown-sortix
261 exit ;;
223 alpha:OSF1:*:*) 262 alpha:OSF1:*:*)
224 case $UNAME_RELEASE in 263 case $UNAME_RELEASE in
225 *4.0) 264 *4.0)
@@ -236,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
236 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` 275 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
237 case "$ALPHA_CPU_TYPE" in 276 case "$ALPHA_CPU_TYPE" in
238 "EV4 (21064)") 277 "EV4 (21064)")
239 UNAME_MACHINE="alpha" ;; 278 UNAME_MACHINE=alpha ;;
240 "EV4.5 (21064)") 279 "EV4.5 (21064)")
241 UNAME_MACHINE="alpha" ;; 280 UNAME_MACHINE=alpha ;;
242 "LCA4 (21066/21068)") 281 "LCA4 (21066/21068)")
243 UNAME_MACHINE="alpha" ;; 282 UNAME_MACHINE=alpha ;;
244 "EV5 (21164)") 283 "EV5 (21164)")
245 UNAME_MACHINE="alphaev5" ;; 284 UNAME_MACHINE=alphaev5 ;;
246 "EV5.6 (21164A)") 285 "EV5.6 (21164A)")
247 UNAME_MACHINE="alphaev56" ;; 286 UNAME_MACHINE=alphaev56 ;;
248 "EV5.6 (21164PC)") 287 "EV5.6 (21164PC)")
249 UNAME_MACHINE="alphapca56" ;; 288 UNAME_MACHINE=alphapca56 ;;
250 "EV5.7 (21164PC)") 289 "EV5.7 (21164PC)")
251 UNAME_MACHINE="alphapca57" ;; 290 UNAME_MACHINE=alphapca57 ;;
252 "EV6 (21264)") 291 "EV6 (21264)")
253 UNAME_MACHINE="alphaev6" ;; 292 UNAME_MACHINE=alphaev6 ;;
254 "EV6.7 (21264A)") 293 "EV6.7 (21264A)")
255 UNAME_MACHINE="alphaev67" ;; 294 UNAME_MACHINE=alphaev67 ;;
256 "EV6.8CB (21264C)") 295 "EV6.8CB (21264C)")
257 UNAME_MACHINE="alphaev68" ;; 296 UNAME_MACHINE=alphaev68 ;;
258 "EV6.8AL (21264B)") 297 "EV6.8AL (21264B)")
259 UNAME_MACHINE="alphaev68" ;; 298 UNAME_MACHINE=alphaev68 ;;
260 "EV6.8CX (21264D)") 299 "EV6.8CX (21264D)")
261 UNAME_MACHINE="alphaev68" ;; 300 UNAME_MACHINE=alphaev68 ;;
262 "EV6.9A (21264/EV69A)") 301 "EV6.9A (21264/EV69A)")
263 UNAME_MACHINE="alphaev69" ;; 302 UNAME_MACHINE=alphaev69 ;;
264 "EV7 (21364)") 303 "EV7 (21364)")
265 UNAME_MACHINE="alphaev7" ;; 304 UNAME_MACHINE=alphaev7 ;;
266 "EV7.9 (21364A)") 305 "EV7.9 (21364A)")
267 UNAME_MACHINE="alphaev79" ;; 306 UNAME_MACHINE=alphaev79 ;;
268 esac 307 esac
269 # A Pn.n version is a patched version. 308 # A Pn.n version is a patched version.
270 # A Vn.n version is a released version. 309 # A Vn.n version is a released version.
271 # A Tn.n version is a released field test version. 310 # A Tn.n version is a released field test version.
272 # A Xn.n version is an unreleased experimental baselevel. 311 # A Xn.n version is an unreleased experimental baselevel.
273 # 1.2 uses "1.2" for uname -r. 312 # 1.2 uses "1.2" for uname -r.
274 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` 313 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
275 # Reset EXIT trap before exiting to avoid spurious non-zero exit code. 314 # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
276 exitcode=$? 315 exitcode=$?
277 trap '' 0 316 trap '' 0
@@ -344,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
344 exit ;; 383 exit ;;
345 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) 384 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
346 eval $set_cc_for_build 385 eval $set_cc_for_build
347 SUN_ARCH="i386" 386 SUN_ARCH=i386
348 # If there is a compiler, see if it is configured for 64-bit objects. 387 # If there is a compiler, see if it is configured for 64-bit objects.
349 # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. 388 # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
350 # This test works for both compilers. 389 # This test works for both compilers.
351 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then 390 if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
352 if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ 391 if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
353 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ 392 (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
354 grep IS_64BIT_ARCH >/dev/null 393 grep IS_64BIT_ARCH >/dev/null
355 then 394 then
356 SUN_ARCH="x86_64" 395 SUN_ARCH=x86_64
357 fi 396 fi
358 fi 397 fi
359 echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` 398 echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -378,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
378 exit ;; 417 exit ;;
379 sun*:*:4.2BSD:*) 418 sun*:*:4.2BSD:*)
380 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` 419 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
381 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 420 test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
382 case "`/bin/arch`" in 421 case "`/bin/arch`" in
383 sun3) 422 sun3)
384 echo m68k-sun-sunos${UNAME_RELEASE} 423 echo m68k-sun-sunos${UNAME_RELEASE}
@@ -564,8 +603,9 @@ EOF
564 else 603 else
565 IBM_ARCH=powerpc 604 IBM_ARCH=powerpc
566 fi 605 fi
567 if [ -x /usr/bin/oslevel ] ; then 606 if [ -x /usr/bin/lslpp ] ; then
568 IBM_REV=`/usr/bin/oslevel` 607 IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
608 awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
569 else 609 else
570 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} 610 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
571 fi 611 fi
@@ -602,13 +642,13 @@ EOF
602 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` 642 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
603 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` 643 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
604 case "${sc_cpu_version}" in 644 case "${sc_cpu_version}" in
605 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 645 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
606 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 646 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
607 532) # CPU_PA_RISC2_0 647 532) # CPU_PA_RISC2_0
608 case "${sc_kernel_bits}" in 648 case "${sc_kernel_bits}" in
609 32) HP_ARCH="hppa2.0n" ;; 649 32) HP_ARCH=hppa2.0n ;;
610 64) HP_ARCH="hppa2.0w" ;; 650 64) HP_ARCH=hppa2.0w ;;
611 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 651 '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
612 esac ;; 652 esac ;;
613 esac 653 esac
614 fi 654 fi
@@ -647,11 +687,11 @@ EOF
647 exit (0); 687 exit (0);
648 } 688 }
649EOF 689EOF
650 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` 690 (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
651 test -z "$HP_ARCH" && HP_ARCH=hppa 691 test -z "$HP_ARCH" && HP_ARCH=hppa
652 fi ;; 692 fi ;;
653 esac 693 esac
654 if [ ${HP_ARCH} = "hppa2.0w" ] 694 if [ ${HP_ARCH} = hppa2.0w ]
655 then 695 then
656 eval $set_cc_for_build 696 eval $set_cc_for_build
657 697
@@ -664,12 +704,12 @@ EOF
664 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess 704 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
665 # => hppa64-hp-hpux11.23 705 # => hppa64-hp-hpux11.23
666 706
667 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | 707 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
668 grep -q __LP64__ 708 grep -q __LP64__
669 then 709 then
670 HP_ARCH="hppa2.0w" 710 HP_ARCH=hppa2.0w
671 else 711 else
672 HP_ARCH="hppa64" 712 HP_ARCH=hppa64
673 fi 713 fi
674 fi 714 fi
675 echo ${HP_ARCH}-hp-hpux${HPUX_REV} 715 echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -774,14 +814,14 @@ EOF
774 echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 814 echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
775 exit ;; 815 exit ;;
776 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) 816 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
777 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` 817 FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
778 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` 818 FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
779 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` 819 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
780 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" 820 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
781 exit ;; 821 exit ;;
782 5000:UNIX_System_V:4.*:*) 822 5000:UNIX_System_V:4.*:*)
783 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` 823 FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
784 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` 824 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
785 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" 825 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
786 exit ;; 826 exit ;;
787 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) 827 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -811,7 +851,7 @@ EOF
811 *:MINGW*:*) 851 *:MINGW*:*)
812 echo ${UNAME_MACHINE}-pc-mingw32 852 echo ${UNAME_MACHINE}-pc-mingw32
813 exit ;; 853 exit ;;
814 i*:MSYS*:*) 854 *:MSYS*:*)
815 echo ${UNAME_MACHINE}-pc-msys 855 echo ${UNAME_MACHINE}-pc-msys
816 exit ;; 856 exit ;;
817 i*:windows32*:*) 857 i*:windows32*:*)
@@ -859,21 +899,21 @@ EOF
859 exit ;; 899 exit ;;
860 *:GNU:*:*) 900 *:GNU:*:*)
861 # the GNU system 901 # the GNU system
862 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` 902 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
863 exit ;; 903 exit ;;
864 *:GNU/*:*:*) 904 *:GNU/*:*:*)
865 # other systems with GNU libc and userland 905 # other systems with GNU libc and userland
866 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu 906 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
867 exit ;; 907 exit ;;
868 i*86:Minix:*:*) 908 i*86:Minix:*:*)
869 echo ${UNAME_MACHINE}-pc-minix 909 echo ${UNAME_MACHINE}-pc-minix
870 exit ;; 910 exit ;;
871 aarch64:Linux:*:*) 911 aarch64:Linux:*:*)
872 echo ${UNAME_MACHINE}-unknown-linux-gnu 912 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
873 exit ;; 913 exit ;;
874 aarch64_be:Linux:*:*) 914 aarch64_be:Linux:*:*)
875 UNAME_MACHINE=aarch64_be 915 UNAME_MACHINE=aarch64_be
876 echo ${UNAME_MACHINE}-unknown-linux-gnu 916 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
877 exit ;; 917 exit ;;
878 alpha:Linux:*:*) 918 alpha:Linux:*:*)
879 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in 919 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -886,59 +926,60 @@ EOF
886 EV68*) UNAME_MACHINE=alphaev68 ;; 926 EV68*) UNAME_MACHINE=alphaev68 ;;
887 esac 927 esac
888 objdump --private-headers /bin/sh | grep -q ld.so.1 928 objdump --private-headers /bin/sh | grep -q ld.so.1
889 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi 929 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
890 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} 930 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
931 exit ;;
932 arc:Linux:*:* | arceb:Linux:*:*)
933 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
891 exit ;; 934 exit ;;
892 arm*:Linux:*:*) 935 arm*:Linux:*:*)
893 eval $set_cc_for_build 936 eval $set_cc_for_build
894 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ 937 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
895 | grep -q __ARM_EABI__ 938 | grep -q __ARM_EABI__
896 then 939 then
897 echo ${UNAME_MACHINE}-unknown-linux-gnu 940 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
898 else 941 else
899 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ 942 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
900 | grep -q __ARM_PCS_VFP 943 | grep -q __ARM_PCS_VFP
901 then 944 then
902 echo ${UNAME_MACHINE}-unknown-linux-gnueabi 945 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
903 else 946 else
904 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf 947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
905 fi 948 fi
906 fi 949 fi
907 exit ;; 950 exit ;;
908 avr32*:Linux:*:*) 951 avr32*:Linux:*:*)
909 echo ${UNAME_MACHINE}-unknown-linux-gnu 952 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
910 exit ;; 953 exit ;;
911 cris:Linux:*:*) 954 cris:Linux:*:*)
912 echo ${UNAME_MACHINE}-axis-linux-gnu 955 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
913 exit ;; 956 exit ;;
914 crisv32:Linux:*:*) 957 crisv32:Linux:*:*)
915 echo ${UNAME_MACHINE}-axis-linux-gnu 958 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
959 exit ;;
960 e2k:Linux:*:*)
961 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
916 exit ;; 962 exit ;;
917 frv:Linux:*:*) 963 frv:Linux:*:*)
918 echo ${UNAME_MACHINE}-unknown-linux-gnu 964 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
919 exit ;; 965 exit ;;
920 hexagon:Linux:*:*) 966 hexagon:Linux:*:*)
921 echo ${UNAME_MACHINE}-unknown-linux-gnu 967 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
922 exit ;; 968 exit ;;
923 i*86:Linux:*:*) 969 i*86:Linux:*:*)
924 LIBC=gnu 970 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
925 eval $set_cc_for_build
926 sed 's/^ //' << EOF >$dummy.c
927 #ifdef __dietlibc__
928 LIBC=dietlibc
929 #endif
930EOF
931 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
932 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
933 exit ;; 971 exit ;;
934 ia64:Linux:*:*) 972 ia64:Linux:*:*)
935 echo ${UNAME_MACHINE}-unknown-linux-gnu 973 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
974 exit ;;
975 k1om:Linux:*:*)
976 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
936 exit ;; 977 exit ;;
937 m32r*:Linux:*:*) 978 m32r*:Linux:*:*)
938 echo ${UNAME_MACHINE}-unknown-linux-gnu 979 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
939 exit ;; 980 exit ;;
940 m68*:Linux:*:*) 981 m68*:Linux:*:*)
941 echo ${UNAME_MACHINE}-unknown-linux-gnu 982 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
942 exit ;; 983 exit ;;
943 mips:Linux:*:* | mips64:Linux:*:*) 984 mips:Linux:*:* | mips64:Linux:*:*)
944 eval $set_cc_for_build 985 eval $set_cc_for_build
@@ -957,60 +998,63 @@ EOF
957 #endif 998 #endif
958EOF 999EOF
959 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` 1000 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
960 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } 1001 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
961 ;; 1002 ;;
962 or32:Linux:*:*) 1003 openrisc*:Linux:*:*)
963 echo ${UNAME_MACHINE}-unknown-linux-gnu 1004 echo or1k-unknown-linux-${LIBC}
1005 exit ;;
1006 or32:Linux:*:* | or1k*:Linux:*:*)
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
964 exit ;; 1008 exit ;;
965 padre:Linux:*:*) 1009 padre:Linux:*:*)
966 echo sparc-unknown-linux-gnu 1010 echo sparc-unknown-linux-${LIBC}
967 exit ;; 1011 exit ;;
968 parisc64:Linux:*:* | hppa64:Linux:*:*) 1012 parisc64:Linux:*:* | hppa64:Linux:*:*)
969 echo hppa64-unknown-linux-gnu 1013 echo hppa64-unknown-linux-${LIBC}
970 exit ;; 1014 exit ;;
971 parisc:Linux:*:* | hppa:Linux:*:*) 1015 parisc:Linux:*:* | hppa:Linux:*:*)
972 # Look for CPU level 1016 # Look for CPU level
973 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in 1017 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
974 PA7*) echo hppa1.1-unknown-linux-gnu ;; 1018 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
975 PA8*) echo hppa2.0-unknown-linux-gnu ;; 1019 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
976 *) echo hppa-unknown-linux-gnu ;; 1020 *) echo hppa-unknown-linux-${LIBC} ;;
977 esac 1021 esac
978 exit ;; 1022 exit ;;
979 ppc64:Linux:*:*) 1023 ppc64:Linux:*:*)
980 echo powerpc64-unknown-linux-gnu 1024 echo powerpc64-unknown-linux-${LIBC}
981 exit ;; 1025 exit ;;
982 ppc:Linux:*:*) 1026 ppc:Linux:*:*)
983 echo powerpc-unknown-linux-gnu 1027 echo powerpc-unknown-linux-${LIBC}
984 exit ;; 1028 exit ;;
985 ppc64le:Linux:*:*) 1029 ppc64le:Linux:*:*)
986 echo powerpc64le-unknown-linux-gnu 1030 echo powerpc64le-unknown-linux-${LIBC}
987 exit ;; 1031 exit ;;
988 ppcle:Linux:*:*) 1032 ppcle:Linux:*:*)
989 echo powerpcle-unknown-linux-gnu 1033 echo powerpcle-unknown-linux-${LIBC}
990 exit ;; 1034 exit ;;
991 s390:Linux:*:* | s390x:Linux:*:*) 1035 s390:Linux:*:* | s390x:Linux:*:*)
992 echo ${UNAME_MACHINE}-ibm-linux 1036 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
993 exit ;; 1037 exit ;;
994 sh64*:Linux:*:*) 1038 sh64*:Linux:*:*)
995 echo ${UNAME_MACHINE}-unknown-linux-gnu 1039 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
996 exit ;; 1040 exit ;;
997 sh*:Linux:*:*) 1041 sh*:Linux:*:*)
998 echo ${UNAME_MACHINE}-unknown-linux-gnu 1042 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
999 exit ;; 1043 exit ;;
1000 sparc:Linux:*:* | sparc64:Linux:*:*) 1044 sparc:Linux:*:* | sparc64:Linux:*:*)
1001 echo ${UNAME_MACHINE}-unknown-linux-gnu 1045 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1002 exit ;; 1046 exit ;;
1003 tile*:Linux:*:*) 1047 tile*:Linux:*:*)
1004 echo ${UNAME_MACHINE}-unknown-linux-gnu 1048 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1005 exit ;; 1049 exit ;;
1006 vax:Linux:*:*) 1050 vax:Linux:*:*)
1007 echo ${UNAME_MACHINE}-dec-linux-gnu 1051 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
1008 exit ;; 1052 exit ;;
1009 x86_64:Linux:*:*) 1053 x86_64:Linux:*:*)
1010 echo ${UNAME_MACHINE}-unknown-linux-gnu 1054 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
1011 exit ;; 1055 exit ;;
1012 xtensa*:Linux:*:*) 1056 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu 1057 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1014 exit ;; 1058 exit ;;
1015 i*86:DYNIX/ptx:4*:*) 1059 i*86:DYNIX/ptx:4*:*)
1016 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. 1060 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1086,7 +1130,7 @@ EOF
1086 # uname -m prints for DJGPP always 'pc', but it prints nothing about 1130 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1087 # the processor, so we play safe by assuming i586. 1131 # the processor, so we play safe by assuming i586.
1088 # Note: whatever this is, it MUST be the same as what config.sub 1132 # Note: whatever this is, it MUST be the same as what config.sub
1089 # prints for the "djgpp" host, or else GDB configury will decide that 1133 # prints for the "djgpp" host, or else GDB configure will decide that
1090 # this is a cross-build. 1134 # this is a cross-build.
1091 echo i586-pc-msdosdjgpp 1135 echo i586-pc-msdosdjgpp
1092 exit ;; 1136 exit ;;
@@ -1235,6 +1279,9 @@ EOF
1235 SX-8R:SUPER-UX:*:*) 1279 SX-8R:SUPER-UX:*:*)
1236 echo sx8r-nec-superux${UNAME_RELEASE} 1280 echo sx8r-nec-superux${UNAME_RELEASE}
1237 exit ;; 1281 exit ;;
1282 SX-ACE:SUPER-UX:*:*)
1283 echo sxace-nec-superux${UNAME_RELEASE}
1284 exit ;;
1238 Power*:Rhapsody:*:*) 1285 Power*:Rhapsody:*:*)
1239 echo powerpc-apple-rhapsody${UNAME_RELEASE} 1286 echo powerpc-apple-rhapsody${UNAME_RELEASE}
1240 exit ;; 1287 exit ;;
@@ -1243,24 +1290,36 @@ EOF
1243 exit ;; 1290 exit ;;
1244 *:Darwin:*:*) 1291 *:Darwin:*:*)
1245 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown 1292 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in 1293 eval $set_cc_for_build
1247 i386) 1294 if test "$UNAME_PROCESSOR" = unknown ; then
1248 eval $set_cc_for_build 1295 UNAME_PROCESSOR=powerpc
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then 1296 fi
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ 1297 if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ 1298 if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
1252 grep IS_64BIT_ARCH >/dev/null 1299 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1253 then 1300 (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1254 UNAME_PROCESSOR="x86_64" 1301 grep IS_64BIT_ARCH >/dev/null
1255 fi 1302 then
1256 fi ;; 1303 case $UNAME_PROCESSOR in
1257 unknown) UNAME_PROCESSOR=powerpc ;; 1304 i386) UNAME_PROCESSOR=x86_64 ;;
1258 esac 1305 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1306 esac
1307 fi
1308 fi
1309 elif test "$UNAME_PROCESSOR" = i386 ; then
1310 # Avoid executing cc on OS X 10.9, as it ships with a stub
1311 # that puts up a graphical alert prompting to install
1312 # developer tools. Any system running Mac OS X 10.7 or
1313 # later (Darwin 11 and later) is required to have a 64-bit
1314 # processor. This is not true of the ARM version of Darwin
1315 # that Apple uses in portable devices.
1316 UNAME_PROCESSOR=x86_64
1317 fi
1259 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} 1318 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1260 exit ;; 1319 exit ;;
1261 *:procnto*:*:* | *:QNX:[0123456789]*:*) 1320 *:procnto*:*:* | *:QNX:[0123456789]*:*)
1262 UNAME_PROCESSOR=`uname -p` 1321 UNAME_PROCESSOR=`uname -p`
1263 if test "$UNAME_PROCESSOR" = "x86"; then 1322 if test "$UNAME_PROCESSOR" = x86; then
1264 UNAME_PROCESSOR=i386 1323 UNAME_PROCESSOR=i386
1265 UNAME_MACHINE=pc 1324 UNAME_MACHINE=pc
1266 fi 1325 fi
@@ -1291,7 +1350,7 @@ EOF
1291 # "uname -m" is not consistent, so use $cputype instead. 386 1350 # "uname -m" is not consistent, so use $cputype instead. 386
1292 # is converted to i386 for consistency with other x86 1351 # is converted to i386 for consistency with other x86
1293 # operating systems. 1352 # operating systems.
1294 if test "$cputype" = "386"; then 1353 if test "$cputype" = 386; then
1295 UNAME_MACHINE=i386 1354 UNAME_MACHINE=i386
1296 else 1355 else
1297 UNAME_MACHINE="$cputype" 1356 UNAME_MACHINE="$cputype"
@@ -1333,7 +1392,7 @@ EOF
1333 echo i386-pc-xenix 1392 echo i386-pc-xenix
1334 exit ;; 1393 exit ;;
1335 i*86:skyos:*:*) 1394 i*86:skyos:*:*)
1336 echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' 1395 echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
1337 exit ;; 1396 exit ;;
1338 i*86:rdos:*:*) 1397 i*86:rdos:*:*)
1339 echo ${UNAME_MACHINE}-pc-rdos 1398 echo ${UNAME_MACHINE}-pc-rdos
@@ -1344,171 +1403,25 @@ EOF
1344 x86_64:VMkernel:*:*) 1403 x86_64:VMkernel:*:*)
1345 echo ${UNAME_MACHINE}-unknown-esx 1404 echo ${UNAME_MACHINE}-unknown-esx
1346 exit ;; 1405 exit ;;
1347esac 1406 amd64:Isilon\ OneFS:*:*)
1348 1407 echo x86_64-unknown-onefs
1349eval $set_cc_for_build
1350cat >$dummy.c <<EOF
1351#ifdef _SEQUENT_
1352# include <sys/types.h>
1353# include <sys/utsname.h>
1354#endif
1355main ()
1356{
1357#if defined (sony)
1358#if defined (MIPSEB)
1359 /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
1360 I don't know.... */
1361 printf ("mips-sony-bsd\n"); exit (0);
1362#else
1363#include <sys/param.h>
1364 printf ("m68k-sony-newsos%s\n",
1365#ifdef NEWSOS4
1366 "4"
1367#else
1368 ""
1369#endif
1370 ); exit (0);
1371#endif
1372#endif
1373
1374#if defined (__arm) && defined (__acorn) && defined (__unix)
1375 printf ("arm-acorn-riscix\n"); exit (0);
1376#endif
1377
1378#if defined (hp300) && !defined (hpux)
1379 printf ("m68k-hp-bsd\n"); exit (0);
1380#endif
1381
1382#if defined (NeXT)
1383#if !defined (__ARCHITECTURE__)
1384#define __ARCHITECTURE__ "m68k"
1385#endif
1386 int version;
1387 version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
1388 if (version < 4)
1389 printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
1390 else
1391 printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
1392 exit (0);
1393#endif
1394
1395#if defined (MULTIMAX) || defined (n16)
1396#if defined (UMAXV)
1397 printf ("ns32k-encore-sysv\n"); exit (0);
1398#else
1399#if defined (CMU)
1400 printf ("ns32k-encore-mach\n"); exit (0);
1401#else
1402 printf ("ns32k-encore-bsd\n"); exit (0);
1403#endif
1404#endif
1405#endif
1406
1407#if defined (__386BSD__)
1408 printf ("i386-pc-bsd\n"); exit (0);
1409#endif
1410
1411#if defined (sequent)
1412#if defined (i386)
1413 printf ("i386-sequent-dynix\n"); exit (0);
1414#endif
1415#if defined (ns32000)
1416 printf ("ns32k-sequent-dynix\n"); exit (0);
1417#endif
1418#endif
1419
1420#if defined (_SEQUENT_)
1421 struct utsname un;
1422
1423 uname(&un);
1424
1425 if (strncmp(un.version, "V2", 2) == 0) {
1426 printf ("i386-sequent-ptx2\n"); exit (0);
1427 }
1428 if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1429 printf ("i386-sequent-ptx1\n"); exit (0);
1430 }
1431 printf ("i386-sequent-ptx\n"); exit (0);
1432
1433#endif
1434
1435#if defined (vax)
1436# if !defined (ultrix)
1437# include <sys/param.h>
1438# if defined (BSD)
1439# if BSD == 43
1440 printf ("vax-dec-bsd4.3\n"); exit (0);
1441# else
1442# if BSD == 199006
1443 printf ("vax-dec-bsd4.3reno\n"); exit (0);
1444# else
1445 printf ("vax-dec-bsd\n"); exit (0);
1446# endif
1447# endif
1448# else
1449 printf ("vax-dec-bsd\n"); exit (0);
1450# endif
1451# else
1452 printf ("vax-dec-ultrix\n"); exit (0);
1453# endif
1454#endif
1455
1456#if defined (alliant) && defined (i860)
1457 printf ("i860-alliant-bsd\n"); exit (0);
1458#endif
1459
1460 exit (1);
1461}
1462EOF
1463
1464$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
1465 { echo "$SYSTEM_NAME"; exit; }
1466
1467# Apollos put the system type in the environment.
1468
1469test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
1470
1471# Convex versions that predate uname can use getsysinfo(1)
1472
1473if [ -x /usr/convex/getsysinfo ]
1474then
1475 case `getsysinfo -f cpu_type` in
1476 c1*)
1477 echo c1-convex-bsd
1478 exit ;; 1408 exit ;;
1479 c2*) 1409esac
1480 if getsysinfo -f scalar_acc
1481 then echo c32-convex-bsd
1482 else echo c2-convex-bsd
1483 fi
1484 exit ;;
1485 c34*)
1486 echo c34-convex-bsd
1487 exit ;;
1488 c38*)
1489 echo c38-convex-bsd
1490 exit ;;
1491 c4*)
1492 echo c4-convex-bsd
1493 exit ;;
1494 esac
1495fi
1496 1410
1497cat >&2 <<EOF 1411cat >&2 <<EOF
1498$0: unable to guess system type 1412$0: unable to guess system type
1499 1413
1500This script, last modified $timestamp, has failed to recognize 1414This script (version $timestamp), has failed to recognize the
1501the operating system you are using. It is advised that you 1415operating system you are using. If your script is old, overwrite
1502download the most up to date version of the config scripts from 1416config.guess and config.sub with the latest versions from:
1503 1417
1504 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD 1418 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
1505and 1419and
1506 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD 1420 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
1507 1421
1508If the version you run ($0) is already up to date, please 1422If $0 has already been updated, send the following data and any
1509send the following data and any information you think might be 1423information you think might be pertinent to config-patches@gnu.org to
1510pertinent to <config-patches@gnu.org> in order to provide the needed 1424provide the necessary information to handle your system.
1511information to handle your system.
1512 1425
1513config.guess timestamp = $timestamp 1426config.guess timestamp = $timestamp
1514 1427
diff --git a/config.h.in b/config.h.in
index d7caf9aa4..afe540e9c 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,5 +1,8 @@
1/* config.h.in. Generated from configure.ac by autoheader. */ 1/* config.h.in. Generated from configure.ac by autoheader. */
2 2
3/* Define if building universal (internal helper macro) */
4#undef AC_APPLE_UNIVERSAL_BUILD
5
3/* Define if you have a getaddrinfo that fails for the all-zeros IPv6 address 6/* Define if you have a getaddrinfo that fails for the all-zeros IPv6 address
4 */ 7 */
5#undef AIX_GETNAMEINFO_HACK 8#undef AIX_GETNAMEINFO_HACK
@@ -34,9 +37,6 @@
34/* ia_uinfo routines not supported by OS yet */ 37/* ia_uinfo routines not supported by OS yet */
35#undef BROKEN_LIBIAF 38#undef BROKEN_LIBIAF
36 39
37/* Ultrix mmap can't map files */
38#undef BROKEN_MMAP
39
40/* Define if your struct dirent expects you to allocate extra space for d_name 40/* Define if your struct dirent expects you to allocate extra space for d_name
41 */ 41 */
42#undef BROKEN_ONE_BYTE_DIRENT_D_NAME 42#undef BROKEN_ONE_BYTE_DIRENT_D_NAME
@@ -75,7 +75,7 @@
75/* Define if your snprintf is busted */ 75/* Define if your snprintf is busted */
76#undef BROKEN_SNPRINTF 76#undef BROKEN_SNPRINTF
77 77
78/* missing VIS_ALL */ 78/* strnvis detected broken */
79#undef BROKEN_STRNVIS 79#undef BROKEN_STRNVIS
80 80
81/* tcgetattr with ICANON may hang */ 81/* tcgetattr with ICANON may hang */
@@ -790,9 +790,6 @@
790/* Define to 1 if you have the `mkdtemp' function. */ 790/* Define to 1 if you have the `mkdtemp' function. */
791#undef HAVE_MKDTEMP 791#undef HAVE_MKDTEMP
792 792
793/* Define to 1 if you have the `mmap' function. */
794#undef HAVE_MMAP
795
796/* define if you have mode_t data type */ 793/* define if you have mode_t data type */
797#undef HAVE_MODE_T 794#undef HAVE_MODE_T
798 795
@@ -1073,6 +1070,9 @@
1073/* Define to 1 if you have the <stdlib.h> header file. */ 1070/* Define to 1 if you have the <stdlib.h> header file. */
1074#undef HAVE_STDLIB_H 1071#undef HAVE_STDLIB_H
1075 1072
1073/* Define to 1 if you have the `strcasestr' function. */
1074#undef HAVE_STRCASESTR
1075
1076/* Define to 1 if you have the `strdup' function. */ 1076/* Define to 1 if you have the `strdup' function. */
1077#undef HAVE_STRDUP 1077#undef HAVE_STRDUP
1078 1078
@@ -1130,28 +1130,28 @@
1130/* define if you have struct in6_addr data type */ 1130/* define if you have struct in6_addr data type */
1131#undef HAVE_STRUCT_IN6_ADDR 1131#undef HAVE_STRUCT_IN6_ADDR
1132 1132
1133/* Define to 1 if `pw_change' is member of `struct passwd'. */ 1133/* Define to 1 if `pw_change' is a member of `struct passwd'. */
1134#undef HAVE_STRUCT_PASSWD_PW_CHANGE 1134#undef HAVE_STRUCT_PASSWD_PW_CHANGE
1135 1135
1136/* Define to 1 if `pw_class' is member of `struct passwd'. */ 1136/* Define to 1 if `pw_class' is a member of `struct passwd'. */
1137#undef HAVE_STRUCT_PASSWD_PW_CLASS 1137#undef HAVE_STRUCT_PASSWD_PW_CLASS
1138 1138
1139/* Define to 1 if `pw_expire' is member of `struct passwd'. */ 1139/* Define to 1 if `pw_expire' is a member of `struct passwd'. */
1140#undef HAVE_STRUCT_PASSWD_PW_EXPIRE 1140#undef HAVE_STRUCT_PASSWD_PW_EXPIRE
1141 1141
1142/* Define to 1 if `pw_gecos' is member of `struct passwd'. */ 1142/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
1143#undef HAVE_STRUCT_PASSWD_PW_GECOS 1143#undef HAVE_STRUCT_PASSWD_PW_GECOS
1144 1144
1145/* define if you have struct sockaddr_in6 data type */ 1145/* define if you have struct sockaddr_in6 data type */
1146#undef HAVE_STRUCT_SOCKADDR_IN6 1146#undef HAVE_STRUCT_SOCKADDR_IN6
1147 1147
1148/* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */ 1148/* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */
1149#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1149#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
1150 1150
1151/* define if you have struct sockaddr_storage data type */ 1151/* define if you have struct sockaddr_storage data type */
1152#undef HAVE_STRUCT_SOCKADDR_STORAGE 1152#undef HAVE_STRUCT_SOCKADDR_STORAGE
1153 1153
1154/* Define to 1 if `st_blksize' is member of `struct stat'. */ 1154/* Define to 1 if `st_blksize' is a member of `struct stat'. */
1155#undef HAVE_STRUCT_STAT_ST_BLKSIZE 1155#undef HAVE_STRUCT_STAT_ST_BLKSIZE
1156 1156
1157/* Define to 1 if the system has the type `struct timespec'. */ 1157/* Define to 1 if the system has the type `struct timespec'. */
@@ -1214,6 +1214,9 @@
1214/* Define to 1 if you have the <sys/ptms.h> header file. */ 1214/* Define to 1 if you have the <sys/ptms.h> header file. */
1215#undef HAVE_SYS_PTMS_H 1215#undef HAVE_SYS_PTMS_H
1216 1216
1217/* Define to 1 if you have the <sys/ptrace.h> header file. */
1218#undef HAVE_SYS_PTRACE_H
1219
1217/* Define to 1 if you have the <sys/select.h> header file. */ 1220/* Define to 1 if you have the <sys/select.h> header file. */
1218#undef HAVE_SYS_SELECT_H 1221#undef HAVE_SYS_SELECT_H
1219 1222
@@ -1455,19 +1458,9 @@
1455/* String used in /etc/passwd to denote locked account */ 1458/* String used in /etc/passwd to denote locked account */
1456#undef LOCKED_PASSWD_SUBSTR 1459#undef LOCKED_PASSWD_SUBSTR
1457 1460
1458/* Some versions of /bin/login need the TERM supplied on the commandline */
1459#undef LOGIN_NEEDS_TERM
1460
1461/* Some systems need a utmpx entry for /bin/login to work */ 1461/* Some systems need a utmpx entry for /bin/login to work */
1462#undef LOGIN_NEEDS_UTMPX 1462#undef LOGIN_NEEDS_UTMPX
1463 1463
1464/* Define if your login program cannot handle end of options ("--") */
1465#undef LOGIN_NO_ENDOPT
1466
1467/* If your header files don't define LOGIN_PROGRAM, then use this (detected)
1468 from environment and PATH */
1469#undef LOGIN_PROGRAM_FALLBACK
1470
1471/* Set this to your mail directory if you do not have _PATH_MAILDIR */ 1464/* Set this to your mail directory if you do not have _PATH_MAILDIR */
1472#undef MAIL_DIRECTORY 1465#undef MAIL_DIRECTORY
1473 1466
@@ -1525,6 +1518,9 @@
1525/* Define to the one symbol short name of this package. */ 1518/* Define to the one symbol short name of this package. */
1526#undef PACKAGE_TARNAME 1519#undef PACKAGE_TARNAME
1527 1520
1521/* Define to the home page for this package. */
1522#undef PACKAGE_URL
1523
1528/* Define to the version of this package. */ 1524/* Define to the version of this package. */
1529#undef PACKAGE_VERSION 1525#undef PACKAGE_VERSION
1530 1526
@@ -1614,6 +1610,9 @@
1614/* Define if sshd somehow reacquires a controlling TTY after setsid() */ 1610/* Define if sshd somehow reacquires a controlling TTY after setsid() */
1615#undef SSHD_ACQUIRES_CTTY 1611#undef SSHD_ACQUIRES_CTTY
1616 1612
1613/* sshd PAM service name */
1614#undef SSHD_PAM_SERVICE
1615
1617/* Define if pam_chauthtok wants real uid set to the unpriv'ed user */ 1616/* Define if pam_chauthtok wants real uid set to the unpriv'ed user */
1618#undef SSHPAM_CHAUTHTOK_NEEDS_RUID 1617#undef SSHPAM_CHAUTHTOK_NEEDS_RUID
1619 1618
@@ -1726,13 +1725,26 @@
1726/* include SSH protocol version 1 support */ 1725/* include SSH protocol version 1 support */
1727#undef WITH_SSH1 1726#undef WITH_SSH1
1728 1727
1729/* Define to 1 if your processor stores words with the most significant byte 1728/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
1730 first (like Motorola and SPARC, unlike Intel and VAX). */ 1729 significant byte first (like Motorola and SPARC, unlike Intel). */
1731#undef WORDS_BIGENDIAN 1730#if defined AC_APPLE_UNIVERSAL_BUILD
1731# if defined __BIG_ENDIAN__
1732# define WORDS_BIGENDIAN 1
1733# endif
1734#else
1735# ifndef WORDS_BIGENDIAN
1736# undef WORDS_BIGENDIAN
1737# endif
1738#endif
1732 1739
1733/* Define if xauth is found in your path */ 1740/* Define if xauth is found in your path */
1734#undef XAUTH_PATH 1741#undef XAUTH_PATH
1735 1742
1743/* Enable large inode numbers on Mac OS X 10.5. */
1744#ifndef _DARWIN_USE_64_BIT_INODE
1745# define _DARWIN_USE_64_BIT_INODE 1
1746#endif
1747
1736/* Number of bits in a file offset, on hosts where this is settable. */ 1748/* Number of bits in a file offset, on hosts where this is settable. */
1737#undef _FILE_OFFSET_BITS 1749#undef _FILE_OFFSET_BITS
1738 1750
diff --git a/config.sub b/config.sub
index eee8dccb0..9feb73bf0 100755
--- a/config.sub
+++ b/config.sub
@@ -1,24 +1,18 @@
1#! /bin/sh 1#! /bin/sh
2# Configuration validation subroutine script. 2# Configuration validation subroutine script.
3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3# Copyright 1992-2016 Free Software Foundation, Inc.
4# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
5# 2011, 2012, 2013 Free Software Foundation, Inc.
6 4
7timestamp='2012-12-23' 5timestamp='2016-06-20'
8 6
9# This file is (in principle) common to ALL GNU software. 7# This file is free software; you can redistribute it and/or modify it
10# The presence of a machine in this file suggests that SOME GNU software 8# under the terms of the GNU General Public License as published by
11# can handle that machine. It does not imply ALL GNU software can. 9# the Free Software Foundation; either version 3 of the License, or
12#
13# This file is free software; you can redistribute it and/or modify
14# it under the terms of the GNU General Public License as published by
15# the Free Software Foundation; either version 2 of the License, or
16# (at your option) any later version. 10# (at your option) any later version.
17# 11#
18# This program is distributed in the hope that it will be useful, 12# This program is distributed in the hope that it will be useful, but
19# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21# GNU General Public License for more details. 15# General Public License for more details.
22# 16#
23# You should have received a copy of the GNU General Public License 17# You should have received a copy of the GNU General Public License
24# along with this program; if not, see <http://www.gnu.org/licenses/>. 18# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -26,11 +20,12 @@ timestamp='2012-12-23'
26# As a special exception to the GNU General Public License, if you 20# As a special exception to the GNU General Public License, if you
27# distribute this file as part of a program that contains a 21# distribute this file as part of a program that contains a
28# configuration script generated by Autoconf, you may include it under 22# configuration script generated by Autoconf, you may include it under
29# the same distribution terms that you use for the rest of that program. 23# the same distribution terms that you use for the rest of that
24# program. This Exception is an additional permission under section 7
25# of the GNU General Public License, version 3 ("GPLv3").
30 26
31 27
32# Please send patches to <config-patches@gnu.org>. Submit a context 28# Please send patches to <config-patches@gnu.org>.
33# diff and a properly formatted GNU ChangeLog entry.
34# 29#
35# Configuration subroutine to validate and canonicalize a configuration type. 30# Configuration subroutine to validate and canonicalize a configuration type.
36# Supply the specified configuration type as an argument. 31# Supply the specified configuration type as an argument.
@@ -38,7 +33,7 @@ timestamp='2012-12-23'
38# Otherwise, we print the canonical config type on stdout and succeed. 33# Otherwise, we print the canonical config type on stdout and succeed.
39 34
40# You can get the latest version of this script from: 35# You can get the latest version of this script from:
41# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD 36# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
42 37
43# This file is supposed to be the same for all GNU packages 38# This file is supposed to be the same for all GNU packages
44# and recognize all the CPU types, system types and aliases 39# and recognize all the CPU types, system types and aliases
@@ -58,8 +53,7 @@ timestamp='2012-12-23'
58me=`echo "$0" | sed -e 's,.*/,,'` 53me=`echo "$0" | sed -e 's,.*/,,'`
59 54
60usage="\ 55usage="\
61Usage: $0 [OPTION] CPU-MFR-OPSYS 56Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
62 $0 [OPTION] ALIAS
63 57
64Canonicalize a configuration name. 58Canonicalize a configuration name.
65 59
@@ -73,9 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
73version="\ 67version="\
74GNU config.sub ($timestamp) 68GNU config.sub ($timestamp)
75 69
76Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 70Copyright 1992-2016 Free Software Foundation, Inc.
772001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
782012, 2013 Free Software Foundation, Inc.
79 71
80This is free software; see the source for copying conditions. There is NO 72This is free software; see the source for copying conditions. There is NO
81warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 73warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -124,7 +116,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
124case $maybe_os in 116case $maybe_os in
125 nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ 117 nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
126 linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ 118 linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
127 knetbsd*-gnu* | netbsd*-gnu* | \ 119 knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
128 kopensolaris*-gnu* | \ 120 kopensolaris*-gnu* | \
129 storm-chaos* | os2-emx* | rtmk-nova*) 121 storm-chaos* | os2-emx* | rtmk-nova*)
130 os=-$maybe_os 122 os=-$maybe_os
@@ -259,19 +251,21 @@ case $basic_machine in
259 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ 251 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
260 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ 252 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
261 | am33_2.0 \ 253 | am33_2.0 \
262 | arc \ 254 | arc | arceb \
263 | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ 255 | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
264 | avr | avr32 \ 256 | avr | avr32 \
257 | ba \
265 | be32 | be64 \ 258 | be32 | be64 \
266 | bfin \ 259 | bfin \
267 | c4x | clipper \ 260 | c4x | c8051 | clipper \
268 | d10v | d30v | dlx | dsp16xx \ 261 | d10v | d30v | dlx | dsp16xx \
269 | epiphany \ 262 | e2k | epiphany \
270 | fido | fr30 | frv \ 263 | fido | fr30 | frv | ft32 \
271 | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ 264 | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
272 | hexagon \ 265 | hexagon \
273 | i370 | i860 | i960 | ia64 \ 266 | i370 | i860 | i960 | ia64 \
274 | ip2k | iq2000 \ 267 | ip2k | iq2000 \
268 | k1om \
275 | le32 | le64 \ 269 | le32 | le64 \
276 | lm32 \ 270 | lm32 \
277 | m32c | m32r | m32rle | m68000 | m68k | m88k \ 271 | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -289,26 +283,29 @@ case $basic_machine in
289 | mips64vr5900 | mips64vr5900el \ 283 | mips64vr5900 | mips64vr5900el \
290 | mipsisa32 | mipsisa32el \ 284 | mipsisa32 | mipsisa32el \
291 | mipsisa32r2 | mipsisa32r2el \ 285 | mipsisa32r2 | mipsisa32r2el \
286 | mipsisa32r6 | mipsisa32r6el \
292 | mipsisa64 | mipsisa64el \ 287 | mipsisa64 | mipsisa64el \
293 | mipsisa64r2 | mipsisa64r2el \ 288 | mipsisa64r2 | mipsisa64r2el \
289 | mipsisa64r6 | mipsisa64r6el \
294 | mipsisa64sb1 | mipsisa64sb1el \ 290 | mipsisa64sb1 | mipsisa64sb1el \
295 | mipsisa64sr71k | mipsisa64sr71kel \ 291 | mipsisa64sr71k | mipsisa64sr71kel \
292 | mipsr5900 | mipsr5900el \
296 | mipstx39 | mipstx39el \ 293 | mipstx39 | mipstx39el \
297 | mn10200 | mn10300 \ 294 | mn10200 | mn10300 \
298 | moxie \ 295 | moxie \
299 | mt \ 296 | mt \
300 | msp430 \ 297 | msp430 \
301 | nds32 | nds32le | nds32be \ 298 | nds32 | nds32le | nds32be \
302 | nios | nios2 \ 299 | nios | nios2 | nios2eb | nios2el \
303 | ns16k | ns32k \ 300 | ns16k | ns32k \
304 | open8 \ 301 | open8 | or1k | or1knd | or32 \
305 | or32 \
306 | pdp10 | pdp11 | pj | pjl \ 302 | pdp10 | pdp11 | pj | pjl \
307 | powerpc | powerpc64 | powerpc64le | powerpcle \ 303 | powerpc | powerpc64 | powerpc64le | powerpcle \
308 | pyramid \ 304 | pyramid \
305 | riscv32 | riscv64 \
309 | rl78 | rx \ 306 | rl78 | rx \
310 | score \ 307 | score \
311 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ 308 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
312 | sh64 | sh64le \ 309 | sh64 | sh64le \
313 | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ 310 | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
314 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ 311 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -316,6 +313,7 @@ case $basic_machine in
316 | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ 313 | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
317 | ubicom32 \ 314 | ubicom32 \
318 | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ 315 | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
316 | visium \
319 | we32k \ 317 | we32k \
320 | x86 | xc16x | xstormy16 | xtensa \ 318 | x86 | xc16x | xstormy16 | xtensa \
321 | z8k | z80) 319 | z8k | z80)
@@ -330,7 +328,10 @@ case $basic_machine in
330 c6x) 328 c6x)
331 basic_machine=tic6x-unknown 329 basic_machine=tic6x-unknown
332 ;; 330 ;;
333 m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) 331 leon|leon[3-9])
332 basic_machine=sparc-$basic_machine
333 ;;
334 m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
334 basic_machine=$basic_machine-unknown 335 basic_machine=$basic_machine-unknown
335 os=-none 336 os=-none
336 ;; 337 ;;
@@ -372,21 +373,23 @@ case $basic_machine in
372 | aarch64-* | aarch64_be-* \ 373 | aarch64-* | aarch64_be-* \
373 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ 374 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
374 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ 375 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
375 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ 376 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
376 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ 377 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
377 | avr-* | avr32-* \ 378 | avr-* | avr32-* \
379 | ba-* \
378 | be32-* | be64-* \ 380 | be32-* | be64-* \
379 | bfin-* | bs2000-* \ 381 | bfin-* | bs2000-* \
380 | c[123]* | c30-* | [cjt]90-* | c4x-* \ 382 | c[123]* | c30-* | [cjt]90-* | c4x-* \
381 | clipper-* | craynv-* | cydra-* \ 383 | c8051-* | clipper-* | craynv-* | cydra-* \
382 | d10v-* | d30v-* | dlx-* \ 384 | d10v-* | d30v-* | dlx-* \
383 | elxsi-* \ 385 | e2k-* | elxsi-* \
384 | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ 386 | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
385 | h8300-* | h8500-* \ 387 | h8300-* | h8500-* \
386 | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ 388 | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
387 | hexagon-* \ 389 | hexagon-* \
388 | i*86-* | i860-* | i960-* | ia64-* \ 390 | i*86-* | i860-* | i960-* | ia64-* \
389 | ip2k-* | iq2000-* \ 391 | ip2k-* | iq2000-* \
392 | k1om-* \
390 | le32-* | le64-* \ 393 | le32-* | le64-* \
391 | lm32-* \ 394 | lm32-* \
392 | m32c-* | m32r-* | m32rle-* \ 395 | m32c-* | m32r-* | m32rle-* \
@@ -406,28 +409,33 @@ case $basic_machine in
406 | mips64vr5900-* | mips64vr5900el-* \ 409 | mips64vr5900-* | mips64vr5900el-* \
407 | mipsisa32-* | mipsisa32el-* \ 410 | mipsisa32-* | mipsisa32el-* \
408 | mipsisa32r2-* | mipsisa32r2el-* \ 411 | mipsisa32r2-* | mipsisa32r2el-* \
412 | mipsisa32r6-* | mipsisa32r6el-* \
409 | mipsisa64-* | mipsisa64el-* \ 413 | mipsisa64-* | mipsisa64el-* \
410 | mipsisa64r2-* | mipsisa64r2el-* \ 414 | mipsisa64r2-* | mipsisa64r2el-* \
415 | mipsisa64r6-* | mipsisa64r6el-* \
411 | mipsisa64sb1-* | mipsisa64sb1el-* \ 416 | mipsisa64sb1-* | mipsisa64sb1el-* \
412 | mipsisa64sr71k-* | mipsisa64sr71kel-* \ 417 | mipsisa64sr71k-* | mipsisa64sr71kel-* \
418 | mipsr5900-* | mipsr5900el-* \
413 | mipstx39-* | mipstx39el-* \ 419 | mipstx39-* | mipstx39el-* \
414 | mmix-* \ 420 | mmix-* \
415 | mt-* \ 421 | mt-* \
416 | msp430-* \ 422 | msp430-* \
417 | nds32-* | nds32le-* | nds32be-* \ 423 | nds32-* | nds32le-* | nds32be-* \
418 | nios-* | nios2-* \ 424 | nios-* | nios2-* | nios2eb-* | nios2el-* \
419 | none-* | np1-* | ns16k-* | ns32k-* \ 425 | none-* | np1-* | ns16k-* | ns32k-* \
420 | open8-* \ 426 | open8-* \
427 | or1k*-* \
421 | orion-* \ 428 | orion-* \
422 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ 429 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
423 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ 430 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
424 | pyramid-* \ 431 | pyramid-* \
432 | riscv32-* | riscv64-* \
425 | rl78-* | romp-* | rs6000-* | rx-* \ 433 | rl78-* | romp-* | rs6000-* | rx-* \
426 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ 434 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
427 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ 435 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
428 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ 436 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
429 | sparclite-* \ 437 | sparclite-* \
430 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ 438 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
431 | tahoe-* \ 439 | tahoe-* \
432 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ 440 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
433 | tile*-* \ 441 | tile*-* \
@@ -435,6 +443,7 @@ case $basic_machine in
435 | ubicom32-* \ 443 | ubicom32-* \
436 | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ 444 | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
437 | vax-* \ 445 | vax-* \
446 | visium-* \
438 | we32k-* \ 447 | we32k-* \
439 | x86-* | x86_64-* | xc16x-* | xps100-* \ 448 | x86-* | x86_64-* | xc16x-* | xps100-* \
440 | xstormy16-* | xtensa*-* \ 449 | xstormy16-* | xtensa*-* \
@@ -511,6 +520,9 @@ case $basic_machine in
511 basic_machine=i386-pc 520 basic_machine=i386-pc
512 os=-aros 521 os=-aros
513 ;; 522 ;;
523 asmjs)
524 basic_machine=asmjs-unknown
525 ;;
514 aux) 526 aux)
515 basic_machine=m68k-apple 527 basic_machine=m68k-apple
516 os=-aux 528 os=-aux
@@ -631,6 +643,14 @@ case $basic_machine in
631 basic_machine=m68k-bull 643 basic_machine=m68k-bull
632 os=-sysv3 644 os=-sysv3
633 ;; 645 ;;
646 e500v[12])
647 basic_machine=powerpc-unknown
648 os=$os"spe"
649 ;;
650 e500v[12]-*)
651 basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
652 os=$os"spe"
653 ;;
634 ebmon29k) 654 ebmon29k)
635 basic_machine=a29k-amd 655 basic_machine=a29k-amd
636 os=-ebmon 656 os=-ebmon
@@ -772,6 +792,9 @@ case $basic_machine in
772 basic_machine=m68k-isi 792 basic_machine=m68k-isi
773 os=-sysv 793 os=-sysv
774 ;; 794 ;;
795 leon-*|leon[3-9]-*)
796 basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
797 ;;
775 m68knommu) 798 m68knommu)
776 basic_machine=m68k-unknown 799 basic_machine=m68k-unknown
777 os=-linux 800 os=-linux
@@ -799,7 +822,7 @@ case $basic_machine in
799 os=-mingw64 822 os=-mingw64
800 ;; 823 ;;
801 mingw32) 824 mingw32)
802 basic_machine=i386-pc 825 basic_machine=i686-pc
803 os=-mingw32 826 os=-mingw32
804 ;; 827 ;;
805 mingw32ce) 828 mingw32ce)
@@ -827,6 +850,10 @@ case $basic_machine in
827 basic_machine=powerpc-unknown 850 basic_machine=powerpc-unknown
828 os=-morphos 851 os=-morphos
829 ;; 852 ;;
853 moxiebox)
854 basic_machine=moxie-unknown
855 os=-moxiebox
856 ;;
830 msdos) 857 msdos)
831 basic_machine=i386-pc 858 basic_machine=i386-pc
832 os=-msdos 859 os=-msdos
@@ -835,7 +862,7 @@ case $basic_machine in
835 basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` 862 basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
836 ;; 863 ;;
837 msys) 864 msys)
838 basic_machine=i386-pc 865 basic_machine=i686-pc
839 os=-msys 866 os=-msys
840 ;; 867 ;;
841 mvs) 868 mvs)
@@ -1357,29 +1384,30 @@ case $os in
1357 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ 1384 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1358 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ 1385 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
1359 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ 1386 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1360 | -sym* | -kopensolaris* \ 1387 | -sym* | -kopensolaris* | -plan9* \
1361 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ 1388 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1362 | -aos* | -aros* \ 1389 | -aos* | -aros* | -cloudabi* | -sortix* \
1363 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ 1390 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
1364 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ 1391 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1365 | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ 1392 | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
1366 | -bitrig* | -openbsd* | -solidbsd* \ 1393 | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
1367 | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ 1394 | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
1368 | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ 1395 | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
1369 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ 1396 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
1370 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ 1397 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1371 | -chorusos* | -chorusrdb* | -cegcc* \ 1398 | -chorusos* | -chorusrdb* | -cegcc* \
1372 | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ 1399 | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1373 | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ 1400 | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
1374 | -linux-newlib* | -linux-musl* | -linux-uclibc* \ 1401 | -linux-newlib* | -linux-musl* | -linux-uclibc* \
1375 | -uxpv* | -beos* | -mpeix* | -udk* \ 1402 | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
1376 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ 1403 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
1377 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ 1404 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1378 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ 1405 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1379 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ 1406 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1380 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ 1407 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1381 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ 1408 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
1382 | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) 1409 | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
1410 | -onefs* | -tirtos* | -phoenix*)
1383 # Remember, each alternative MUST END IN *, to match a version number. 1411 # Remember, each alternative MUST END IN *, to match a version number.
1384 ;; 1412 ;;
1385 -qnx*) 1413 -qnx*)
@@ -1503,9 +1531,6 @@ case $os in
1503 -aros*) 1531 -aros*)
1504 os=-aros 1532 os=-aros
1505 ;; 1533 ;;
1506 -kaos*)
1507 os=-kaos
1508 ;;
1509 -zvmoe) 1534 -zvmoe)
1510 os=-zvmoe 1535 os=-zvmoe
1511 ;; 1536 ;;
@@ -1514,6 +1539,8 @@ case $os in
1514 ;; 1539 ;;
1515 -nacl*) 1540 -nacl*)
1516 ;; 1541 ;;
1542 -ios)
1543 ;;
1517 -none) 1544 -none)
1518 ;; 1545 ;;
1519 *) 1546 *)
@@ -1554,6 +1581,9 @@ case $basic_machine in
1554 c4x-* | tic4x-*) 1581 c4x-* | tic4x-*)
1555 os=-coff 1582 os=-coff
1556 ;; 1583 ;;
1584 c8051-*)
1585 os=-elf
1586 ;;
1557 hexagon-*) 1587 hexagon-*)
1558 os=-elf 1588 os=-elf
1559 ;; 1589 ;;
diff --git a/configure b/configure
index c836ee546..ec3a98ffc 100755
--- a/configure
+++ b/configure
@@ -1,63 +1,84 @@
1#! /bin/sh 1#! /bin/sh
2# From configure.ac Revision: 1.583 . 2# From configure.ac Revision: 1.583 .
3# Guess values for system-dependent variables and create Makefiles. 3# Guess values for system-dependent variables and create Makefiles.
4# Generated by GNU Autoconf 2.61 for OpenSSH Portable. 4# Generated by GNU Autoconf 2.69 for OpenSSH Portable.
5# 5#
6# Report bugs to <openssh-unix-dev@mindrot.org>. 6# Report bugs to <openssh-unix-dev@mindrot.org>.
7# 7#
8# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 8#
9# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 9# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
10#
11#
10# This configure script is free software; the Free Software Foundation 12# This configure script is free software; the Free Software Foundation
11# gives unlimited permission to copy, distribute and modify it. 13# gives unlimited permission to copy, distribute and modify it.
12## --------------------- ## 14## -------------------- ##
13## M4sh Initialization. ## 15## M4sh Initialization. ##
14## --------------------- ## 16## -------------------- ##
15 17
16# Be more Bourne compatible 18# Be more Bourne compatible
17DUALCASE=1; export DUALCASE # for MKS sh 19DUALCASE=1; export DUALCASE # for MKS sh
18if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 20if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
19 emulate sh 21 emulate sh
20 NULLCMD=: 22 NULLCMD=:
21 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 23 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
22 # is contrary to our usage. Disable this feature. 24 # is contrary to our usage. Disable this feature.
23 alias -g '${1+"$@"}'='"$@"' 25 alias -g '${1+"$@"}'='"$@"'
24 setopt NO_GLOB_SUBST 26 setopt NO_GLOB_SUBST
25else 27else
26 case `(set -o) 2>/dev/null` in 28 case `(set -o) 2>/dev/null` in #(
27 *posix*) set -o posix ;; 29 *posix*) :
30 set -o posix ;; #(
31 *) :
32 ;;
28esac 33esac
29
30fi 34fi
31 35
32 36
33 37as_nl='
34 38'
35# PATH needs CR 39export as_nl
36# Avoid depending upon Character Ranges. 40# Printing a long string crashes Solaris 7 /usr/bin/printf.
37as_cr_letters='abcdefghijklmnopqrstuvwxyz' 41as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
38as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 42as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
39as_cr_Letters=$as_cr_letters$as_cr_LETTERS 43as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
40as_cr_digits='0123456789' 44# Prefer a ksh shell builtin over an external printf program on Solaris,
41as_cr_alnum=$as_cr_Letters$as_cr_digits 45# but without wasting forks for bash or zsh.
42 46if test -z "$BASH_VERSION$ZSH_VERSION" \
43# The user is always right. 47 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
44if test "${PATH_SEPARATOR+set}" != set; then 48 as_echo='print -r --'
45 echo "#! /bin/sh" >conf$$.sh 49 as_echo_n='print -rn --'
46 echo "exit 0" >>conf$$.sh 50elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
47 chmod +x conf$$.sh 51 as_echo='printf %s\n'
48 if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then 52 as_echo_n='printf %s'
49 PATH_SEPARATOR=';' 53else
54 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
55 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
56 as_echo_n='/usr/ucb/echo -n'
50 else 57 else
51 PATH_SEPARATOR=: 58 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
59 as_echo_n_body='eval
60 arg=$1;
61 case $arg in #(
62 *"$as_nl"*)
63 expr "X$arg" : "X\\(.*\\)$as_nl";
64 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
65 esac;
66 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
67 '
68 export as_echo_n_body
69 as_echo_n='sh -c $as_echo_n_body as_echo'
52 fi 70 fi
53 rm -f conf$$.sh 71 export as_echo_body
72 as_echo='sh -c $as_echo_body as_echo'
54fi 73fi
55 74
56# Support unset when possible. 75# The user is always right.
57if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then 76if test "${PATH_SEPARATOR+set}" != set; then
58 as_unset=unset 77 PATH_SEPARATOR=:
59else 78 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
60 as_unset=false 79 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
80 PATH_SEPARATOR=';'
81 }
61fi 82fi
62 83
63 84
@@ -66,20 +87,19 @@ fi
66# there to prevent editors from complaining about space-tab. 87# there to prevent editors from complaining about space-tab.
67# (If _AS_PATH_WALK were called with IFS unset, it would disable word 88# (If _AS_PATH_WALK were called with IFS unset, it would disable word
68# splitting by setting IFS to empty value.) 89# splitting by setting IFS to empty value.)
69as_nl='
70'
71IFS=" "" $as_nl" 90IFS=" "" $as_nl"
72 91
73# Find who we are. Look in the path if we contain no directory separator. 92# Find who we are. Look in the path if we contain no directory separator.
74case $0 in 93as_myself=
94case $0 in #((
75 *[\\/]* ) as_myself=$0 ;; 95 *[\\/]* ) as_myself=$0 ;;
76 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 96 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
77for as_dir in $PATH 97for as_dir in $PATH
78do 98do
79 IFS=$as_save_IFS 99 IFS=$as_save_IFS
80 test -z "$as_dir" && as_dir=. 100 test -z "$as_dir" && as_dir=.
81 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 101 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
82done 102 done
83IFS=$as_save_IFS 103IFS=$as_save_IFS
84 104
85 ;; 105 ;;
@@ -90,354 +110,367 @@ if test "x$as_myself" = x; then
90 as_myself=$0 110 as_myself=$0
91fi 111fi
92if test ! -f "$as_myself"; then 112if test ! -f "$as_myself"; then
93 echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 113 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
94 { (exit 1); exit 1; } 114 exit 1
95fi 115fi
96 116
97# Work around bugs in pre-3.0 UWIN ksh. 117# Unset variables that we do not need and which cause bugs (e.g. in
98for as_var in ENV MAIL MAILPATH 118# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
99do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var 119# suppresses any "Segmentation fault" message there. '((' could
120# trigger a bug in pdksh 5.2.14.
121for as_var in BASH_ENV ENV MAIL MAILPATH
122do eval test x\${$as_var+set} = xset \
123 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
100done 124done
101PS1='$ ' 125PS1='$ '
102PS2='> ' 126PS2='> '
103PS4='+ ' 127PS4='+ '
104 128
105# NLS nuisances. 129# NLS nuisances.
106for as_var in \ 130LC_ALL=C
107 LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ 131export LC_ALL
108 LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ 132LANGUAGE=C
109 LC_TELEPHONE LC_TIME 133export LANGUAGE
110do
111 if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
112 eval $as_var=C; export $as_var
113 else
114 ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
115 fi
116done
117
118# Required to use basename.
119if expr a : '\(a\)' >/dev/null 2>&1 &&
120 test "X`expr 00001 : '.*\(...\)'`" = X001; then
121 as_expr=expr
122else
123 as_expr=false
124fi
125
126if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
127 as_basename=basename
128else
129 as_basename=false
130fi
131
132
133# Name of the executable.
134as_me=`$as_basename -- "$0" ||
135$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
136 X"$0" : 'X\(//\)$' \| \
137 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
138echo X/"$0" |
139 sed '/^.*\/\([^/][^/]*\)\/*$/{
140 s//\1/
141 q
142 }
143 /^X\/\(\/\/\)$/{
144 s//\1/
145 q
146 }
147 /^X\/\(\/\).*/{
148 s//\1/
149 q
150 }
151 s/.*/./; q'`
152 134
153# CDPATH. 135# CDPATH.
154$as_unset CDPATH 136(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
155 137
156 138# Use a proper internal environment variable to ensure we don't fall
139 # into an infinite loop, continuously re-executing ourselves.
140 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
141 _as_can_reexec=no; export _as_can_reexec;
142 # We cannot yet assume a decent shell, so we have to provide a
143# neutralization value for shells without unset; and this also
144# works around shells that cannot unset nonexistent variables.
145# Preserve -v and -x to the replacement shell.
146BASH_ENV=/dev/null
147ENV=/dev/null
148(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
149case $- in # ((((
150 *v*x* | *x*v* ) as_opts=-vx ;;
151 *v* ) as_opts=-v ;;
152 *x* ) as_opts=-x ;;
153 * ) as_opts= ;;
154esac
155exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
156# Admittedly, this is quite paranoid, since all the known shells bail
157# out after a failed `exec'.
158$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
159as_fn_exit 255
160 fi
161 # We don't want this to propagate to other subprocesses.
162 { _as_can_reexec=; unset _as_can_reexec;}
157if test "x$CONFIG_SHELL" = x; then 163if test "x$CONFIG_SHELL" = x; then
158 if (eval ":") 2>/dev/null; then 164 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
159 as_have_required=yes 165 emulate sh
166 NULLCMD=:
167 # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
168 # is contrary to our usage. Disable this feature.
169 alias -g '\${1+\"\$@\"}'='\"\$@\"'
170 setopt NO_GLOB_SUBST
160else 171else
161 as_have_required=no 172 case \`(set -o) 2>/dev/null\` in #(
173 *posix*) :
174 set -o posix ;; #(
175 *) :
176 ;;
177esac
162fi 178fi
163 179"
164 if test $as_have_required = yes && (eval ": 180 as_required="as_fn_return () { (exit \$1); }
165(as_func_return () { 181as_fn_success () { as_fn_return 0; }
166 (exit \$1) 182as_fn_failure () { as_fn_return 1; }
167} 183as_fn_ret_success () { return 0; }
168as_func_success () { 184as_fn_ret_failure () { return 1; }
169 as_func_return 0
170}
171as_func_failure () {
172 as_func_return 1
173}
174as_func_ret_success () {
175 return 0
176}
177as_func_ret_failure () {
178 return 1
179}
180 185
181exitcode=0 186exitcode=0
182if as_func_success; then 187as_fn_success || { exitcode=1; echo as_fn_success failed.; }
183 : 188as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
184else 189as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
185 exitcode=1 190as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
186 echo as_func_success failed. 191if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
187fi 192
188 193else
189if as_func_failure; then 194 exitcode=1; echo positional parameters were not saved.
190 exitcode=1 195fi
191 echo as_func_failure succeeded. 196test x\$exitcode = x0 || exit 1
192fi 197test -x / || exit 1"
193 198 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
194if as_func_ret_success; then 199 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
195 : 200 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
196else 201 test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
197 exitcode=1 202test \$(( 1 + 1 )) = 2 || exit 1"
198 echo as_func_ret_success failed. 203 if (eval "$as_required") 2>/dev/null; then :
199fi 204 as_have_required=yes
200
201if as_func_ret_failure; then
202 exitcode=1
203 echo as_func_ret_failure succeeded.
204fi
205
206if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
207 :
208else 205else
209 exitcode=1 206 as_have_required=no
210 echo positional parameters were not saved.
211fi 207fi
208 if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
212 209
213test \$exitcode = 0) || { (exit 1); exit 1; }
214
215(
216 as_lineno_1=\$LINENO
217 as_lineno_2=\$LINENO
218 test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
219 test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
220") 2> /dev/null; then
221 :
222else 210else
223 as_candidate_shells= 211 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
224 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 212as_found=false
225for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH 213for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
226do 214do
227 IFS=$as_save_IFS 215 IFS=$as_save_IFS
228 test -z "$as_dir" && as_dir=. 216 test -z "$as_dir" && as_dir=.
229 case $as_dir in 217 as_found=:
218 case $as_dir in #(
230 /*) 219 /*)
231 for as_base in sh bash ksh sh5; do 220 for as_base in sh bash ksh sh5; do
232 as_candidate_shells="$as_candidate_shells $as_dir/$as_base" 221 # Try only shells that exist, to save several forks.
222 as_shell=$as_dir/$as_base
223 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
224 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
225 CONFIG_SHELL=$as_shell as_have_required=yes
226 if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
227 break 2
228fi
229fi
233 done;; 230 done;;
234 esac 231 esac
232 as_found=false
235done 233done
234$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
235 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
236 CONFIG_SHELL=$SHELL as_have_required=yes
237fi; }
236IFS=$as_save_IFS 238IFS=$as_save_IFS
237 239
238 240
239 for as_shell in $as_candidate_shells $SHELL; do 241 if test "x$CONFIG_SHELL" != x; then :
240 # Try only shells that exist, to save several forks. 242 export CONFIG_SHELL
241 if { test -f "$as_shell" || test -f "$as_shell.exe"; } && 243 # We cannot yet assume a decent shell, so we have to provide a
242 { ("$as_shell") 2> /dev/null <<\_ASEOF 244# neutralization value for shells without unset; and this also
243if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 245# works around shells that cannot unset nonexistent variables.
244 emulate sh 246# Preserve -v and -x to the replacement shell.
245 NULLCMD=: 247BASH_ENV=/dev/null
246 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 248ENV=/dev/null
247 # is contrary to our usage. Disable this feature. 249(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
248 alias -g '${1+"$@"}'='"$@"' 250case $- in # ((((
249 setopt NO_GLOB_SUBST 251 *v*x* | *x*v* ) as_opts=-vx ;;
250else 252 *v* ) as_opts=-v ;;
251 case `(set -o) 2>/dev/null` in 253 *x* ) as_opts=-x ;;
252 *posix*) set -o posix ;; 254 * ) as_opts= ;;
253esac 255esac
254 256exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
257# Admittedly, this is quite paranoid, since all the known shells bail
258# out after a failed `exec'.
259$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
260exit 255
261fi
262
263 if test x$as_have_required = xno; then :
264 $as_echo "$0: This script requires a shell more modern than all"
265 $as_echo "$0: the shells that I found on your system."
266 if test x${ZSH_VERSION+set} = xset ; then
267 $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
268 $as_echo "$0: be upgraded to zsh 4.3.4 or later."
269 else
270 $as_echo "$0: Please tell bug-autoconf@gnu.org and
271$0: openssh-unix-dev@mindrot.org about your system,
272$0: including any error possibly output before this
273$0: message. Then install a modern shell, or manually run
274$0: the script under such a shell if you do have one."
275 fi
276 exit 1
255fi 277fi
256
257
258:
259_ASEOF
260}; then
261 CONFIG_SHELL=$as_shell
262 as_have_required=yes
263 if { "$as_shell" 2> /dev/null <<\_ASEOF
264if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
265 emulate sh
266 NULLCMD=:
267 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
268 # is contrary to our usage. Disable this feature.
269 alias -g '${1+"$@"}'='"$@"'
270 setopt NO_GLOB_SUBST
271else
272 case `(set -o) 2>/dev/null` in
273 *posix*) set -o posix ;;
274esac
275
276fi 278fi
279fi
280SHELL=${CONFIG_SHELL-/bin/sh}
281export SHELL
282# Unset more variables known to interfere with behavior of common tools.
283CLICOLOR_FORCE= GREP_OPTIONS=
284unset CLICOLOR_FORCE GREP_OPTIONS
277 285
278 286## --------------------- ##
279: 287## M4sh Shell Functions. ##
280(as_func_return () { 288## --------------------- ##
281 (exit $1) 289# as_fn_unset VAR
282} 290# ---------------
283as_func_success () { 291# Portably unset VAR.
284 as_func_return 0 292as_fn_unset ()
285} 293{
286as_func_failure () { 294 { eval $1=; unset $1;}
287 as_func_return 1
288}
289as_func_ret_success () {
290 return 0
291}
292as_func_ret_failure () {
293 return 1
294} 295}
296as_unset=as_fn_unset
295 297
296exitcode=0 298# as_fn_set_status STATUS
297if as_func_success; then 299# -----------------------
298 : 300# Set $? to STATUS, without forking.
299else 301as_fn_set_status ()
300 exitcode=1 302{
301 echo as_func_success failed. 303 return $1
302fi 304} # as_fn_set_status
303
304if as_func_failure; then
305 exitcode=1
306 echo as_func_failure succeeded.
307fi
308 305
309if as_func_ret_success; then 306# as_fn_exit STATUS
310 : 307# -----------------
311else 308# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
312 exitcode=1 309as_fn_exit ()
313 echo as_func_ret_success failed. 310{
314fi 311 set +e
312 as_fn_set_status $1
313 exit $1
314} # as_fn_exit
315 315
316if as_func_ret_failure; then 316# as_fn_mkdir_p
317 exitcode=1 317# -------------
318 echo as_func_ret_failure succeeded. 318# Create "$as_dir" as a directory, including parents if necessary.
319fi 319as_fn_mkdir_p ()
320{
320 321
321if ( set x; as_func_ret_success y && test x = "$1" ); then 322 case $as_dir in #(
322 : 323 -*) as_dir=./$as_dir;;
324 esac
325 test -d "$as_dir" || eval $as_mkdir_p || {
326 as_dirs=
327 while :; do
328 case $as_dir in #(
329 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
330 *) as_qdir=$as_dir;;
331 esac
332 as_dirs="'$as_qdir' $as_dirs"
333 as_dir=`$as_dirname -- "$as_dir" ||
334$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
335 X"$as_dir" : 'X\(//\)[^/]' \| \
336 X"$as_dir" : 'X\(//\)$' \| \
337 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
338$as_echo X"$as_dir" |
339 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
340 s//\1/
341 q
342 }
343 /^X\(\/\/\)[^/].*/{
344 s//\1/
345 q
346 }
347 /^X\(\/\/\)$/{
348 s//\1/
349 q
350 }
351 /^X\(\/\).*/{
352 s//\1/
353 q
354 }
355 s/.*/./; q'`
356 test -d "$as_dir" && break
357 done
358 test -z "$as_dirs" || eval "mkdir $as_dirs"
359 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
360
361
362} # as_fn_mkdir_p
363
364# as_fn_executable_p FILE
365# -----------------------
366# Test if FILE is an executable regular file.
367as_fn_executable_p ()
368{
369 test -f "$1" && test -x "$1"
370} # as_fn_executable_p
371# as_fn_append VAR VALUE
372# ----------------------
373# Append the text in VALUE to the end of the definition contained in VAR. Take
374# advantage of any shell optimizations that allow amortized linear growth over
375# repeated appends, instead of the typical quadratic growth present in naive
376# implementations.
377if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
378 eval 'as_fn_append ()
379 {
380 eval $1+=\$2
381 }'
323else 382else
324 exitcode=1 383 as_fn_append ()
325 echo positional parameters were not saved. 384 {
326fi 385 eval $1=\$$1\$2
327 386 }
328test $exitcode = 0) || { (exit 1); exit 1; } 387fi # as_fn_append
329 388
330( 389# as_fn_arith ARG...
331 as_lineno_1=$LINENO 390# ------------------
332 as_lineno_2=$LINENO 391# Perform arithmetic evaluation on the ARGs, and store the result in the
333 test "x$as_lineno_1" != "x$as_lineno_2" && 392# global $as_val. Take advantage of shells that can avoid forks. The arguments
334 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } 393# must be portable across $(()) and expr.
335 394if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
336_ASEOF 395 eval 'as_fn_arith ()
337}; then 396 {
338 break 397 as_val=$(( $* ))
339fi 398 }'
340
341fi
342
343 done
344
345 if test "x$CONFIG_SHELL" != x; then
346 for as_var in BASH_ENV ENV
347 do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
348 done
349 export CONFIG_SHELL
350 exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
351fi
352
353
354 if test $as_have_required = no; then
355 echo This script requires a shell more modern than all the
356 echo shells that I found on your system. Please install a
357 echo modern shell, or manually run the script under such a
358 echo shell if you do have one.
359 { (exit 1); exit 1; }
360fi
361
362
363fi
364
365fi
366
367
368
369(eval "as_func_return () {
370 (exit \$1)
371}
372as_func_success () {
373 as_func_return 0
374}
375as_func_failure () {
376 as_func_return 1
377}
378as_func_ret_success () {
379 return 0
380}
381as_func_ret_failure () {
382 return 1
383}
384
385exitcode=0
386if as_func_success; then
387 :
388else 399else
389 exitcode=1 400 as_fn_arith ()
390 echo as_func_success failed. 401 {
391fi 402 as_val=`expr "$@" || test $? -eq 1`
392 403 }
393if as_func_failure; then 404fi # as_fn_arith
394 exitcode=1 405
395 echo as_func_failure succeeded. 406
396fi 407# as_fn_error STATUS ERROR [LINENO LOG_FD]
408# ----------------------------------------
409# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
410# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
411# script with STATUS, using 1 if that was 0.
412as_fn_error ()
413{
414 as_status=$1; test $as_status -eq 0 && as_status=1
415 if test "$4"; then
416 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
417 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
418 fi
419 $as_echo "$as_me: error: $2" >&2
420 as_fn_exit $as_status
421} # as_fn_error
397 422
398if as_func_ret_success; then 423if expr a : '\(a\)' >/dev/null 2>&1 &&
399 : 424 test "X`expr 00001 : '.*\(...\)'`" = X001; then
425 as_expr=expr
400else 426else
401 exitcode=1 427 as_expr=false
402 echo as_func_ret_success failed.
403fi 428fi
404 429
405if as_func_ret_failure; then 430if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
406 exitcode=1 431 as_basename=basename
407 echo as_func_ret_failure succeeded. 432else
433 as_basename=false
408fi 434fi
409 435
410if ( set x; as_func_ret_success y && test x = \"\$1\" ); then 436if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
411 : 437 as_dirname=dirname
412else 438else
413 exitcode=1 439 as_dirname=false
414 echo positional parameters were not saved.
415fi 440fi
416 441
417test \$exitcode = 0") || { 442as_me=`$as_basename -- "$0" ||
418 echo No shell found that supports shell functions. 443$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
419 echo Please tell autoconf@gnu.org about your system, 444 X"$0" : 'X\(//\)$' \| \
420 echo including any error possibly output before this 445 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
421 echo message 446$as_echo X/"$0" |
422} 447 sed '/^.*\/\([^/][^/]*\)\/*$/{
423 448 s//\1/
449 q
450 }
451 /^X\/\(\/\/\)$/{
452 s//\1/
453 q
454 }
455 /^X\/\(\/\).*/{
456 s//\1/
457 q
458 }
459 s/.*/./; q'`
424 460
461# Avoid depending upon Character Ranges.
462as_cr_letters='abcdefghijklmnopqrstuvwxyz'
463as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
464as_cr_Letters=$as_cr_letters$as_cr_LETTERS
465as_cr_digits='0123456789'
466as_cr_alnum=$as_cr_Letters$as_cr_digits
425 467
426 as_lineno_1=$LINENO
427 as_lineno_2=$LINENO
428 test "x$as_lineno_1" != "x$as_lineno_2" &&
429 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
430 468
431 # Create $as_me.lineno as a copy of $as_myself, but with $LINENO 469 as_lineno_1=$LINENO as_lineno_1a=$LINENO
432 # uniformly replaced by the line number. The first 'sed' inserts a 470 as_lineno_2=$LINENO as_lineno_2a=$LINENO
433 # line-number line after each line using $LINENO; the second 'sed' 471 eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
434 # does the real work. The second script uses 'N' to pair each 472 test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
435 # line-number line with the line containing $LINENO, and appends 473 # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
436 # trailing '-' during substitution so that $LINENO is not a special
437 # case at line end.
438 # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
439 # scripts with optimization help from Paolo Bonzini. Blame Lee
440 # E. McMahon (1931-1989) for sed's syntax. :-)
441 sed -n ' 474 sed -n '
442 p 475 p
443 /[$]LINENO/= 476 /[$]LINENO/=
@@ -454,9 +487,12 @@ test \$exitcode = 0") || {
454 s/-\n.*// 487 s/-\n.*//
455 ' >$as_me.lineno && 488 ' >$as_me.lineno &&
456 chmod +x "$as_me.lineno" || 489 chmod +x "$as_me.lineno" ||
457 { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 490 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
458 { (exit 1); exit 1; }; }
459 491
492 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
493 # already done that, so ensure we don't try to do so again and fall
494 # in an infinite loop. This has already happened in practice.
495 _as_can_reexec=no; export _as_can_reexec
460 # Don't try to exec as it changes $[0], causing all sort of problems 496 # Don't try to exec as it changes $[0], causing all sort of problems
461 # (the dirname of $[0] is not the place where we might find the 497 # (the dirname of $[0] is not the place where we might find the
462 # original and so on. Autoconf is especially sensitive to this). 498 # original and so on. Autoconf is especially sensitive to this).
@@ -465,84 +501,55 @@ test \$exitcode = 0") || {
465 exit 501 exit
466} 502}
467 503
468
469if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
470 as_dirname=dirname
471else
472 as_dirname=false
473fi
474
475ECHO_C= ECHO_N= ECHO_T= 504ECHO_C= ECHO_N= ECHO_T=
476case `echo -n x` in 505case `echo -n x` in #(((((
477-n*) 506-n*)
478 case `echo 'x\c'` in 507 case `echo 'xy\c'` in
479 *c*) ECHO_T=' ';; # ECHO_T is single tab character. 508 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
480 *) ECHO_C='\c';; 509 xy) ECHO_C='\c';;
510 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
511 ECHO_T=' ';;
481 esac;; 512 esac;;
482*) 513*)
483 ECHO_N='-n';; 514 ECHO_N='-n';;
484esac 515esac
485 516
486if expr a : '\(a\)' >/dev/null 2>&1 &&
487 test "X`expr 00001 : '.*\(...\)'`" = X001; then
488 as_expr=expr
489else
490 as_expr=false
491fi
492
493rm -f conf$$ conf$$.exe conf$$.file 517rm -f conf$$ conf$$.exe conf$$.file
494if test -d conf$$.dir; then 518if test -d conf$$.dir; then
495 rm -f conf$$.dir/conf$$.file 519 rm -f conf$$.dir/conf$$.file
496else 520else
497 rm -f conf$$.dir 521 rm -f conf$$.dir
498 mkdir conf$$.dir 522 mkdir conf$$.dir 2>/dev/null
499fi 523fi
500echo >conf$$.file 524if (echo >conf$$.file) 2>/dev/null; then
501if ln -s conf$$.file conf$$ 2>/dev/null; then 525 if ln -s conf$$.file conf$$ 2>/dev/null; then
502 as_ln_s='ln -s' 526 as_ln_s='ln -s'
503 # ... but there are two gotchas: 527 # ... but there are two gotchas:
504 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 528 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
505 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 529 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
506 # In both cases, we have to default to `cp -p'. 530 # In both cases, we have to default to `cp -pR'.
507 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 531 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
508 as_ln_s='cp -p' 532 as_ln_s='cp -pR'
509elif ln conf$$.file conf$$ 2>/dev/null; then 533 elif ln conf$$.file conf$$ 2>/dev/null; then
510 as_ln_s=ln 534 as_ln_s=ln
511else 535 else
512 as_ln_s='cp -p' 536 as_ln_s='cp -pR'
537 fi
538else
539 as_ln_s='cp -pR'
513fi 540fi
514rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file 541rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
515rmdir conf$$.dir 2>/dev/null 542rmdir conf$$.dir 2>/dev/null
516 543
517if mkdir -p . 2>/dev/null; then 544if mkdir -p . 2>/dev/null; then
518 as_mkdir_p=: 545 as_mkdir_p='mkdir -p "$as_dir"'
519else 546else
520 test -d ./-p && rmdir ./-p 547 test -d ./-p && rmdir ./-p
521 as_mkdir_p=false 548 as_mkdir_p=false
522fi 549fi
523 550
524if test -x / >/dev/null 2>&1; then 551as_test_x='test -x'
525 as_test_x='test -x' 552as_executable_p=as_fn_executable_p
526else
527 if ls -dL / >/dev/null 2>&1; then
528 as_ls_L_option=L
529 else
530 as_ls_L_option=
531 fi
532 as_test_x='
533 eval sh -c '\''
534 if test -d "$1"; then
535 test -d "$1/.";
536 else
537 case $1 in
538 -*)set "./$1";;
539 esac;
540 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
541 ???[sx]*):;;*)false;;esac;fi
542 '\'' sh
543 '
544fi
545as_executable_p=$as_test_x
546 553
547# Sed expression to map a string onto a valid CPP name. 554# Sed expression to map a string onto a valid CPP name.
548as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" 555as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -551,11 +558,11 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
551as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" 558as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
552 559
553 560
554 561test -n "$DJDIR" || exec 7<&0 </dev/null
555exec 7<&0 </dev/null 6>&1 562exec 6>&1
556 563
557# Name of the host. 564# Name of the host.
558# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, 565# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
559# so uname gets run too. 566# so uname gets run too.
560ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` 567ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
561 568
@@ -570,7 +577,6 @@ cross_compiling=no
570subdirs= 577subdirs=
571MFLAGS= 578MFLAGS=
572MAKEFLAGS= 579MAKEFLAGS=
573SHELL=${CONFIG_SHELL-/bin/sh}
574 580
575# Identity of this package. 581# Identity of this package.
576PACKAGE_NAME='OpenSSH' 582PACKAGE_NAME='OpenSSH'
@@ -578,6 +584,7 @@ PACKAGE_TARNAME='openssh'
578PACKAGE_VERSION='Portable' 584PACKAGE_VERSION='Portable'
579PACKAGE_STRING='OpenSSH Portable' 585PACKAGE_STRING='OpenSSH Portable'
580PACKAGE_BUGREPORT='openssh-unix-dev@mindrot.org' 586PACKAGE_BUGREPORT='openssh-unix-dev@mindrot.org'
587PACKAGE_URL=''
581 588
582ac_unique_file="ssh.c" 589ac_unique_file="ssh.c"
583# Factoring default headers for most tests. 590# Factoring default headers for most tests.
@@ -616,111 +623,173 @@ ac_includes_default="\
616# include <unistd.h> 623# include <unistd.h>
617#endif" 624#endif"
618 625
619ac_subst_vars='SHELL 626ac_subst_vars='LTLIBOBJS
620PATH_SEPARATOR
621PACKAGE_NAME
622PACKAGE_TARNAME
623PACKAGE_VERSION
624PACKAGE_STRING
625PACKAGE_BUGREPORT
626exec_prefix
627prefix
628program_transform_name
629bindir
630sbindir
631libexecdir
632datarootdir
633datadir
634sysconfdir
635sharedstatedir
636localstatedir
637includedir
638oldincludedir
639docdir
640infodir
641htmldir
642dvidir
643pdfdir
644psdir
645libdir
646localedir
647mandir
648DEFS
649ECHO_C
650ECHO_N
651ECHO_T
652LIBS
653build_alias
654host_alias
655target_alias
656CC
657CFLAGS
658LDFLAGS
659CPPFLAGS
660ac_ct_CC
661EXEEXT
662OBJEXT
663build
664build_cpu
665build_vendor
666build_os
667host
668host_cpu
669host_vendor
670host_os
671CPP
672GREP
673EGREP
674AWK
675RANLIB
676INSTALL_PROGRAM
677INSTALL_SCRIPT
678INSTALL_DATA
679AR
680ac_ct_AR
681CAT
682KILL
683PERL
684SED
685ENT
686TEST_MINUS_S_SH
687SH
688GROFF
689NROFF
690MANDOC
691TEST_SHELL
692MANFMT
693PATH_GROUPADD_PROG
694PATH_USERADD_PROG
695MAKE_PACKAGE_SUPPORTED
696STARTUP_SCRIPT_SHELL
697LOGIN_PROGRAM_FALLBACK
698PATH_PASSWD_PROG
699LD
700PKGCONFIG
701LIBEDIT
702TEST_SSH_ECC
703COMMENT_OUT_ECC
704SSH_PRIVSEP_USER
705SSHLIBS
706SSHDLIBS
707KRB5CONF
708GSSLIBS
709K5LIBS
710PRIVSEP_PATH
711xauth_path
712STRIP_OPT
713XAUTH_PATH
714MANTYPE
715mansubdir
716user_path
717piddir
718TEST_SSH_IPV6
719TEST_MALLOC_OPTIONS
720UNSUPPORTED_ALGORITHMS
721LIBOBJS 627LIBOBJS
722LTLIBOBJS' 628UNSUPPORTED_ALGORITHMS
629TEST_MALLOC_OPTIONS
630TEST_SSH_UTF8
631TEST_SSH_IPV6
632piddir
633user_path
634mansubdir
635MANTYPE
636XAUTH_PATH
637STRIP_OPT
638xauth_path
639PRIVSEP_PATH
640K5LIBS
641GSSLIBS
642KRB5CONF
643SSHDLIBS
644SSHLIBS
645SSH_PRIVSEP_USER
646COMMENT_OUT_ECC
647TEST_SSH_ECC
648LIBEDIT
649PKGCONFIG
650COMMENT_OUT_RSA1
651LD
652PATH_PASSWD_PROG
653STARTUP_SCRIPT_SHELL
654MAKE_PACKAGE_SUPPORTED
655PATH_USERADD_PROG
656PATH_GROUPADD_PROG
657MANFMT
658TEST_SHELL
659MANDOC
660NROFF
661GROFF
662SH
663TEST_MINUS_S_SH
664ENT
665SED
666PERL
667KILL
668CAT
669ac_ct_AR
670AR
671INSTALL_DATA
672INSTALL_SCRIPT
673INSTALL_PROGRAM
674RANLIB
675AWK
676EGREP
677GREP
678CPP
679host_os
680host_vendor
681host_cpu
682host
683build_os
684build_vendor
685build_cpu
686build
687OBJEXT
688EXEEXT
689ac_ct_CC
690CPPFLAGS
691LDFLAGS
692CFLAGS
693CC
694target_alias
695host_alias
696build_alias
697LIBS
698ECHO_T
699ECHO_N
700ECHO_C
701DEFS
702mandir
703localedir
704libdir
705psdir
706pdfdir
707dvidir
708htmldir
709infodir
710docdir
711oldincludedir
712includedir
713localstatedir
714sharedstatedir
715sysconfdir
716datadir
717datarootdir
718libexecdir
719sbindir
720bindir
721program_transform_name
722prefix
723exec_prefix
724PACKAGE_URL
725PACKAGE_BUGREPORT
726PACKAGE_STRING
727PACKAGE_VERSION
728PACKAGE_TARNAME
729PACKAGE_NAME
730PATH_SEPARATOR
731SHELL'
723ac_subst_files='' 732ac_subst_files=''
733ac_user_opts='
734enable_option_checking
735enable_largefile
736with_openssl
737with_ssh1
738with_stackprotect
739with_hardening
740with_rpath
741with_cflags
742with_cppflags
743with_ldflags
744with_libs
745with_Werror
746with_solaris_contracts
747with_solaris_projects
748with_solaris_privs
749with_osfsia
750with_zlib
751with_zlib_version_check
752with_skey
753with_ldns
754with_libedit
755with_audit
756with_pie
757enable_pkcs11
758with_ssl_dir
759with_openssl_header_check
760with_ssl_engine
761with_prngd_port
762with_prngd_socket
763with_pam
764with_pam_service
765with_privsep_user
766with_sandbox
767with_selinux
768with_kerberos5
769with_privsep_path
770with_xauth
771enable_strip
772with_maildir
773with_mantype
774with_md5_passwords
775with_shadow
776with_ipaddr_display
777enable_etc_default_login
778with_default_path
779with_superuser_path
780with_4in6
781with_bsd_auth
782with_pid_dir
783enable_lastlog
784enable_utmp
785enable_utmpx
786enable_wtmp
787enable_wtmpx
788enable_libutil
789enable_pututline
790enable_pututxline
791with_lastlog
792'
724 ac_precious_vars='build_alias 793 ac_precious_vars='build_alias
725host_alias 794host_alias
726target_alias 795target_alias
@@ -735,6 +804,8 @@ CPP'
735# Initialize some variables set by options. 804# Initialize some variables set by options.
736ac_init_help= 805ac_init_help=
737ac_init_version=false 806ac_init_version=false
807ac_unrecognized_opts=
808ac_unrecognized_sep=
738# The variables have the same names as the options, with 809# The variables have the same names as the options, with
739# dashes changed to underlines. 810# dashes changed to underlines.
740cache_file=/dev/null 811cache_file=/dev/null
@@ -790,8 +861,9 @@ do
790 fi 861 fi
791 862
792 case $ac_option in 863 case $ac_option in
793 *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; 864 *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
794 *) ac_optarg=yes ;; 865 *=) ac_optarg= ;;
866 *) ac_optarg=yes ;;
795 esac 867 esac
796 868
797 # Accept the important Cygnus configure options, so we can diagnose typos. 869 # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -833,13 +905,20 @@ do
833 datarootdir=$ac_optarg ;; 905 datarootdir=$ac_optarg ;;
834 906
835 -disable-* | --disable-*) 907 -disable-* | --disable-*)
836 ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` 908 ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
837 # Reject names that are not valid shell variable names. 909 # Reject names that are not valid shell variable names.
838 expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && 910 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
839 { echo "$as_me: error: invalid feature name: $ac_feature" >&2 911 as_fn_error $? "invalid feature name: $ac_useropt"
840 { (exit 1); exit 1; }; } 912 ac_useropt_orig=$ac_useropt
841 ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` 913 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
842 eval enable_$ac_feature=no ;; 914 case $ac_user_opts in
915 *"
916"enable_$ac_useropt"
917"*) ;;
918 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
919 ac_unrecognized_sep=', ';;
920 esac
921 eval enable_$ac_useropt=no ;;
843 922
844 -docdir | --docdir | --docdi | --doc | --do) 923 -docdir | --docdir | --docdi | --doc | --do)
845 ac_prev=docdir ;; 924 ac_prev=docdir ;;
@@ -852,13 +931,20 @@ do
852 dvidir=$ac_optarg ;; 931 dvidir=$ac_optarg ;;
853 932
854 -enable-* | --enable-*) 933 -enable-* | --enable-*)
855 ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` 934 ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
856 # Reject names that are not valid shell variable names. 935 # Reject names that are not valid shell variable names.
857 expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && 936 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
858 { echo "$as_me: error: invalid feature name: $ac_feature" >&2 937 as_fn_error $? "invalid feature name: $ac_useropt"
859 { (exit 1); exit 1; }; } 938 ac_useropt_orig=$ac_useropt
860 ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` 939 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
861 eval enable_$ac_feature=\$ac_optarg ;; 940 case $ac_user_opts in
941 *"
942"enable_$ac_useropt"
943"*) ;;
944 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
945 ac_unrecognized_sep=', ';;
946 esac
947 eval enable_$ac_useropt=\$ac_optarg ;;
862 948
863 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ 949 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
864 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ 950 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1049,22 +1135,36 @@ do
1049 ac_init_version=: ;; 1135 ac_init_version=: ;;
1050 1136
1051 -with-* | --with-*) 1137 -with-* | --with-*)
1052 ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` 1138 ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1053 # Reject names that are not valid shell variable names. 1139 # Reject names that are not valid shell variable names.
1054 expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && 1140 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1055 { echo "$as_me: error: invalid package name: $ac_package" >&2 1141 as_fn_error $? "invalid package name: $ac_useropt"
1056 { (exit 1); exit 1; }; } 1142 ac_useropt_orig=$ac_useropt
1057 ac_package=`echo $ac_package | sed 's/[-.]/_/g'` 1143 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1058 eval with_$ac_package=\$ac_optarg ;; 1144 case $ac_user_opts in
1145 *"
1146"with_$ac_useropt"
1147"*) ;;
1148 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
1149 ac_unrecognized_sep=', ';;
1150 esac
1151 eval with_$ac_useropt=\$ac_optarg ;;
1059 1152
1060 -without-* | --without-*) 1153 -without-* | --without-*)
1061 ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` 1154 ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1062 # Reject names that are not valid shell variable names. 1155 # Reject names that are not valid shell variable names.
1063 expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && 1156 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1064 { echo "$as_me: error: invalid package name: $ac_package" >&2 1157 as_fn_error $? "invalid package name: $ac_useropt"
1065 { (exit 1); exit 1; }; } 1158 ac_useropt_orig=$ac_useropt
1066 ac_package=`echo $ac_package | sed 's/[-.]/_/g'` 1159 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1067 eval with_$ac_package=no ;; 1160 case $ac_user_opts in
1161 *"
1162"with_$ac_useropt"
1163"*) ;;
1164 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
1165 ac_unrecognized_sep=', ';;
1166 esac
1167 eval with_$ac_useropt=no ;;
1068 1168
1069 --x) 1169 --x)
1070 # Obsolete; use --with-x. 1170 # Obsolete; use --with-x.
@@ -1084,26 +1184,26 @@ do
1084 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) 1184 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1085 x_libraries=$ac_optarg ;; 1185 x_libraries=$ac_optarg ;;
1086 1186
1087 -*) { echo "$as_me: error: unrecognized option: $ac_option 1187 -*) as_fn_error $? "unrecognized option: \`$ac_option'
1088Try \`$0 --help' for more information." >&2 1188Try \`$0 --help' for more information"
1089 { (exit 1); exit 1; }; }
1090 ;; 1189 ;;
1091 1190
1092 *=*) 1191 *=*)
1093 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` 1192 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1094 # Reject names that are not valid shell variable names. 1193 # Reject names that are not valid shell variable names.
1095 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && 1194 case $ac_envvar in #(
1096 { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 1195 '' | [0-9]* | *[!_$as_cr_alnum]* )
1097 { (exit 1); exit 1; }; } 1196 as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
1197 esac
1098 eval $ac_envvar=\$ac_optarg 1198 eval $ac_envvar=\$ac_optarg
1099 export $ac_envvar ;; 1199 export $ac_envvar ;;
1100 1200
1101 *) 1201 *)
1102 # FIXME: should be removed in autoconf 3.0. 1202 # FIXME: should be removed in autoconf 3.0.
1103 echo "$as_me: WARNING: you should use --build, --host, --target" >&2 1203 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1104 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 1204 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1105 echo "$as_me: WARNING: invalid host type: $ac_option" >&2 1205 $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1106 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} 1206 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
1107 ;; 1207 ;;
1108 1208
1109 esac 1209 esac
@@ -1111,23 +1211,36 @@ done
1111 1211
1112if test -n "$ac_prev"; then 1212if test -n "$ac_prev"; then
1113 ac_option=--`echo $ac_prev | sed 's/_/-/g'` 1213 ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1114 { echo "$as_me: error: missing argument to $ac_option" >&2 1214 as_fn_error $? "missing argument to $ac_option"
1115 { (exit 1); exit 1; }; }
1116fi 1215fi
1117 1216
1118# Be sure to have absolute directory names. 1217if test -n "$ac_unrecognized_opts"; then
1218 case $enable_option_checking in
1219 no) ;;
1220 fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
1221 *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
1222 esac
1223fi
1224
1225# Check all directory arguments for consistency.
1119for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ 1226for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1120 datadir sysconfdir sharedstatedir localstatedir includedir \ 1227 datadir sysconfdir sharedstatedir localstatedir includedir \
1121 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ 1228 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1122 libdir localedir mandir 1229 libdir localedir mandir
1123do 1230do
1124 eval ac_val=\$$ac_var 1231 eval ac_val=\$$ac_var
1232 # Remove trailing slashes.
1233 case $ac_val in
1234 */ )
1235 ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
1236 eval $ac_var=\$ac_val;;
1237 esac
1238 # Be sure to have absolute directory names.
1125 case $ac_val in 1239 case $ac_val in
1126 [\\/$]* | ?:[\\/]* ) continue;; 1240 [\\/$]* | ?:[\\/]* ) continue;;
1127 NONE | '' ) case $ac_var in *prefix ) continue;; esac;; 1241 NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1128 esac 1242 esac
1129 { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 1243 as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
1130 { (exit 1); exit 1; }; }
1131done 1244done
1132 1245
1133# There might be people who depend on the old broken behavior: `$host' 1246# There might be people who depend on the old broken behavior: `$host'
@@ -1141,8 +1254,6 @@ target=$target_alias
1141if test "x$host_alias" != x; then 1254if test "x$host_alias" != x; then
1142 if test "x$build_alias" = x; then 1255 if test "x$build_alias" = x; then
1143 cross_compiling=maybe 1256 cross_compiling=maybe
1144 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
1145 If a cross compiler is detected then cross compile mode will be used." >&2
1146 elif test "x$build_alias" != "x$host_alias"; then 1257 elif test "x$build_alias" != "x$host_alias"; then
1147 cross_compiling=yes 1258 cross_compiling=yes
1148 fi 1259 fi
@@ -1157,23 +1268,21 @@ test "$silent" = yes && exec 6>/dev/null
1157ac_pwd=`pwd` && test -n "$ac_pwd" && 1268ac_pwd=`pwd` && test -n "$ac_pwd" &&
1158ac_ls_di=`ls -di .` && 1269ac_ls_di=`ls -di .` &&
1159ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || 1270ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1160 { echo "$as_me: error: Working directory cannot be determined" >&2 1271 as_fn_error $? "working directory cannot be determined"
1161 { (exit 1); exit 1; }; }
1162test "X$ac_ls_di" = "X$ac_pwd_ls_di" || 1272test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1163 { echo "$as_me: error: pwd does not report name of working directory" >&2 1273 as_fn_error $? "pwd does not report name of working directory"
1164 { (exit 1); exit 1; }; }
1165 1274
1166 1275
1167# Find the source files, if location was not specified. 1276# Find the source files, if location was not specified.
1168if test -z "$srcdir"; then 1277if test -z "$srcdir"; then
1169 ac_srcdir_defaulted=yes 1278 ac_srcdir_defaulted=yes
1170 # Try the directory containing this script, then the parent directory. 1279 # Try the directory containing this script, then the parent directory.
1171 ac_confdir=`$as_dirname -- "$0" || 1280 ac_confdir=`$as_dirname -- "$as_myself" ||
1172$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 1281$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1173 X"$0" : 'X\(//\)[^/]' \| \ 1282 X"$as_myself" : 'X\(//\)[^/]' \| \
1174 X"$0" : 'X\(//\)$' \| \ 1283 X"$as_myself" : 'X\(//\)$' \| \
1175 X"$0" : 'X\(/\)' \| . 2>/dev/null || 1284 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
1176echo X"$0" | 1285$as_echo X"$as_myself" |
1177 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 1286 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1178 s//\1/ 1287 s//\1/
1179 q 1288 q
@@ -1200,13 +1309,11 @@ else
1200fi 1309fi
1201if test ! -r "$srcdir/$ac_unique_file"; then 1310if test ! -r "$srcdir/$ac_unique_file"; then
1202 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." 1311 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1203 { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 1312 as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
1204 { (exit 1); exit 1; }; }
1205fi 1313fi
1206ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" 1314ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1207ac_abs_confdir=`( 1315ac_abs_confdir=`(
1208 cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 1316 cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
1209 { (exit 1); exit 1; }; }
1210 pwd)` 1317 pwd)`
1211# When building in place, set srcdir=. 1318# When building in place, set srcdir=.
1212if test "$ac_abs_confdir" = "$ac_pwd"; then 1319if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1246,7 +1353,7 @@ Configuration:
1246 --help=short display options specific to this package 1353 --help=short display options specific to this package
1247 --help=recursive display the short help of all the included packages 1354 --help=recursive display the short help of all the included packages
1248 -V, --version display version information and exit 1355 -V, --version display version information and exit
1249 -q, --quiet, --silent do not print \`checking...' messages 1356 -q, --quiet, --silent do not print \`checking ...' messages
1250 --cache-file=FILE cache test results in FILE [disabled] 1357 --cache-file=FILE cache test results in FILE [disabled]
1251 -C, --config-cache alias for \`--cache-file=config.cache' 1358 -C, --config-cache alias for \`--cache-file=config.cache'
1252 -n, --no-create do not create output files 1359 -n, --no-create do not create output files
@@ -1254,9 +1361,9 @@ Configuration:
1254 1361
1255Installation directories: 1362Installation directories:
1256 --prefix=PREFIX install architecture-independent files in PREFIX 1363 --prefix=PREFIX install architecture-independent files in PREFIX
1257 [$ac_default_prefix] 1364 [$ac_default_prefix]
1258 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX 1365 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
1259 [PREFIX] 1366 [PREFIX]
1260 1367
1261By default, \`make install' will install all the files in 1368By default, \`make install' will install all the files in
1262\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify 1369\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1266,25 +1373,25 @@ for instance \`--prefix=\$HOME'.
1266For better control, use the options below. 1373For better control, use the options below.
1267 1374
1268Fine tuning of the installation directories: 1375Fine tuning of the installation directories:
1269 --bindir=DIR user executables [EPREFIX/bin] 1376 --bindir=DIR user executables [EPREFIX/bin]
1270 --sbindir=DIR system admin executables [EPREFIX/sbin] 1377 --sbindir=DIR system admin executables [EPREFIX/sbin]
1271 --libexecdir=DIR program executables [EPREFIX/libexec] 1378 --libexecdir=DIR program executables [EPREFIX/libexec]
1272 --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 1379 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1273 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1380 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1274 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1381 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1275 --libdir=DIR object code libraries [EPREFIX/lib] 1382 --libdir=DIR object code libraries [EPREFIX/lib]
1276 --includedir=DIR C header files [PREFIX/include] 1383 --includedir=DIR C header files [PREFIX/include]
1277 --oldincludedir=DIR C header files for non-gcc [/usr/include] 1384 --oldincludedir=DIR C header files for non-gcc [/usr/include]
1278 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 1385 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
1279 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 1386 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
1280 --infodir=DIR info documentation [DATAROOTDIR/info] 1387 --infodir=DIR info documentation [DATAROOTDIR/info]
1281 --localedir=DIR locale-dependent data [DATAROOTDIR/locale] 1388 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
1282 --mandir=DIR man documentation [DATAROOTDIR/man] 1389 --mandir=DIR man documentation [DATAROOTDIR/man]
1283 --docdir=DIR documentation root [DATAROOTDIR/doc/openssh] 1390 --docdir=DIR documentation root [DATAROOTDIR/doc/openssh]
1284 --htmldir=DIR html documentation [DOCDIR] 1391 --htmldir=DIR html documentation [DOCDIR]
1285 --dvidir=DIR dvi documentation [DOCDIR] 1392 --dvidir=DIR dvi documentation [DOCDIR]
1286 --pdfdir=DIR pdf documentation [DOCDIR] 1393 --pdfdir=DIR pdf documentation [DOCDIR]
1287 --psdir=DIR ps documentation [DOCDIR] 1394 --psdir=DIR ps documentation [DOCDIR]
1288_ACEOF 1395_ACEOF
1289 1396
1290 cat <<\_ACEOF 1397 cat <<\_ACEOF
@@ -1302,6 +1409,7 @@ if test -n "$ac_init_help"; then
1302 cat <<\_ACEOF 1409 cat <<\_ACEOF
1303 1410
1304Optional Features: 1411Optional Features:
1412 --disable-option-checking ignore unrecognized --enable/--with options
1305 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) 1413 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
1306 --enable-FEATURE[=ARG] include FEATURE [ARG=yes] 1414 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1307 --disable-largefile omit support for large files 1415 --disable-largefile omit support for large files
@@ -1347,6 +1455,7 @@ Optional Packages:
1347 --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT 1455 --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT
1348 --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool) 1456 --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)
1349 --with-pam Enable PAM support 1457 --with-pam Enable PAM support
1458 --with-pam-service=name Specify PAM service name
1350 --with-privsep-user=user Specify non-privileged user for privilege separation 1459 --with-privsep-user=user Specify non-privileged user for privilege separation
1351 --with-sandbox=style Specify privilege separation sandbox (no, capsicum, darwin, rlimit, seccomp_filter, systrace, pledge) 1460 --with-sandbox=style Specify privilege separation sandbox (no, capsicum, darwin, rlimit, seccomp_filter, systrace, pledge)
1352 --with-selinux Enable SELinux support 1461 --with-selinux Enable SELinux support
@@ -1371,7 +1480,7 @@ Some influential environment variables:
1371 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a 1480 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
1372 nonstandard directory <lib dir> 1481 nonstandard directory <lib dir>
1373 LIBS libraries to pass to the linker, e.g. -l<library> 1482 LIBS libraries to pass to the linker, e.g. -l<library>
1374 CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if 1483 CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
1375 you have headers in a nonstandard directory <include dir> 1484 you have headers in a nonstandard directory <include dir>
1376 CPP C preprocessor 1485 CPP C preprocessor
1377 1486
@@ -1386,15 +1495,17 @@ fi
1386if test "$ac_init_help" = "recursive"; then 1495if test "$ac_init_help" = "recursive"; then
1387 # If there are subdirs, report their specific --help. 1496 # If there are subdirs, report their specific --help.
1388 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue 1497 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1389 test -d "$ac_dir" || continue 1498 test -d "$ac_dir" ||
1499 { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
1500 continue
1390 ac_builddir=. 1501 ac_builddir=.
1391 1502
1392case "$ac_dir" in 1503case "$ac_dir" in
1393.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; 1504.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1394*) 1505*)
1395 ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` 1506 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
1396 # A ".." for each directory in $ac_dir_suffix. 1507 # A ".." for each directory in $ac_dir_suffix.
1397 ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` 1508 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
1398 case $ac_top_builddir_sub in 1509 case $ac_top_builddir_sub in
1399 "") ac_top_builddir_sub=. ac_top_build_prefix= ;; 1510 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1400 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; 1511 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1430,7 +1541,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1430 echo && 1541 echo &&
1431 $SHELL "$ac_srcdir/configure" --help=recursive 1542 $SHELL "$ac_srcdir/configure" --help=recursive
1432 else 1543 else
1433 echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 1544 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1434 fi || ac_status=$? 1545 fi || ac_status=$?
1435 cd "$ac_pwd" || { ac_status=$?; break; } 1546 cd "$ac_pwd" || { ac_status=$?; break; }
1436 done 1547 done
@@ -1440,21 +1551,716 @@ test -n "$ac_init_help" && exit $ac_status
1440if $ac_init_version; then 1551if $ac_init_version; then
1441 cat <<\_ACEOF 1552 cat <<\_ACEOF
1442OpenSSH configure Portable 1553OpenSSH configure Portable
1443generated by GNU Autoconf 2.61 1554generated by GNU Autoconf 2.69
1444 1555
1445Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 1556Copyright (C) 2012 Free Software Foundation, Inc.
14462002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
1447This configure script is free software; the Free Software Foundation 1557This configure script is free software; the Free Software Foundation
1448gives unlimited permission to copy, distribute and modify it. 1558gives unlimited permission to copy, distribute and modify it.
1449_ACEOF 1559_ACEOF
1450 exit 1560 exit
1451fi 1561fi
1562
1563## ------------------------ ##
1564## Autoconf initialization. ##
1565## ------------------------ ##
1566
1567# ac_fn_c_try_compile LINENO
1568# --------------------------
1569# Try to compile conftest.$ac_ext, and return whether this succeeded.
1570ac_fn_c_try_compile ()
1571{
1572 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1573 rm -f conftest.$ac_objext
1574 if { { ac_try="$ac_compile"
1575case "(($ac_try" in
1576 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1577 *) ac_try_echo=$ac_try;;
1578esac
1579eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1580$as_echo "$ac_try_echo"; } >&5
1581 (eval "$ac_compile") 2>conftest.err
1582 ac_status=$?
1583 if test -s conftest.err; then
1584 grep -v '^ *+' conftest.err >conftest.er1
1585 cat conftest.er1 >&5
1586 mv -f conftest.er1 conftest.err
1587 fi
1588 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1589 test $ac_status = 0; } && {
1590 test -z "$ac_c_werror_flag" ||
1591 test ! -s conftest.err
1592 } && test -s conftest.$ac_objext; then :
1593 ac_retval=0
1594else
1595 $as_echo "$as_me: failed program was:" >&5
1596sed 's/^/| /' conftest.$ac_ext >&5
1597
1598 ac_retval=1
1599fi
1600 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1601 as_fn_set_status $ac_retval
1602
1603} # ac_fn_c_try_compile
1604
1605# ac_fn_c_try_run LINENO
1606# ----------------------
1607# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
1608# that executables *can* be run.
1609ac_fn_c_try_run ()
1610{
1611 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1612 if { { ac_try="$ac_link"
1613case "(($ac_try" in
1614 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1615 *) ac_try_echo=$ac_try;;
1616esac
1617eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1618$as_echo "$ac_try_echo"; } >&5
1619 (eval "$ac_link") 2>&5
1620 ac_status=$?
1621 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1622 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
1623 { { case "(($ac_try" in
1624 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1625 *) ac_try_echo=$ac_try;;
1626esac
1627eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1628$as_echo "$ac_try_echo"; } >&5
1629 (eval "$ac_try") 2>&5
1630 ac_status=$?
1631 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1632 test $ac_status = 0; }; }; then :
1633 ac_retval=0
1634else
1635 $as_echo "$as_me: program exited with status $ac_status" >&5
1636 $as_echo "$as_me: failed program was:" >&5
1637sed 's/^/| /' conftest.$ac_ext >&5
1638
1639 ac_retval=$ac_status
1640fi
1641 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1642 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1643 as_fn_set_status $ac_retval
1644
1645} # ac_fn_c_try_run
1646
1647# ac_fn_c_try_cpp LINENO
1648# ----------------------
1649# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
1650ac_fn_c_try_cpp ()
1651{
1652 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1653 if { { ac_try="$ac_cpp conftest.$ac_ext"
1654case "(($ac_try" in
1655 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1656 *) ac_try_echo=$ac_try;;
1657esac
1658eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1659$as_echo "$ac_try_echo"; } >&5
1660 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
1661 ac_status=$?
1662 if test -s conftest.err; then
1663 grep -v '^ *+' conftest.err >conftest.er1
1664 cat conftest.er1 >&5
1665 mv -f conftest.er1 conftest.err
1666 fi
1667 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1668 test $ac_status = 0; } > conftest.i && {
1669 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
1670 test ! -s conftest.err
1671 }; then :
1672 ac_retval=0
1673else
1674 $as_echo "$as_me: failed program was:" >&5
1675sed 's/^/| /' conftest.$ac_ext >&5
1676
1677 ac_retval=1
1678fi
1679 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1680 as_fn_set_status $ac_retval
1681
1682} # ac_fn_c_try_cpp
1683
1684# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
1685# -------------------------------------------------------
1686# Tests whether HEADER exists and can be compiled using the include files in
1687# INCLUDES, setting the cache variable VAR accordingly.
1688ac_fn_c_check_header_compile ()
1689{
1690 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1691 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1692$as_echo_n "checking for $2... " >&6; }
1693if eval \${$3+:} false; then :
1694 $as_echo_n "(cached) " >&6
1695else
1696 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1697/* end confdefs.h. */
1698$4
1699#include <$2>
1700_ACEOF
1701if ac_fn_c_try_compile "$LINENO"; then :
1702 eval "$3=yes"
1703else
1704 eval "$3=no"
1705fi
1706rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1707fi
1708eval ac_res=\$$3
1709 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1710$as_echo "$ac_res" >&6; }
1711 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1712
1713} # ac_fn_c_check_header_compile
1714
1715# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
1716# ---------------------------------------------
1717# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
1718# accordingly.
1719ac_fn_c_check_decl ()
1720{
1721 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1722 as_decl_name=`echo $2|sed 's/ *(.*//'`
1723 as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
1724 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
1725$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
1726if eval \${$3+:} false; then :
1727 $as_echo_n "(cached) " >&6
1728else
1729 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1730/* end confdefs.h. */
1731$4
1732int
1733main ()
1734{
1735#ifndef $as_decl_name
1736#ifdef __cplusplus
1737 (void) $as_decl_use;
1738#else
1739 (void) $as_decl_name;
1740#endif
1741#endif
1742
1743 ;
1744 return 0;
1745}
1746_ACEOF
1747if ac_fn_c_try_compile "$LINENO"; then :
1748 eval "$3=yes"
1749else
1750 eval "$3=no"
1751fi
1752rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1753fi
1754eval ac_res=\$$3
1755 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1756$as_echo "$ac_res" >&6; }
1757 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1758
1759} # ac_fn_c_check_decl
1760
1761# ac_fn_c_try_link LINENO
1762# -----------------------
1763# Try to link conftest.$ac_ext, and return whether this succeeded.
1764ac_fn_c_try_link ()
1765{
1766 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1767 rm -f conftest.$ac_objext conftest$ac_exeext
1768 if { { ac_try="$ac_link"
1769case "(($ac_try" in
1770 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1771 *) ac_try_echo=$ac_try;;
1772esac
1773eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1774$as_echo "$ac_try_echo"; } >&5
1775 (eval "$ac_link") 2>conftest.err
1776 ac_status=$?
1777 if test -s conftest.err; then
1778 grep -v '^ *+' conftest.err >conftest.er1
1779 cat conftest.er1 >&5
1780 mv -f conftest.er1 conftest.err
1781 fi
1782 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1783 test $ac_status = 0; } && {
1784 test -z "$ac_c_werror_flag" ||
1785 test ! -s conftest.err
1786 } && test -s conftest$ac_exeext && {
1787 test "$cross_compiling" = yes ||
1788 test -x conftest$ac_exeext
1789 }; then :
1790 ac_retval=0
1791else
1792 $as_echo "$as_me: failed program was:" >&5
1793sed 's/^/| /' conftest.$ac_ext >&5
1794
1795 ac_retval=1
1796fi
1797 # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
1798 # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
1799 # interfere with the next link command; also delete a directory that is
1800 # left behind by Apple's compiler. We do this before executing the actions.
1801 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1802 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1803 as_fn_set_status $ac_retval
1804
1805} # ac_fn_c_try_link
1806
1807# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
1808# -------------------------------------------------------
1809# Tests whether HEADER exists, giving a warning if it cannot be compiled using
1810# the include files in INCLUDES and setting the cache variable VAR
1811# accordingly.
1812ac_fn_c_check_header_mongrel ()
1813{
1814 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1815 if eval \${$3+:} false; then :
1816 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1817$as_echo_n "checking for $2... " >&6; }
1818if eval \${$3+:} false; then :
1819 $as_echo_n "(cached) " >&6
1820fi
1821eval ac_res=\$$3
1822 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1823$as_echo "$ac_res" >&6; }
1824else
1825 # Is the header compilable?
1826{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
1827$as_echo_n "checking $2 usability... " >&6; }
1828cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1829/* end confdefs.h. */
1830$4
1831#include <$2>
1832_ACEOF
1833if ac_fn_c_try_compile "$LINENO"; then :
1834 ac_header_compiler=yes
1835else
1836 ac_header_compiler=no
1837fi
1838rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1839{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
1840$as_echo "$ac_header_compiler" >&6; }
1841
1842# Is the header present?
1843{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
1844$as_echo_n "checking $2 presence... " >&6; }
1845cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1846/* end confdefs.h. */
1847#include <$2>
1848_ACEOF
1849if ac_fn_c_try_cpp "$LINENO"; then :
1850 ac_header_preproc=yes
1851else
1852 ac_header_preproc=no
1853fi
1854rm -f conftest.err conftest.i conftest.$ac_ext
1855{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
1856$as_echo "$ac_header_preproc" >&6; }
1857
1858# So? What about this header?
1859case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
1860 yes:no: )
1861 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
1862$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
1863 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1864$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1865 ;;
1866 no:yes:* )
1867 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
1868$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
1869 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
1870$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
1871 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
1872$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
1873 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
1874$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
1875 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1876$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1877( $as_echo "## ------------------------------------------- ##
1878## Report this to openssh-unix-dev@mindrot.org ##
1879## ------------------------------------------- ##"
1880 ) | sed "s/^/$as_me: WARNING: /" >&2
1881 ;;
1882esac
1883 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1884$as_echo_n "checking for $2... " >&6; }
1885if eval \${$3+:} false; then :
1886 $as_echo_n "(cached) " >&6
1887else
1888 eval "$3=\$ac_header_compiler"
1889fi
1890eval ac_res=\$$3
1891 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1892$as_echo "$ac_res" >&6; }
1893fi
1894 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1895
1896} # ac_fn_c_check_header_mongrel
1897
1898# ac_fn_c_check_func LINENO FUNC VAR
1899# ----------------------------------
1900# Tests whether FUNC exists, setting the cache variable VAR accordingly
1901ac_fn_c_check_func ()
1902{
1903 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1904 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1905$as_echo_n "checking for $2... " >&6; }
1906if eval \${$3+:} false; then :
1907 $as_echo_n "(cached) " >&6
1908else
1909 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1910/* end confdefs.h. */
1911/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
1912 For example, HP-UX 11i <limits.h> declares gettimeofday. */
1913#define $2 innocuous_$2
1914
1915/* System header to define __stub macros and hopefully few prototypes,
1916 which can conflict with char $2 (); below.
1917 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
1918 <limits.h> exists even on freestanding compilers. */
1919
1920#ifdef __STDC__
1921# include <limits.h>
1922#else
1923# include <assert.h>
1924#endif
1925
1926#undef $2
1927
1928/* Override any GCC internal prototype to avoid an error.
1929 Use char because int might match the return type of a GCC
1930 builtin and then its argument prototype would still apply. */
1931#ifdef __cplusplus
1932extern "C"
1933#endif
1934char $2 ();
1935/* The GNU C library defines this for functions which it implements
1936 to always fail with ENOSYS. Some functions are actually named
1937 something starting with __ and the normal name is an alias. */
1938#if defined __stub_$2 || defined __stub___$2
1939choke me
1940#endif
1941
1942int
1943main ()
1944{
1945return $2 ();
1946 ;
1947 return 0;
1948}
1949_ACEOF
1950if ac_fn_c_try_link "$LINENO"; then :
1951 eval "$3=yes"
1952else
1953 eval "$3=no"
1954fi
1955rm -f core conftest.err conftest.$ac_objext \
1956 conftest$ac_exeext conftest.$ac_ext
1957fi
1958eval ac_res=\$$3
1959 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1960$as_echo "$ac_res" >&6; }
1961 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1962
1963} # ac_fn_c_check_func
1964
1965# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
1966# -------------------------------------------
1967# Tests whether TYPE exists after having included INCLUDES, setting cache
1968# variable VAR accordingly.
1969ac_fn_c_check_type ()
1970{
1971 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1972 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1973$as_echo_n "checking for $2... " >&6; }
1974if eval \${$3+:} false; then :
1975 $as_echo_n "(cached) " >&6
1976else
1977 eval "$3=no"
1978 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1979/* end confdefs.h. */
1980$4
1981int
1982main ()
1983{
1984if (sizeof ($2))
1985 return 0;
1986 ;
1987 return 0;
1988}
1989_ACEOF
1990if ac_fn_c_try_compile "$LINENO"; then :
1991 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1992/* end confdefs.h. */
1993$4
1994int
1995main ()
1996{
1997if (sizeof (($2)))
1998 return 0;
1999 ;
2000 return 0;
2001}
2002_ACEOF
2003if ac_fn_c_try_compile "$LINENO"; then :
2004
2005else
2006 eval "$3=yes"
2007fi
2008rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2009fi
2010rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2011fi
2012eval ac_res=\$$3
2013 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
2014$as_echo "$ac_res" >&6; }
2015 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2016
2017} # ac_fn_c_check_type
2018
2019# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
2020# --------------------------------------------
2021# Tries to find the compile-time value of EXPR in a program that includes
2022# INCLUDES, setting VAR accordingly. Returns whether the value could be
2023# computed
2024ac_fn_c_compute_int ()
2025{
2026 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
2027 if test "$cross_compiling" = yes; then
2028 # Depending upon the size, compute the lo and hi bounds.
2029cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2030/* end confdefs.h. */
2031$4
2032int
2033main ()
2034{
2035static int test_array [1 - 2 * !(($2) >= 0)];
2036test_array [0] = 0;
2037return test_array [0];
2038
2039 ;
2040 return 0;
2041}
2042_ACEOF
2043if ac_fn_c_try_compile "$LINENO"; then :
2044 ac_lo=0 ac_mid=0
2045 while :; do
2046 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2047/* end confdefs.h. */
2048$4
2049int
2050main ()
2051{
2052static int test_array [1 - 2 * !(($2) <= $ac_mid)];
2053test_array [0] = 0;
2054return test_array [0];
2055
2056 ;
2057 return 0;
2058}
2059_ACEOF
2060if ac_fn_c_try_compile "$LINENO"; then :
2061 ac_hi=$ac_mid; break
2062else
2063 as_fn_arith $ac_mid + 1 && ac_lo=$as_val
2064 if test $ac_lo -le $ac_mid; then
2065 ac_lo= ac_hi=
2066 break
2067 fi
2068 as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
2069fi
2070rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2071 done
2072else
2073 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2074/* end confdefs.h. */
2075$4
2076int
2077main ()
2078{
2079static int test_array [1 - 2 * !(($2) < 0)];
2080test_array [0] = 0;
2081return test_array [0];
2082
2083 ;
2084 return 0;
2085}
2086_ACEOF
2087if ac_fn_c_try_compile "$LINENO"; then :
2088 ac_hi=-1 ac_mid=-1
2089 while :; do
2090 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2091/* end confdefs.h. */
2092$4
2093int
2094main ()
2095{
2096static int test_array [1 - 2 * !(($2) >= $ac_mid)];
2097test_array [0] = 0;
2098return test_array [0];
2099
2100 ;
2101 return 0;
2102}
2103_ACEOF
2104if ac_fn_c_try_compile "$LINENO"; then :
2105 ac_lo=$ac_mid; break
2106else
2107 as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
2108 if test $ac_mid -le $ac_hi; then
2109 ac_lo= ac_hi=
2110 break
2111 fi
2112 as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
2113fi
2114rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2115 done
2116else
2117 ac_lo= ac_hi=
2118fi
2119rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2120fi
2121rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2122# Binary search between lo and hi bounds.
2123while test "x$ac_lo" != "x$ac_hi"; do
2124 as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
2125 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2126/* end confdefs.h. */
2127$4
2128int
2129main ()
2130{
2131static int test_array [1 - 2 * !(($2) <= $ac_mid)];
2132test_array [0] = 0;
2133return test_array [0];
2134
2135 ;
2136 return 0;
2137}
2138_ACEOF
2139if ac_fn_c_try_compile "$LINENO"; then :
2140 ac_hi=$ac_mid
2141else
2142 as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
2143fi
2144rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2145done
2146case $ac_lo in #((
2147?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
2148'') ac_retval=1 ;;
2149esac
2150 else
2151 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2152/* end confdefs.h. */
2153$4
2154static long int longval () { return $2; }
2155static unsigned long int ulongval () { return $2; }
2156#include <stdio.h>
2157#include <stdlib.h>
2158int
2159main ()
2160{
2161
2162 FILE *f = fopen ("conftest.val", "w");
2163 if (! f)
2164 return 1;
2165 if (($2) < 0)
2166 {
2167 long int i = longval ();
2168 if (i != ($2))
2169 return 1;
2170 fprintf (f, "%ld", i);
2171 }
2172 else
2173 {
2174 unsigned long int i = ulongval ();
2175 if (i != ($2))
2176 return 1;
2177 fprintf (f, "%lu", i);
2178 }
2179 /* Do not output a trailing newline, as this causes \r\n confusion
2180 on some platforms. */
2181 return ferror (f) || fclose (f) != 0;
2182
2183 ;
2184 return 0;
2185}
2186_ACEOF
2187if ac_fn_c_try_run "$LINENO"; then :
2188 echo >>conftest.val; read $3 <conftest.val; ac_retval=0
2189else
2190 ac_retval=1
2191fi
2192rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
2193 conftest.$ac_objext conftest.beam conftest.$ac_ext
2194rm -f conftest.val
2195
2196 fi
2197 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2198 as_fn_set_status $ac_retval
2199
2200} # ac_fn_c_compute_int
2201
2202# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
2203# ----------------------------------------------------
2204# Tries to find if the field MEMBER exists in type AGGR, after including
2205# INCLUDES, setting cache variable VAR accordingly.
2206ac_fn_c_check_member ()
2207{
2208 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
2209 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
2210$as_echo_n "checking for $2.$3... " >&6; }
2211if eval \${$4+:} false; then :
2212 $as_echo_n "(cached) " >&6
2213else
2214 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2215/* end confdefs.h. */
2216$5
2217int
2218main ()
2219{
2220static $2 ac_aggr;
2221if (ac_aggr.$3)
2222return 0;
2223 ;
2224 return 0;
2225}
2226_ACEOF
2227if ac_fn_c_try_compile "$LINENO"; then :
2228 eval "$4=yes"
2229else
2230 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2231/* end confdefs.h. */
2232$5
2233int
2234main ()
2235{
2236static $2 ac_aggr;
2237if (sizeof ac_aggr.$3)
2238return 0;
2239 ;
2240 return 0;
2241}
2242_ACEOF
2243if ac_fn_c_try_compile "$LINENO"; then :
2244 eval "$4=yes"
2245else
2246 eval "$4=no"
2247fi
2248rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2249fi
2250rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2251fi
2252eval ac_res=\$$4
2253 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
2254$as_echo "$ac_res" >&6; }
2255 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2256
2257} # ac_fn_c_check_member
1452cat >config.log <<_ACEOF 2258cat >config.log <<_ACEOF
1453This file contains any messages produced by compilers while 2259This file contains any messages produced by compilers while
1454running configure, to aid debugging if configure makes a mistake. 2260running configure, to aid debugging if configure makes a mistake.
1455 2261
1456It was created by OpenSSH $as_me Portable, which was 2262It was created by OpenSSH $as_me Portable, which was
1457generated by GNU Autoconf 2.61. Invocation command line was 2263generated by GNU Autoconf 2.69. Invocation command line was
1458 2264
1459 $ $0 $@ 2265 $ $0 $@
1460 2266
@@ -1490,8 +2296,8 @@ for as_dir in $PATH
1490do 2296do
1491 IFS=$as_save_IFS 2297 IFS=$as_save_IFS
1492 test -z "$as_dir" && as_dir=. 2298 test -z "$as_dir" && as_dir=.
1493 echo "PATH: $as_dir" 2299 $as_echo "PATH: $as_dir"
1494done 2300 done
1495IFS=$as_save_IFS 2301IFS=$as_save_IFS
1496 2302
1497} >&5 2303} >&5
@@ -1525,12 +2331,12 @@ do
1525 | -silent | --silent | --silen | --sile | --sil) 2331 | -silent | --silent | --silen | --sile | --sil)
1526 continue ;; 2332 continue ;;
1527 *\'*) 2333 *\'*)
1528 ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; 2334 ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
1529 esac 2335 esac
1530 case $ac_pass in 2336 case $ac_pass in
1531 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2337 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
1532 2) 2338 2)
1533 ac_configure_args1="$ac_configure_args1 '$ac_arg'" 2339 as_fn_append ac_configure_args1 " '$ac_arg'"
1534 if test $ac_must_keep_next = true; then 2340 if test $ac_must_keep_next = true; then
1535 ac_must_keep_next=false # Got value, back to normal. 2341 ac_must_keep_next=false # Got value, back to normal.
1536 else 2342 else
@@ -1546,13 +2352,13 @@ do
1546 -* ) ac_must_keep_next=true ;; 2352 -* ) ac_must_keep_next=true ;;
1547 esac 2353 esac
1548 fi 2354 fi
1549 ac_configure_args="$ac_configure_args '$ac_arg'" 2355 as_fn_append ac_configure_args " '$ac_arg'"
1550 ;; 2356 ;;
1551 esac 2357 esac
1552 done 2358 done
1553done 2359done
1554$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } 2360{ ac_configure_args0=; unset ac_configure_args0;}
1555$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } 2361{ ac_configure_args1=; unset ac_configure_args1;}
1556 2362
1557# When interrupted or exit'd, cleanup temporary files, and complete 2363# When interrupted or exit'd, cleanup temporary files, and complete
1558# config.log. We remove comments because anyway the quotes in there 2364# config.log. We remove comments because anyway the quotes in there
@@ -1564,11 +2370,9 @@ trap 'exit_status=$?
1564 { 2370 {
1565 echo 2371 echo
1566 2372
1567 cat <<\_ASBOX 2373 $as_echo "## ---------------- ##
1568## ---------------- ##
1569## Cache variables. ## 2374## Cache variables. ##
1570## ---------------- ## 2375## ---------------- ##"
1571_ASBOX
1572 echo 2376 echo
1573 # The following way of writing the cache mishandles newlines in values, 2377 # The following way of writing the cache mishandles newlines in values,
1574( 2378(
@@ -1577,12 +2381,13 @@ _ASBOX
1577 case $ac_val in #( 2381 case $ac_val in #(
1578 *${as_nl}*) 2382 *${as_nl}*)
1579 case $ac_var in #( 2383 case $ac_var in #(
1580 *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 2384 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
1581echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; 2385$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
1582 esac 2386 esac
1583 case $ac_var in #( 2387 case $ac_var in #(
1584 _ | IFS | as_nl) ;; #( 2388 _ | IFS | as_nl) ;; #(
1585 *) $as_unset $ac_var ;; 2389 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
2390 *) { eval $ac_var=; unset $ac_var;} ;;
1586 esac ;; 2391 esac ;;
1587 esac 2392 esac
1588 done 2393 done
@@ -1601,128 +2406,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
1601) 2406)
1602 echo 2407 echo
1603 2408
1604 cat <<\_ASBOX 2409 $as_echo "## ----------------- ##
1605## ----------------- ##
1606## Output variables. ## 2410## Output variables. ##
1607## ----------------- ## 2411## ----------------- ##"
1608_ASBOX
1609 echo 2412 echo
1610 for ac_var in $ac_subst_vars 2413 for ac_var in $ac_subst_vars
1611 do 2414 do
1612 eval ac_val=\$$ac_var 2415 eval ac_val=\$$ac_var
1613 case $ac_val in 2416 case $ac_val in
1614 *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; 2417 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1615 esac 2418 esac
1616 echo "$ac_var='\''$ac_val'\''" 2419 $as_echo "$ac_var='\''$ac_val'\''"
1617 done | sort 2420 done | sort
1618 echo 2421 echo
1619 2422
1620 if test -n "$ac_subst_files"; then 2423 if test -n "$ac_subst_files"; then
1621 cat <<\_ASBOX 2424 $as_echo "## ------------------- ##
1622## ------------------- ##
1623## File substitutions. ## 2425## File substitutions. ##
1624## ------------------- ## 2426## ------------------- ##"
1625_ASBOX
1626 echo 2427 echo
1627 for ac_var in $ac_subst_files 2428 for ac_var in $ac_subst_files
1628 do 2429 do
1629 eval ac_val=\$$ac_var 2430 eval ac_val=\$$ac_var
1630 case $ac_val in 2431 case $ac_val in
1631 *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; 2432 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1632 esac 2433 esac
1633 echo "$ac_var='\''$ac_val'\''" 2434 $as_echo "$ac_var='\''$ac_val'\''"
1634 done | sort 2435 done | sort
1635 echo 2436 echo
1636 fi 2437 fi
1637 2438
1638 if test -s confdefs.h; then 2439 if test -s confdefs.h; then
1639 cat <<\_ASBOX 2440 $as_echo "## ----------- ##
1640## ----------- ##
1641## confdefs.h. ## 2441## confdefs.h. ##
1642## ----------- ## 2442## ----------- ##"
1643_ASBOX
1644 echo 2443 echo
1645 cat confdefs.h 2444 cat confdefs.h
1646 echo 2445 echo
1647 fi 2446 fi
1648 test "$ac_signal" != 0 && 2447 test "$ac_signal" != 0 &&
1649 echo "$as_me: caught signal $ac_signal" 2448 $as_echo "$as_me: caught signal $ac_signal"
1650 echo "$as_me: exit $exit_status" 2449 $as_echo "$as_me: exit $exit_status"
1651 } >&5 2450 } >&5
1652 rm -f core *.core core.conftest.* && 2451 rm -f core *.core core.conftest.* &&
1653 rm -f -r conftest* confdefs* conf$$* $ac_clean_files && 2452 rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
1654 exit $exit_status 2453 exit $exit_status
1655' 0 2454' 0
1656for ac_signal in 1 2 13 15; do 2455for ac_signal in 1 2 13 15; do
1657 trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal 2456 trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
1658done 2457done
1659ac_signal=0 2458ac_signal=0
1660 2459
1661# confdefs.h avoids OS command line length limits that DEFS can exceed. 2460# confdefs.h avoids OS command line length limits that DEFS can exceed.
1662rm -f -r conftest* confdefs.h 2461rm -f -r conftest* confdefs.h
1663 2462
2463$as_echo "/* confdefs.h */" > confdefs.h
2464
1664# Predefined preprocessor variables. 2465# Predefined preprocessor variables.
1665 2466
1666cat >>confdefs.h <<_ACEOF 2467cat >>confdefs.h <<_ACEOF
1667#define PACKAGE_NAME "$PACKAGE_NAME" 2468#define PACKAGE_NAME "$PACKAGE_NAME"
1668_ACEOF 2469_ACEOF
1669 2470
1670
1671cat >>confdefs.h <<_ACEOF 2471cat >>confdefs.h <<_ACEOF
1672#define PACKAGE_TARNAME "$PACKAGE_TARNAME" 2472#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
1673_ACEOF 2473_ACEOF
1674 2474
1675
1676cat >>confdefs.h <<_ACEOF 2475cat >>confdefs.h <<_ACEOF
1677#define PACKAGE_VERSION "$PACKAGE_VERSION" 2476#define PACKAGE_VERSION "$PACKAGE_VERSION"
1678_ACEOF 2477_ACEOF
1679 2478
1680
1681cat >>confdefs.h <<_ACEOF 2479cat >>confdefs.h <<_ACEOF
1682#define PACKAGE_STRING "$PACKAGE_STRING" 2480#define PACKAGE_STRING "$PACKAGE_STRING"
1683_ACEOF 2481_ACEOF
1684 2482
1685
1686cat >>confdefs.h <<_ACEOF 2483cat >>confdefs.h <<_ACEOF
1687#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" 2484#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
1688_ACEOF 2485_ACEOF
1689 2486
2487cat >>confdefs.h <<_ACEOF
2488#define PACKAGE_URL "$PACKAGE_URL"
2489_ACEOF
2490
1690 2491
1691# Let the site file select an alternate cache file if it wants to. 2492# Let the site file select an alternate cache file if it wants to.
1692# Prefer explicitly selected file to automatically selected ones. 2493# Prefer an explicitly selected file to automatically selected ones.
2494ac_site_file1=NONE
2495ac_site_file2=NONE
1693if test -n "$CONFIG_SITE"; then 2496if test -n "$CONFIG_SITE"; then
1694 set x "$CONFIG_SITE" 2497 # We do not want a PATH search for config.site.
2498 case $CONFIG_SITE in #((
2499 -*) ac_site_file1=./$CONFIG_SITE;;
2500 */*) ac_site_file1=$CONFIG_SITE;;
2501 *) ac_site_file1=./$CONFIG_SITE;;
2502 esac
1695elif test "x$prefix" != xNONE; then 2503elif test "x$prefix" != xNONE; then
1696 set x "$prefix/share/config.site" "$prefix/etc/config.site" 2504 ac_site_file1=$prefix/share/config.site
2505 ac_site_file2=$prefix/etc/config.site
1697else 2506else
1698 set x "$ac_default_prefix/share/config.site" \ 2507 ac_site_file1=$ac_default_prefix/share/config.site
1699 "$ac_default_prefix/etc/config.site" 2508 ac_site_file2=$ac_default_prefix/etc/config.site
1700fi 2509fi
1701shift 2510for ac_site_file in "$ac_site_file1" "$ac_site_file2"
1702for ac_site_file
1703do 2511do
1704 if test -r "$ac_site_file"; then 2512 test "x$ac_site_file" = xNONE && continue
1705 { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 2513 if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
1706echo "$as_me: loading site script $ac_site_file" >&6;} 2514 { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
2515$as_echo "$as_me: loading site script $ac_site_file" >&6;}
1707 sed 's/^/| /' "$ac_site_file" >&5 2516 sed 's/^/| /' "$ac_site_file" >&5
1708 . "$ac_site_file" 2517 . "$ac_site_file" \
2518 || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2519$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2520as_fn_error $? "failed to load site script $ac_site_file
2521See \`config.log' for more details" "$LINENO" 5; }
1709 fi 2522 fi
1710done 2523done
1711 2524
1712if test -r "$cache_file"; then 2525if test -r "$cache_file"; then
1713 # Some versions of bash will fail to source /dev/null (special 2526 # Some versions of bash will fail to source /dev/null (special files
1714 # files actually), so we avoid doing that. 2527 # actually), so we avoid doing that. DJGPP emulates it as a regular file.
1715 if test -f "$cache_file"; then 2528 if test /dev/null != "$cache_file" && test -f "$cache_file"; then
1716 { echo "$as_me:$LINENO: loading cache $cache_file" >&5 2529 { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
1717echo "$as_me: loading cache $cache_file" >&6;} 2530$as_echo "$as_me: loading cache $cache_file" >&6;}
1718 case $cache_file in 2531 case $cache_file in
1719 [\\/]* | ?:[\\/]* ) . "$cache_file";; 2532 [\\/]* | ?:[\\/]* ) . "$cache_file";;
1720 *) . "./$cache_file";; 2533 *) . "./$cache_file";;
1721 esac 2534 esac
1722 fi 2535 fi
1723else 2536else
1724 { echo "$as_me:$LINENO: creating cache $cache_file" >&5 2537 { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
1725echo "$as_me: creating cache $cache_file" >&6;} 2538$as_echo "$as_me: creating cache $cache_file" >&6;}
1726 >$cache_file 2539 >$cache_file
1727fi 2540fi
1728 2541
@@ -1736,68 +2549,56 @@ for ac_var in $ac_precious_vars; do
1736 eval ac_new_val=\$ac_env_${ac_var}_value 2549 eval ac_new_val=\$ac_env_${ac_var}_value
1737 case $ac_old_set,$ac_new_set in 2550 case $ac_old_set,$ac_new_set in
1738 set,) 2551 set,)
1739 { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 2552 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
1740echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} 2553$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
1741 ac_cache_corrupted=: ;; 2554 ac_cache_corrupted=: ;;
1742 ,set) 2555 ,set)
1743 { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 2556 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
1744echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 2557$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
1745 ac_cache_corrupted=: ;; 2558 ac_cache_corrupted=: ;;
1746 ,);; 2559 ,);;
1747 *) 2560 *)
1748 if test "x$ac_old_val" != "x$ac_new_val"; then 2561 if test "x$ac_old_val" != "x$ac_new_val"; then
1749 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 2562 # differences in whitespace do not lead to failure.
1750echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} 2563 ac_old_val_w=`echo x $ac_old_val`
1751 { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 2564 ac_new_val_w=`echo x $ac_new_val`
1752echo "$as_me: former value: $ac_old_val" >&2;} 2565 if test "$ac_old_val_w" != "$ac_new_val_w"; then
1753 { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 2566 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
1754echo "$as_me: current value: $ac_new_val" >&2;} 2567$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
1755 ac_cache_corrupted=: 2568 ac_cache_corrupted=:
2569 else
2570 { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
2571$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
2572 eval $ac_var=\$ac_old_val
2573 fi
2574 { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
2575$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
2576 { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
2577$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
1756 fi;; 2578 fi;;
1757 esac 2579 esac
1758 # Pass precious variables to config.status. 2580 # Pass precious variables to config.status.
1759 if test "$ac_new_set" = set; then 2581 if test "$ac_new_set" = set; then
1760 case $ac_new_val in 2582 case $ac_new_val in
1761 *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; 2583 *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
1762 *) ac_arg=$ac_var=$ac_new_val ;; 2584 *) ac_arg=$ac_var=$ac_new_val ;;
1763 esac 2585 esac
1764 case " $ac_configure_args " in 2586 case " $ac_configure_args " in
1765 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. 2587 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
1766 *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; 2588 *) as_fn_append ac_configure_args " '$ac_arg'" ;;
1767 esac 2589 esac
1768 fi 2590 fi
1769done 2591done
1770if $ac_cache_corrupted; then 2592if $ac_cache_corrupted; then
1771 { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 2593 { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
1772echo "$as_me: error: changes in the environment can compromise the build" >&2;} 2594$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
1773 { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 2595 { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
1774echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} 2596$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
1775 { (exit 1); exit 1; }; } 2597 as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
1776fi 2598fi
1777 2599## -------------------- ##
1778 2600## Main body of script. ##
1779 2601## -------------------- ##
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801 2602
1802ac_ext=c 2603ac_ext=c
1803ac_cpp='$CPP $CPPFLAGS' 2604ac_cpp='$CPP $CPPFLAGS'
@@ -1825,10 +2626,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
1825if test -n "$ac_tool_prefix"; then 2626if test -n "$ac_tool_prefix"; then
1826 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. 2627 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
1827set dummy ${ac_tool_prefix}gcc; ac_word=$2 2628set dummy ${ac_tool_prefix}gcc; ac_word=$2
1828{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2629{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1829echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2630$as_echo_n "checking for $ac_word... " >&6; }
1830if test "${ac_cv_prog_CC+set}" = set; then 2631if ${ac_cv_prog_CC+:} false; then :
1831 echo $ECHO_N "(cached) $ECHO_C" >&6 2632 $as_echo_n "(cached) " >&6
1832else 2633else
1833 if test -n "$CC"; then 2634 if test -n "$CC"; then
1834 ac_cv_prog_CC="$CC" # Let the user override the test. 2635 ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1838,25 +2639,25 @@ for as_dir in $PATH
1838do 2639do
1839 IFS=$as_save_IFS 2640 IFS=$as_save_IFS
1840 test -z "$as_dir" && as_dir=. 2641 test -z "$as_dir" && as_dir=.
1841 for ac_exec_ext in '' $ac_executable_extensions; do 2642 for ac_exec_ext in '' $ac_executable_extensions; do
1842 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2643 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
1843 ac_cv_prog_CC="${ac_tool_prefix}gcc" 2644 ac_cv_prog_CC="${ac_tool_prefix}gcc"
1844 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2645 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
1845 break 2 2646 break 2
1846 fi 2647 fi
1847done 2648done
1848done 2649 done
1849IFS=$as_save_IFS 2650IFS=$as_save_IFS
1850 2651
1851fi 2652fi
1852fi 2653fi
1853CC=$ac_cv_prog_CC 2654CC=$ac_cv_prog_CC
1854if test -n "$CC"; then 2655if test -n "$CC"; then
1855 { echo "$as_me:$LINENO: result: $CC" >&5 2656 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
1856echo "${ECHO_T}$CC" >&6; } 2657$as_echo "$CC" >&6; }
1857else 2658else
1858 { echo "$as_me:$LINENO: result: no" >&5 2659 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
1859echo "${ECHO_T}no" >&6; } 2660$as_echo "no" >&6; }
1860fi 2661fi
1861 2662
1862 2663
@@ -1865,10 +2666,10 @@ if test -z "$ac_cv_prog_CC"; then
1865 ac_ct_CC=$CC 2666 ac_ct_CC=$CC
1866 # Extract the first word of "gcc", so it can be a program name with args. 2667 # Extract the first word of "gcc", so it can be a program name with args.
1867set dummy gcc; ac_word=$2 2668set dummy gcc; ac_word=$2
1868{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2669{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1869echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2670$as_echo_n "checking for $ac_word... " >&6; }
1870if test "${ac_cv_prog_ac_ct_CC+set}" = set; then 2671if ${ac_cv_prog_ac_ct_CC+:} false; then :
1871 echo $ECHO_N "(cached) $ECHO_C" >&6 2672 $as_echo_n "(cached) " >&6
1872else 2673else
1873 if test -n "$ac_ct_CC"; then 2674 if test -n "$ac_ct_CC"; then
1874 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. 2675 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1878,25 +2679,25 @@ for as_dir in $PATH
1878do 2679do
1879 IFS=$as_save_IFS 2680 IFS=$as_save_IFS
1880 test -z "$as_dir" && as_dir=. 2681 test -z "$as_dir" && as_dir=.
1881 for ac_exec_ext in '' $ac_executable_extensions; do 2682 for ac_exec_ext in '' $ac_executable_extensions; do
1882 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2683 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
1883 ac_cv_prog_ac_ct_CC="gcc" 2684 ac_cv_prog_ac_ct_CC="gcc"
1884 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2685 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
1885 break 2 2686 break 2
1886 fi 2687 fi
1887done 2688done
1888done 2689 done
1889IFS=$as_save_IFS 2690IFS=$as_save_IFS
1890 2691
1891fi 2692fi
1892fi 2693fi
1893ac_ct_CC=$ac_cv_prog_ac_ct_CC 2694ac_ct_CC=$ac_cv_prog_ac_ct_CC
1894if test -n "$ac_ct_CC"; then 2695if test -n "$ac_ct_CC"; then
1895 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 2696 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
1896echo "${ECHO_T}$ac_ct_CC" >&6; } 2697$as_echo "$ac_ct_CC" >&6; }
1897else 2698else
1898 { echo "$as_me:$LINENO: result: no" >&5 2699 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
1899echo "${ECHO_T}no" >&6; } 2700$as_echo "no" >&6; }
1900fi 2701fi
1901 2702
1902 if test "x$ac_ct_CC" = x; then 2703 if test "x$ac_ct_CC" = x; then
@@ -1904,12 +2705,8 @@ fi
1904 else 2705 else
1905 case $cross_compiling:$ac_tool_warned in 2706 case $cross_compiling:$ac_tool_warned in
1906yes:) 2707yes:)
1907{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools 2708{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
1908whose name does not start with the host triplet. If you think this 2709$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
1909configuration is useful to you, please write to autoconf@gnu.org." >&5
1910echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
1911whose name does not start with the host triplet. If you think this
1912configuration is useful to you, please write to autoconf@gnu.org." >&2;}
1913ac_tool_warned=yes ;; 2710ac_tool_warned=yes ;;
1914esac 2711esac
1915 CC=$ac_ct_CC 2712 CC=$ac_ct_CC
@@ -1922,10 +2719,10 @@ if test -z "$CC"; then
1922 if test -n "$ac_tool_prefix"; then 2719 if test -n "$ac_tool_prefix"; then
1923 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. 2720 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
1924set dummy ${ac_tool_prefix}cc; ac_word=$2 2721set dummy ${ac_tool_prefix}cc; ac_word=$2
1925{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2722{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1926echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2723$as_echo_n "checking for $ac_word... " >&6; }
1927if test "${ac_cv_prog_CC+set}" = set; then 2724if ${ac_cv_prog_CC+:} false; then :
1928 echo $ECHO_N "(cached) $ECHO_C" >&6 2725 $as_echo_n "(cached) " >&6
1929else 2726else
1930 if test -n "$CC"; then 2727 if test -n "$CC"; then
1931 ac_cv_prog_CC="$CC" # Let the user override the test. 2728 ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1935,25 +2732,25 @@ for as_dir in $PATH
1935do 2732do
1936 IFS=$as_save_IFS 2733 IFS=$as_save_IFS
1937 test -z "$as_dir" && as_dir=. 2734 test -z "$as_dir" && as_dir=.
1938 for ac_exec_ext in '' $ac_executable_extensions; do 2735 for ac_exec_ext in '' $ac_executable_extensions; do
1939 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2736 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
1940 ac_cv_prog_CC="${ac_tool_prefix}cc" 2737 ac_cv_prog_CC="${ac_tool_prefix}cc"
1941 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2738 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
1942 break 2 2739 break 2
1943 fi 2740 fi
1944done 2741done
1945done 2742 done
1946IFS=$as_save_IFS 2743IFS=$as_save_IFS
1947 2744
1948fi 2745fi
1949fi 2746fi
1950CC=$ac_cv_prog_CC 2747CC=$ac_cv_prog_CC
1951if test -n "$CC"; then 2748if test -n "$CC"; then
1952 { echo "$as_me:$LINENO: result: $CC" >&5 2749 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
1953echo "${ECHO_T}$CC" >&6; } 2750$as_echo "$CC" >&6; }
1954else 2751else
1955 { echo "$as_me:$LINENO: result: no" >&5 2752 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
1956echo "${ECHO_T}no" >&6; } 2753$as_echo "no" >&6; }
1957fi 2754fi
1958 2755
1959 2756
@@ -1962,10 +2759,10 @@ fi
1962if test -z "$CC"; then 2759if test -z "$CC"; then
1963 # Extract the first word of "cc", so it can be a program name with args. 2760 # Extract the first word of "cc", so it can be a program name with args.
1964set dummy cc; ac_word=$2 2761set dummy cc; ac_word=$2
1965{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2762{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1966echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2763$as_echo_n "checking for $ac_word... " >&6; }
1967if test "${ac_cv_prog_CC+set}" = set; then 2764if ${ac_cv_prog_CC+:} false; then :
1968 echo $ECHO_N "(cached) $ECHO_C" >&6 2765 $as_echo_n "(cached) " >&6
1969else 2766else
1970 if test -n "$CC"; then 2767 if test -n "$CC"; then
1971 ac_cv_prog_CC="$CC" # Let the user override the test. 2768 ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1976,18 +2773,18 @@ for as_dir in $PATH
1976do 2773do
1977 IFS=$as_save_IFS 2774 IFS=$as_save_IFS
1978 test -z "$as_dir" && as_dir=. 2775 test -z "$as_dir" && as_dir=.
1979 for ac_exec_ext in '' $ac_executable_extensions; do 2776 for ac_exec_ext in '' $ac_executable_extensions; do
1980 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2777 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
1981 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then 2778 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
1982 ac_prog_rejected=yes 2779 ac_prog_rejected=yes
1983 continue 2780 continue
1984 fi 2781 fi
1985 ac_cv_prog_CC="cc" 2782 ac_cv_prog_CC="cc"
1986 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2783 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
1987 break 2 2784 break 2
1988 fi 2785 fi
1989done 2786done
1990done 2787 done
1991IFS=$as_save_IFS 2788IFS=$as_save_IFS
1992 2789
1993if test $ac_prog_rejected = yes; then 2790if test $ac_prog_rejected = yes; then
@@ -2006,11 +2803,11 @@ fi
2006fi 2803fi
2007CC=$ac_cv_prog_CC 2804CC=$ac_cv_prog_CC
2008if test -n "$CC"; then 2805if test -n "$CC"; then
2009 { echo "$as_me:$LINENO: result: $CC" >&5 2806 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2010echo "${ECHO_T}$CC" >&6; } 2807$as_echo "$CC" >&6; }
2011else 2808else
2012 { echo "$as_me:$LINENO: result: no" >&5 2809 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2013echo "${ECHO_T}no" >&6; } 2810$as_echo "no" >&6; }
2014fi 2811fi
2015 2812
2016 2813
@@ -2021,10 +2818,10 @@ if test -z "$CC"; then
2021 do 2818 do
2022 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. 2819 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
2023set dummy $ac_tool_prefix$ac_prog; ac_word=$2 2820set dummy $ac_tool_prefix$ac_prog; ac_word=$2
2024{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2821{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2025echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2822$as_echo_n "checking for $ac_word... " >&6; }
2026if test "${ac_cv_prog_CC+set}" = set; then 2823if ${ac_cv_prog_CC+:} false; then :
2027 echo $ECHO_N "(cached) $ECHO_C" >&6 2824 $as_echo_n "(cached) " >&6
2028else 2825else
2029 if test -n "$CC"; then 2826 if test -n "$CC"; then
2030 ac_cv_prog_CC="$CC" # Let the user override the test. 2827 ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2034,25 +2831,25 @@ for as_dir in $PATH
2034do 2831do
2035 IFS=$as_save_IFS 2832 IFS=$as_save_IFS
2036 test -z "$as_dir" && as_dir=. 2833 test -z "$as_dir" && as_dir=.
2037 for ac_exec_ext in '' $ac_executable_extensions; do 2834 for ac_exec_ext in '' $ac_executable_extensions; do
2038 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2835 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2039 ac_cv_prog_CC="$ac_tool_prefix$ac_prog" 2836 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
2040 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2837 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2041 break 2 2838 break 2
2042 fi 2839 fi
2043done 2840done
2044done 2841 done
2045IFS=$as_save_IFS 2842IFS=$as_save_IFS
2046 2843
2047fi 2844fi
2048fi 2845fi
2049CC=$ac_cv_prog_CC 2846CC=$ac_cv_prog_CC
2050if test -n "$CC"; then 2847if test -n "$CC"; then
2051 { echo "$as_me:$LINENO: result: $CC" >&5 2848 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2052echo "${ECHO_T}$CC" >&6; } 2849$as_echo "$CC" >&6; }
2053else 2850else
2054 { echo "$as_me:$LINENO: result: no" >&5 2851 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2055echo "${ECHO_T}no" >&6; } 2852$as_echo "no" >&6; }
2056fi 2853fi
2057 2854
2058 2855
@@ -2065,10 +2862,10 @@ if test -z "$CC"; then
2065do 2862do
2066 # Extract the first word of "$ac_prog", so it can be a program name with args. 2863 # Extract the first word of "$ac_prog", so it can be a program name with args.
2067set dummy $ac_prog; ac_word=$2 2864set dummy $ac_prog; ac_word=$2
2068{ echo "$as_me:$LINENO: checking for $ac_word" >&5 2865{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2069echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 2866$as_echo_n "checking for $ac_word... " >&6; }
2070if test "${ac_cv_prog_ac_ct_CC+set}" = set; then 2867if ${ac_cv_prog_ac_ct_CC+:} false; then :
2071 echo $ECHO_N "(cached) $ECHO_C" >&6 2868 $as_echo_n "(cached) " >&6
2072else 2869else
2073 if test -n "$ac_ct_CC"; then 2870 if test -n "$ac_ct_CC"; then
2074 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. 2871 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2078,25 +2875,25 @@ for as_dir in $PATH
2078do 2875do
2079 IFS=$as_save_IFS 2876 IFS=$as_save_IFS
2080 test -z "$as_dir" && as_dir=. 2877 test -z "$as_dir" && as_dir=.
2081 for ac_exec_ext in '' $ac_executable_extensions; do 2878 for ac_exec_ext in '' $ac_executable_extensions; do
2082 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 2879 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2083 ac_cv_prog_ac_ct_CC="$ac_prog" 2880 ac_cv_prog_ac_ct_CC="$ac_prog"
2084 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 2881 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2085 break 2 2882 break 2
2086 fi 2883 fi
2087done 2884done
2088done 2885 done
2089IFS=$as_save_IFS 2886IFS=$as_save_IFS
2090 2887
2091fi 2888fi
2092fi 2889fi
2093ac_ct_CC=$ac_cv_prog_ac_ct_CC 2890ac_ct_CC=$ac_cv_prog_ac_ct_CC
2094if test -n "$ac_ct_CC"; then 2891if test -n "$ac_ct_CC"; then
2095 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 2892 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
2096echo "${ECHO_T}$ac_ct_CC" >&6; } 2893$as_echo "$ac_ct_CC" >&6; }
2097else 2894else
2098 { echo "$as_me:$LINENO: result: no" >&5 2895 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2099echo "${ECHO_T}no" >&6; } 2896$as_echo "no" >&6; }
2100fi 2897fi
2101 2898
2102 2899
@@ -2108,12 +2905,8 @@ done
2108 else 2905 else
2109 case $cross_compiling:$ac_tool_warned in 2906 case $cross_compiling:$ac_tool_warned in
2110yes:) 2907yes:)
2111{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools 2908{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2112whose name does not start with the host triplet. If you think this 2909$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2113configuration is useful to you, please write to autoconf@gnu.org." >&5
2114echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2115whose name does not start with the host triplet. If you think this
2116configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2117ac_tool_warned=yes ;; 2910ac_tool_warned=yes ;;
2118esac 2911esac
2119 CC=$ac_ct_CC 2912 CC=$ac_ct_CC
@@ -2123,51 +2916,37 @@ fi
2123fi 2916fi
2124 2917
2125 2918
2126test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH 2919test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2127See \`config.log' for more details." >&5 2920$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2128echo "$as_me: error: no acceptable C compiler found in \$PATH 2921as_fn_error $? "no acceptable C compiler found in \$PATH
2129See \`config.log' for more details." >&2;} 2922See \`config.log' for more details" "$LINENO" 5; }
2130 { (exit 1); exit 1; }; }
2131 2923
2132# Provide some information about the compiler. 2924# Provide some information about the compiler.
2133echo "$as_me:$LINENO: checking for C compiler version" >&5 2925$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
2134ac_compiler=`set X $ac_compile; echo $2` 2926set X $ac_compile
2135{ (ac_try="$ac_compiler --version >&5" 2927ac_compiler=$2
2136case "(($ac_try" in 2928for ac_option in --version -v -V -qversion; do
2137 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2929 { { ac_try="$ac_compiler $ac_option >&5"
2138 *) ac_try_echo=$ac_try;;
2139esac
2140eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2141 (eval "$ac_compiler --version >&5") 2>&5
2142 ac_status=$?
2143 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2144 (exit $ac_status); }
2145{ (ac_try="$ac_compiler -v >&5"
2146case "(($ac_try" in
2147 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2148 *) ac_try_echo=$ac_try;;
2149esac
2150eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2151 (eval "$ac_compiler -v >&5") 2>&5
2152 ac_status=$?
2153 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2154 (exit $ac_status); }
2155{ (ac_try="$ac_compiler -V >&5"
2156case "(($ac_try" in 2930case "(($ac_try" in
2157 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2931 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2158 *) ac_try_echo=$ac_try;; 2932 *) ac_try_echo=$ac_try;;
2159esac 2933esac
2160eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 2934eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2161 (eval "$ac_compiler -V >&5") 2>&5 2935$as_echo "$ac_try_echo"; } >&5
2936 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
2162 ac_status=$? 2937 ac_status=$?
2163 echo "$as_me:$LINENO: \$? = $ac_status" >&5 2938 if test -s conftest.err; then
2164 (exit $ac_status); } 2939 sed '10a\
2940... rest of stderr output deleted ...
2941 10q' conftest.err >conftest.er1
2942 cat conftest.er1 >&5
2943 fi
2944 rm -f conftest.er1 conftest.err
2945 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2946 test $ac_status = 0; }
2947done
2165 2948
2166cat >conftest.$ac_ext <<_ACEOF 2949cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2167/* confdefs.h. */
2168_ACEOF
2169cat confdefs.h >>conftest.$ac_ext
2170cat >>conftest.$ac_ext <<_ACEOF
2171/* end confdefs.h. */ 2950/* end confdefs.h. */
2172 2951
2173int 2952int
@@ -2179,42 +2958,38 @@ main ()
2179} 2958}
2180_ACEOF 2959_ACEOF
2181ac_clean_files_save=$ac_clean_files 2960ac_clean_files_save=$ac_clean_files
2182ac_clean_files="$ac_clean_files a.out a.exe b.out" 2961ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
2183# Try to create an executable without -o first, disregard a.out. 2962# Try to create an executable without -o first, disregard a.out.
2184# It will help us diagnose broken compilers, and finding out an intuition 2963# It will help us diagnose broken compilers, and finding out an intuition
2185# of exeext. 2964# of exeext.
2186{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 2965{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
2187echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } 2966$as_echo_n "checking whether the C compiler works... " >&6; }
2188ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` 2967ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
2189# 2968
2190# List of possible output files, starting from the most likely. 2969# The possible output files:
2191# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) 2970ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
2192# only as a last resort. b.out is created by i960 compilers. 2971
2193ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
2194#
2195# The IRIX 6 linker writes into existing files which may not be
2196# executable, retaining their permissions. Remove them first so a
2197# subsequent execution test works.
2198ac_rmfiles= 2972ac_rmfiles=
2199for ac_file in $ac_files 2973for ac_file in $ac_files
2200do 2974do
2201 case $ac_file in 2975 case $ac_file in
2202 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; 2976 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
2203 * ) ac_rmfiles="$ac_rmfiles $ac_file";; 2977 * ) ac_rmfiles="$ac_rmfiles $ac_file";;
2204 esac 2978 esac
2205done 2979done
2206rm -f $ac_rmfiles 2980rm -f $ac_rmfiles
2207 2981
2208if { (ac_try="$ac_link_default" 2982if { { ac_try="$ac_link_default"
2209case "(($ac_try" in 2983case "(($ac_try" in
2210 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2984 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2211 *) ac_try_echo=$ac_try;; 2985 *) ac_try_echo=$ac_try;;
2212esac 2986esac
2213eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 2987eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
2988$as_echo "$ac_try_echo"; } >&5
2214 (eval "$ac_link_default") 2>&5 2989 (eval "$ac_link_default") 2>&5
2215 ac_status=$? 2990 ac_status=$?
2216 echo "$as_me:$LINENO: \$? = $ac_status" >&5 2991 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2217 (exit $ac_status); }; then 2992 test $ac_status = 0; }; then :
2218 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. 2993 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
2219# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' 2994# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
2220# in a Makefile. We should not override ac_cv_exeext if it was cached, 2995# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -2224,14 +2999,14 @@ for ac_file in $ac_files ''
2224do 2999do
2225 test -f "$ac_file" || continue 3000 test -f "$ac_file" || continue
2226 case $ac_file in 3001 case $ac_file in
2227 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) 3002 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
2228 ;; 3003 ;;
2229 [ab].out ) 3004 [ab].out )
2230 # We found the default executable, but exeext='' is most 3005 # We found the default executable, but exeext='' is most
2231 # certainly right. 3006 # certainly right.
2232 break;; 3007 break;;
2233 *.* ) 3008 *.* )
2234 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; 3009 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
2235 then :; else 3010 then :; else
2236 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` 3011 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2237 fi 3012 fi
@@ -2250,78 +3025,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
2250else 3025else
2251 ac_file='' 3026 ac_file=''
2252fi 3027fi
2253 3028if test -z "$ac_file"; then :
2254{ echo "$as_me:$LINENO: result: $ac_file" >&5 3029 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2255echo "${ECHO_T}$ac_file" >&6; } 3030$as_echo "no" >&6; }
2256if test -z "$ac_file"; then 3031$as_echo "$as_me: failed program was:" >&5
2257 echo "$as_me: failed program was:" >&5
2258sed 's/^/| /' conftest.$ac_ext >&5 3032sed 's/^/| /' conftest.$ac_ext >&5
2259 3033
2260{ { echo "$as_me:$LINENO: error: C compiler cannot create executables 3034{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2261See \`config.log' for more details." >&5 3035$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2262echo "$as_me: error: C compiler cannot create executables 3036as_fn_error 77 "C compiler cannot create executables
2263See \`config.log' for more details." >&2;} 3037See \`config.log' for more details" "$LINENO" 5; }
2264 { (exit 77); exit 77; }; } 3038else
3039 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
3040$as_echo "yes" >&6; }
2265fi 3041fi
2266 3042{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
3043$as_echo_n "checking for C compiler default output file name... " >&6; }
3044{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
3045$as_echo "$ac_file" >&6; }
2267ac_exeext=$ac_cv_exeext 3046ac_exeext=$ac_cv_exeext
2268 3047
2269# Check that the compiler produces executables we can run. If not, either 3048rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
2270# the compiler is broken, or we cross compile.
2271{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
2272echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
2273# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
2274# If not cross compiling, check that we can run a simple program.
2275if test "$cross_compiling" != yes; then
2276 if { ac_try='./$ac_file'
2277 { (case "(($ac_try" in
2278 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2279 *) ac_try_echo=$ac_try;;
2280esac
2281eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2282 (eval "$ac_try") 2>&5
2283 ac_status=$?
2284 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2285 (exit $ac_status); }; }; then
2286 cross_compiling=no
2287 else
2288 if test "$cross_compiling" = maybe; then
2289 cross_compiling=yes
2290 else
2291 { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
2292If you meant to cross compile, use \`--host'.
2293See \`config.log' for more details." >&5
2294echo "$as_me: error: cannot run C compiled programs.
2295If you meant to cross compile, use \`--host'.
2296See \`config.log' for more details." >&2;}
2297 { (exit 1); exit 1; }; }
2298 fi
2299 fi
2300fi
2301{ echo "$as_me:$LINENO: result: yes" >&5
2302echo "${ECHO_T}yes" >&6; }
2303
2304rm -f a.out a.exe conftest$ac_cv_exeext b.out
2305ac_clean_files=$ac_clean_files_save 3049ac_clean_files=$ac_clean_files_save
2306# Check that the compiler produces executables we can run. If not, either 3050{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
2307# the compiler is broken, or we cross compile. 3051$as_echo_n "checking for suffix of executables... " >&6; }
2308{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 3052if { { ac_try="$ac_link"
2309echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
2310{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
2311echo "${ECHO_T}$cross_compiling" >&6; }
2312
2313{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
2314echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
2315if { (ac_try="$ac_link"
2316case "(($ac_try" in 3053case "(($ac_try" in
2317 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 3054 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2318 *) ac_try_echo=$ac_try;; 3055 *) ac_try_echo=$ac_try;;
2319esac 3056esac
2320eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 3057eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3058$as_echo "$ac_try_echo"; } >&5
2321 (eval "$ac_link") 2>&5 3059 (eval "$ac_link") 2>&5
2322 ac_status=$? 3060 ac_status=$?
2323 echo "$as_me:$LINENO: \$? = $ac_status" >&5 3061 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2324 (exit $ac_status); }; then 3062 test $ac_status = 0; }; then :
2325 # If both `conftest.exe' and `conftest' are `present' (well, observable) 3063 # If both `conftest.exe' and `conftest' are `present' (well, observable)
2326# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will 3064# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
2327# work properly (i.e., refer to `conftest.exe'), while it won't with 3065# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2329,37 +3067,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2329for ac_file in conftest.exe conftest conftest.*; do 3067for ac_file in conftest.exe conftest conftest.*; do
2330 test -f "$ac_file" || continue 3068 test -f "$ac_file" || continue
2331 case $ac_file in 3069 case $ac_file in
2332 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; 3070 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
2333 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` 3071 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2334 break;; 3072 break;;
2335 * ) break;; 3073 * ) break;;
2336 esac 3074 esac
2337done 3075done
2338else 3076else
2339 { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link 3077 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2340See \`config.log' for more details." >&5 3078$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2341echo "$as_me: error: cannot compute suffix of executables: cannot compile and link 3079as_fn_error $? "cannot compute suffix of executables: cannot compile and link
2342See \`config.log' for more details." >&2;} 3080See \`config.log' for more details" "$LINENO" 5; }
2343 { (exit 1); exit 1; }; }
2344fi 3081fi
2345 3082rm -f conftest conftest$ac_cv_exeext
2346rm -f conftest$ac_cv_exeext 3083{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
2347{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 3084$as_echo "$ac_cv_exeext" >&6; }
2348echo "${ECHO_T}$ac_cv_exeext" >&6; }
2349 3085
2350rm -f conftest.$ac_ext 3086rm -f conftest.$ac_ext
2351EXEEXT=$ac_cv_exeext 3087EXEEXT=$ac_cv_exeext
2352ac_exeext=$EXEEXT 3088ac_exeext=$EXEEXT
2353{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 3089cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2354echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } 3090/* end confdefs.h. */
2355if test "${ac_cv_objext+set}" = set; then 3091#include <stdio.h>
2356 echo $ECHO_N "(cached) $ECHO_C" >&6 3092int
2357else 3093main ()
2358 cat >conftest.$ac_ext <<_ACEOF 3094{
2359/* confdefs.h. */ 3095FILE *f = fopen ("conftest.out", "w");
3096 return ferror (f) || fclose (f) != 0;
3097
3098 ;
3099 return 0;
3100}
2360_ACEOF 3101_ACEOF
2361cat confdefs.h >>conftest.$ac_ext 3102ac_clean_files="$ac_clean_files conftest.out"
2362cat >>conftest.$ac_ext <<_ACEOF 3103# Check that the compiler produces executables we can run. If not, either
3104# the compiler is broken, or we cross compile.
3105{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
3106$as_echo_n "checking whether we are cross compiling... " >&6; }
3107if test "$cross_compiling" != yes; then
3108 { { ac_try="$ac_link"
3109case "(($ac_try" in
3110 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3111 *) ac_try_echo=$ac_try;;
3112esac
3113eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3114$as_echo "$ac_try_echo"; } >&5
3115 (eval "$ac_link") 2>&5
3116 ac_status=$?
3117 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3118 test $ac_status = 0; }
3119 if { ac_try='./conftest$ac_cv_exeext'
3120 { { case "(($ac_try" in
3121 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3122 *) ac_try_echo=$ac_try;;
3123esac
3124eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3125$as_echo "$ac_try_echo"; } >&5
3126 (eval "$ac_try") 2>&5
3127 ac_status=$?
3128 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3129 test $ac_status = 0; }; }; then
3130 cross_compiling=no
3131 else
3132 if test "$cross_compiling" = maybe; then
3133 cross_compiling=yes
3134 else
3135 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3136$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3137as_fn_error $? "cannot run C compiled programs.
3138If you meant to cross compile, use \`--host'.
3139See \`config.log' for more details" "$LINENO" 5; }
3140 fi
3141 fi
3142fi
3143{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
3144$as_echo "$cross_compiling" >&6; }
3145
3146rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
3147ac_clean_files=$ac_clean_files_save
3148{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
3149$as_echo_n "checking for suffix of object files... " >&6; }
3150if ${ac_cv_objext+:} false; then :
3151 $as_echo_n "(cached) " >&6
3152else
3153 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2363/* end confdefs.h. */ 3154/* end confdefs.h. */
2364 3155
2365int 3156int
@@ -2371,51 +3162,46 @@ main ()
2371} 3162}
2372_ACEOF 3163_ACEOF
2373rm -f conftest.o conftest.obj 3164rm -f conftest.o conftest.obj
2374if { (ac_try="$ac_compile" 3165if { { ac_try="$ac_compile"
2375case "(($ac_try" in 3166case "(($ac_try" in
2376 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 3167 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2377 *) ac_try_echo=$ac_try;; 3168 *) ac_try_echo=$ac_try;;
2378esac 3169esac
2379eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 3170eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3171$as_echo "$ac_try_echo"; } >&5
2380 (eval "$ac_compile") 2>&5 3172 (eval "$ac_compile") 2>&5
2381 ac_status=$? 3173 ac_status=$?
2382 echo "$as_me:$LINENO: \$? = $ac_status" >&5 3174 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
2383 (exit $ac_status); }; then 3175 test $ac_status = 0; }; then :
2384 for ac_file in conftest.o conftest.obj conftest.*; do 3176 for ac_file in conftest.o conftest.obj conftest.*; do
2385 test -f "$ac_file" || continue; 3177 test -f "$ac_file" || continue;
2386 case $ac_file in 3178 case $ac_file in
2387 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; 3179 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
2388 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` 3180 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
2389 break;; 3181 break;;
2390 esac 3182 esac
2391done 3183done
2392else 3184else
2393 echo "$as_me: failed program was:" >&5 3185 $as_echo "$as_me: failed program was:" >&5
2394sed 's/^/| /' conftest.$ac_ext >&5 3186sed 's/^/| /' conftest.$ac_ext >&5
2395 3187
2396{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile 3188{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2397See \`config.log' for more details." >&5 3189$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2398echo "$as_me: error: cannot compute suffix of object files: cannot compile 3190as_fn_error $? "cannot compute suffix of object files: cannot compile
2399See \`config.log' for more details." >&2;} 3191See \`config.log' for more details" "$LINENO" 5; }
2400 { (exit 1); exit 1; }; }
2401fi 3192fi
2402
2403rm -f conftest.$ac_cv_objext conftest.$ac_ext 3193rm -f conftest.$ac_cv_objext conftest.$ac_ext
2404fi 3194fi
2405{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 3195{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
2406echo "${ECHO_T}$ac_cv_objext" >&6; } 3196$as_echo "$ac_cv_objext" >&6; }
2407OBJEXT=$ac_cv_objext 3197OBJEXT=$ac_cv_objext
2408ac_objext=$OBJEXT 3198ac_objext=$OBJEXT
2409{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 3199{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
2410echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } 3200$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
2411if test "${ac_cv_c_compiler_gnu+set}" = set; then 3201if ${ac_cv_c_compiler_gnu+:} false; then :
2412 echo $ECHO_N "(cached) $ECHO_C" >&6 3202 $as_echo_n "(cached) " >&6
2413else 3203else
2414 cat >conftest.$ac_ext <<_ACEOF 3204 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2415/* confdefs.h. */
2416_ACEOF
2417cat confdefs.h >>conftest.$ac_ext
2418cat >>conftest.$ac_ext <<_ACEOF
2419/* end confdefs.h. */ 3205/* end confdefs.h. */
2420 3206
2421int 3207int
@@ -2429,54 +3215,34 @@ main ()
2429 return 0; 3215 return 0;
2430} 3216}
2431_ACEOF 3217_ACEOF
2432rm -f conftest.$ac_objext 3218if ac_fn_c_try_compile "$LINENO"; then :
2433if { (ac_try="$ac_compile"
2434case "(($ac_try" in
2435 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2436 *) ac_try_echo=$ac_try;;
2437esac
2438eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2439 (eval "$ac_compile") 2>conftest.er1
2440 ac_status=$?
2441 grep -v '^ *+' conftest.er1 >conftest.err
2442 rm -f conftest.er1
2443 cat conftest.err >&5
2444 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2445 (exit $ac_status); } && {
2446 test -z "$ac_c_werror_flag" ||
2447 test ! -s conftest.err
2448 } && test -s conftest.$ac_objext; then
2449 ac_compiler_gnu=yes 3219 ac_compiler_gnu=yes
2450else 3220else
2451 echo "$as_me: failed program was:" >&5 3221 ac_compiler_gnu=no
2452sed 's/^/| /' conftest.$ac_ext >&5
2453
2454 ac_compiler_gnu=no
2455fi 3222fi
2456
2457rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3223rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2458ac_cv_c_compiler_gnu=$ac_compiler_gnu 3224ac_cv_c_compiler_gnu=$ac_compiler_gnu
2459 3225
2460fi 3226fi
2461{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 3227{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
2462echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } 3228$as_echo "$ac_cv_c_compiler_gnu" >&6; }
2463GCC=`test $ac_compiler_gnu = yes && echo yes` 3229if test $ac_compiler_gnu = yes; then
3230 GCC=yes
3231else
3232 GCC=
3233fi
2464ac_test_CFLAGS=${CFLAGS+set} 3234ac_test_CFLAGS=${CFLAGS+set}
2465ac_save_CFLAGS=$CFLAGS 3235ac_save_CFLAGS=$CFLAGS
2466{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 3236{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
2467echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } 3237$as_echo_n "checking whether $CC accepts -g... " >&6; }
2468if test "${ac_cv_prog_cc_g+set}" = set; then 3238if ${ac_cv_prog_cc_g+:} false; then :
2469 echo $ECHO_N "(cached) $ECHO_C" >&6 3239 $as_echo_n "(cached) " >&6
2470else 3240else
2471 ac_save_c_werror_flag=$ac_c_werror_flag 3241 ac_save_c_werror_flag=$ac_c_werror_flag
2472 ac_c_werror_flag=yes 3242 ac_c_werror_flag=yes
2473 ac_cv_prog_cc_g=no 3243 ac_cv_prog_cc_g=no
2474 CFLAGS="-g" 3244 CFLAGS="-g"
2475 cat >conftest.$ac_ext <<_ACEOF 3245 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2476/* confdefs.h. */
2477_ACEOF
2478cat confdefs.h >>conftest.$ac_ext
2479cat >>conftest.$ac_ext <<_ACEOF
2480/* end confdefs.h. */ 3246/* end confdefs.h. */
2481 3247
2482int 3248int
@@ -2487,34 +3253,11 @@ main ()
2487 return 0; 3253 return 0;
2488} 3254}
2489_ACEOF 3255_ACEOF
2490rm -f conftest.$ac_objext 3256if ac_fn_c_try_compile "$LINENO"; then :
2491if { (ac_try="$ac_compile"
2492case "(($ac_try" in
2493 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2494 *) ac_try_echo=$ac_try;;
2495esac
2496eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2497 (eval "$ac_compile") 2>conftest.er1
2498 ac_status=$?
2499 grep -v '^ *+' conftest.er1 >conftest.err
2500 rm -f conftest.er1
2501 cat conftest.err >&5
2502 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2503 (exit $ac_status); } && {
2504 test -z "$ac_c_werror_flag" ||
2505 test ! -s conftest.err
2506 } && test -s conftest.$ac_objext; then
2507 ac_cv_prog_cc_g=yes 3257 ac_cv_prog_cc_g=yes
2508else 3258else
2509 echo "$as_me: failed program was:" >&5 3259 CFLAGS=""
2510sed 's/^/| /' conftest.$ac_ext >&5 3260 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2511
2512 CFLAGS=""
2513 cat >conftest.$ac_ext <<_ACEOF
2514/* confdefs.h. */
2515_ACEOF
2516cat confdefs.h >>conftest.$ac_ext
2517cat >>conftest.$ac_ext <<_ACEOF
2518/* end confdefs.h. */ 3261/* end confdefs.h. */
2519 3262
2520int 3263int
@@ -2525,35 +3268,12 @@ main ()
2525 return 0; 3268 return 0;
2526} 3269}
2527_ACEOF 3270_ACEOF
2528rm -f conftest.$ac_objext 3271if ac_fn_c_try_compile "$LINENO"; then :
2529if { (ac_try="$ac_compile"
2530case "(($ac_try" in
2531 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2532 *) ac_try_echo=$ac_try;;
2533esac
2534eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2535 (eval "$ac_compile") 2>conftest.er1
2536 ac_status=$?
2537 grep -v '^ *+' conftest.er1 >conftest.err
2538 rm -f conftest.er1
2539 cat conftest.err >&5
2540 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2541 (exit $ac_status); } && {
2542 test -z "$ac_c_werror_flag" ||
2543 test ! -s conftest.err
2544 } && test -s conftest.$ac_objext; then
2545 :
2546else
2547 echo "$as_me: failed program was:" >&5
2548sed 's/^/| /' conftest.$ac_ext >&5
2549 3272
2550 ac_c_werror_flag=$ac_save_c_werror_flag 3273else
3274 ac_c_werror_flag=$ac_save_c_werror_flag
2551 CFLAGS="-g" 3275 CFLAGS="-g"
2552 cat >conftest.$ac_ext <<_ACEOF 3276 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2553/* confdefs.h. */
2554_ACEOF
2555cat confdefs.h >>conftest.$ac_ext
2556cat >>conftest.$ac_ext <<_ACEOF
2557/* end confdefs.h. */ 3277/* end confdefs.h. */
2558 3278
2559int 3279int
@@ -2564,42 +3284,18 @@ main ()
2564 return 0; 3284 return 0;
2565} 3285}
2566_ACEOF 3286_ACEOF
2567rm -f conftest.$ac_objext 3287if ac_fn_c_try_compile "$LINENO"; then :
2568if { (ac_try="$ac_compile"
2569case "(($ac_try" in
2570 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2571 *) ac_try_echo=$ac_try;;
2572esac
2573eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2574 (eval "$ac_compile") 2>conftest.er1
2575 ac_status=$?
2576 grep -v '^ *+' conftest.er1 >conftest.err
2577 rm -f conftest.er1
2578 cat conftest.err >&5
2579 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2580 (exit $ac_status); } && {
2581 test -z "$ac_c_werror_flag" ||
2582 test ! -s conftest.err
2583 } && test -s conftest.$ac_objext; then
2584 ac_cv_prog_cc_g=yes 3288 ac_cv_prog_cc_g=yes
2585else
2586 echo "$as_me: failed program was:" >&5
2587sed 's/^/| /' conftest.$ac_ext >&5
2588
2589
2590fi 3289fi
2591
2592rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3290rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2593fi 3291fi
2594
2595rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3292rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2596fi 3293fi
2597
2598rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3294rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2599 ac_c_werror_flag=$ac_save_c_werror_flag 3295 ac_c_werror_flag=$ac_save_c_werror_flag
2600fi 3296fi
2601{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 3297{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
2602echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } 3298$as_echo "$ac_cv_prog_cc_g" >&6; }
2603if test "$ac_test_CFLAGS" = set; then 3299if test "$ac_test_CFLAGS" = set; then
2604 CFLAGS=$ac_save_CFLAGS 3300 CFLAGS=$ac_save_CFLAGS
2605elif test $ac_cv_prog_cc_g = yes; then 3301elif test $ac_cv_prog_cc_g = yes; then
@@ -2615,23 +3311,18 @@ else
2615 CFLAGS= 3311 CFLAGS=
2616 fi 3312 fi
2617fi 3313fi
2618{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 3314{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
2619echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } 3315$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
2620if test "${ac_cv_prog_cc_c89+set}" = set; then 3316if ${ac_cv_prog_cc_c89+:} false; then :
2621 echo $ECHO_N "(cached) $ECHO_C" >&6 3317 $as_echo_n "(cached) " >&6
2622else 3318else
2623 ac_cv_prog_cc_c89=no 3319 ac_cv_prog_cc_c89=no
2624ac_save_CC=$CC 3320ac_save_CC=$CC
2625cat >conftest.$ac_ext <<_ACEOF 3321cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2626/* confdefs.h. */
2627_ACEOF
2628cat confdefs.h >>conftest.$ac_ext
2629cat >>conftest.$ac_ext <<_ACEOF
2630/* end confdefs.h. */ 3322/* end confdefs.h. */
2631#include <stdarg.h> 3323#include <stdarg.h>
2632#include <stdio.h> 3324#include <stdio.h>
2633#include <sys/types.h> 3325struct stat;
2634#include <sys/stat.h>
2635/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ 3326/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
2636struct buf { int x; }; 3327struct buf { int x; };
2637FILE * (*rcsopen) (struct buf *, struct stat *, int); 3328FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -2683,31 +3374,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
2683 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" 3374 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
2684do 3375do
2685 CC="$ac_save_CC $ac_arg" 3376 CC="$ac_save_CC $ac_arg"
2686 rm -f conftest.$ac_objext 3377 if ac_fn_c_try_compile "$LINENO"; then :
2687if { (ac_try="$ac_compile"
2688case "(($ac_try" in
2689 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2690 *) ac_try_echo=$ac_try;;
2691esac
2692eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2693 (eval "$ac_compile") 2>conftest.er1
2694 ac_status=$?
2695 grep -v '^ *+' conftest.er1 >conftest.err
2696 rm -f conftest.er1
2697 cat conftest.err >&5
2698 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2699 (exit $ac_status); } && {
2700 test -z "$ac_c_werror_flag" ||
2701 test ! -s conftest.err
2702 } && test -s conftest.$ac_objext; then
2703 ac_cv_prog_cc_c89=$ac_arg 3378 ac_cv_prog_cc_c89=$ac_arg
2704else
2705 echo "$as_me: failed program was:" >&5
2706sed 's/^/| /' conftest.$ac_ext >&5
2707
2708
2709fi 3379fi
2710
2711rm -f core conftest.err conftest.$ac_objext 3380rm -f core conftest.err conftest.$ac_objext
2712 test "x$ac_cv_prog_cc_c89" != "xno" && break 3381 test "x$ac_cv_prog_cc_c89" != "xno" && break
2713done 3382done
@@ -2718,17 +3387,19 @@ fi
2718# AC_CACHE_VAL 3387# AC_CACHE_VAL
2719case "x$ac_cv_prog_cc_c89" in 3388case "x$ac_cv_prog_cc_c89" in
2720 x) 3389 x)
2721 { echo "$as_me:$LINENO: result: none needed" >&5 3390 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
2722echo "${ECHO_T}none needed" >&6; } ;; 3391$as_echo "none needed" >&6; } ;;
2723 xno) 3392 xno)
2724 { echo "$as_me:$LINENO: result: unsupported" >&5 3393 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
2725echo "${ECHO_T}unsupported" >&6; } ;; 3394$as_echo "unsupported" >&6; } ;;
2726 *) 3395 *)
2727 CC="$CC $ac_cv_prog_cc_c89" 3396 CC="$CC $ac_cv_prog_cc_c89"
2728 { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 3397 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
2729echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; 3398$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
2730esac 3399esac
3400if test "x$ac_cv_prog_cc_c89" != xno; then :
2731 3401
3402fi
2732 3403
2733ac_ext=c 3404ac_ext=c
2734ac_cpp='$CPP $CPPFLAGS' 3405ac_cpp='$CPP $CPPFLAGS'
@@ -2753,9 +3424,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
2753 fi 3424 fi
2754done 3425done
2755if test -z "$ac_aux_dir"; then 3426if test -z "$ac_aux_dir"; then
2756 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 3427 as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
2757echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
2758 { (exit 1); exit 1; }; }
2759fi 3428fi
2760 3429
2761# These three variables are undocumented and unsupported, 3430# These three variables are undocumented and unsupported,
@@ -2769,35 +3438,27 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
2769 3438
2770# Make sure we can run config.sub. 3439# Make sure we can run config.sub.
2771$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || 3440$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
2772 { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 3441 as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
2773echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
2774 { (exit 1); exit 1; }; }
2775 3442
2776{ echo "$as_me:$LINENO: checking build system type" >&5 3443{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
2777echo $ECHO_N "checking build system type... $ECHO_C" >&6; } 3444$as_echo_n "checking build system type... " >&6; }
2778if test "${ac_cv_build+set}" = set; then 3445if ${ac_cv_build+:} false; then :
2779 echo $ECHO_N "(cached) $ECHO_C" >&6 3446 $as_echo_n "(cached) " >&6
2780else 3447else
2781 ac_build_alias=$build_alias 3448 ac_build_alias=$build_alias
2782test "x$ac_build_alias" = x && 3449test "x$ac_build_alias" = x &&
2783 ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` 3450 ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
2784test "x$ac_build_alias" = x && 3451test "x$ac_build_alias" = x &&
2785 { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 3452 as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
2786echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
2787 { (exit 1); exit 1; }; }
2788ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || 3453ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
2789 { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 3454 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
2790echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
2791 { (exit 1); exit 1; }; }
2792 3455
2793fi 3456fi
2794{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 3457{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
2795echo "${ECHO_T}$ac_cv_build" >&6; } 3458$as_echo "$ac_cv_build" >&6; }
2796case $ac_cv_build in 3459case $ac_cv_build in
2797*-*-*) ;; 3460*-*-*) ;;
2798*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 3461*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
2799echo "$as_me: error: invalid value of canonical build" >&2;}
2800 { (exit 1); exit 1; }; };;
2801esac 3462esac
2802build=$ac_cv_build 3463build=$ac_cv_build
2803ac_save_IFS=$IFS; IFS='-' 3464ac_save_IFS=$IFS; IFS='-'
@@ -2813,28 +3474,24 @@ IFS=$ac_save_IFS
2813case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac 3474case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
2814 3475
2815 3476
2816{ echo "$as_me:$LINENO: checking host system type" >&5 3477{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
2817echo $ECHO_N "checking host system type... $ECHO_C" >&6; } 3478$as_echo_n "checking host system type... " >&6; }
2818if test "${ac_cv_host+set}" = set; then 3479if ${ac_cv_host+:} false; then :
2819 echo $ECHO_N "(cached) $ECHO_C" >&6 3480 $as_echo_n "(cached) " >&6
2820else 3481else
2821 if test "x$host_alias" = x; then 3482 if test "x$host_alias" = x; then
2822 ac_cv_host=$ac_cv_build 3483 ac_cv_host=$ac_cv_build
2823else 3484else
2824 ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || 3485 ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
2825 { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 3486 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
2826echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
2827 { (exit 1); exit 1; }; }
2828fi 3487fi
2829 3488
2830fi 3489fi
2831{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 3490{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
2832echo "${ECHO_T}$ac_cv_host" >&6; } 3491$as_echo "$ac_cv_host" >&6; }
2833case $ac_cv_host in 3492case $ac_cv_host in
2834*-*-*) ;; 3493*-*-*) ;;
2835*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 3494*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
2836echo "$as_me: error: invalid value of canonical host" >&2;}
2837 { (exit 1); exit 1; }; };;
2838esac 3495esac
2839host=$ac_cv_host 3496host=$ac_cv_host
2840ac_save_IFS=$IFS; IFS='-' 3497ac_save_IFS=$IFS; IFS='-'
@@ -2856,15 +3513,15 @@ ac_cpp='$CPP $CPPFLAGS'
2856ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 3513ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2857ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 3514ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2858ac_compiler_gnu=$ac_cv_c_compiler_gnu 3515ac_compiler_gnu=$ac_cv_c_compiler_gnu
2859{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 3516{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
2860echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } 3517$as_echo_n "checking how to run the C preprocessor... " >&6; }
2861# On Suns, sometimes $CPP names a directory. 3518# On Suns, sometimes $CPP names a directory.
2862if test -n "$CPP" && test -d "$CPP"; then 3519if test -n "$CPP" && test -d "$CPP"; then
2863 CPP= 3520 CPP=
2864fi 3521fi
2865if test -z "$CPP"; then 3522if test -z "$CPP"; then
2866 if test "${ac_cv_prog_CPP+set}" = set; then 3523 if ${ac_cv_prog_CPP+:} false; then :
2867 echo $ECHO_N "(cached) $ECHO_C" >&6 3524 $as_echo_n "(cached) " >&6
2868else 3525else
2869 # Double quotes because CPP needs to be expanded 3526 # Double quotes because CPP needs to be expanded
2870 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" 3527 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -2878,11 +3535,7 @@ do
2878 # <limits.h> exists even on freestanding compilers. 3535 # <limits.h> exists even on freestanding compilers.
2879 # On the NeXT, cc -E runs the code through the compiler's parser, 3536 # On the NeXT, cc -E runs the code through the compiler's parser,
2880 # not just through cpp. "Syntax error" is here to catch this case. 3537 # not just through cpp. "Syntax error" is here to catch this case.
2881 cat >conftest.$ac_ext <<_ACEOF 3538 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2882/* confdefs.h. */
2883_ACEOF
2884cat confdefs.h >>conftest.$ac_ext
2885cat >>conftest.$ac_ext <<_ACEOF
2886/* end confdefs.h. */ 3539/* end confdefs.h. */
2887#ifdef __STDC__ 3540#ifdef __STDC__
2888# include <limits.h> 3541# include <limits.h>
@@ -2891,76 +3544,34 @@ cat >>conftest.$ac_ext <<_ACEOF
2891#endif 3544#endif
2892 Syntax error 3545 Syntax error
2893_ACEOF 3546_ACEOF
2894if { (ac_try="$ac_cpp conftest.$ac_ext" 3547if ac_fn_c_try_cpp "$LINENO"; then :
2895case "(($ac_try" in
2896 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2897 *) ac_try_echo=$ac_try;;
2898esac
2899eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2900 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
2901 ac_status=$?
2902 grep -v '^ *+' conftest.er1 >conftest.err
2903 rm -f conftest.er1
2904 cat conftest.err >&5
2905 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2906 (exit $ac_status); } >/dev/null && {
2907 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
2908 test ! -s conftest.err
2909 }; then
2910 :
2911else
2912 echo "$as_me: failed program was:" >&5
2913sed 's/^/| /' conftest.$ac_ext >&5
2914 3548
3549else
2915 # Broken: fails on valid input. 3550 # Broken: fails on valid input.
2916continue 3551continue
2917fi 3552fi
2918 3553rm -f conftest.err conftest.i conftest.$ac_ext
2919rm -f conftest.err conftest.$ac_ext
2920 3554
2921 # OK, works on sane cases. Now check whether nonexistent headers 3555 # OK, works on sane cases. Now check whether nonexistent headers
2922 # can be detected and how. 3556 # can be detected and how.
2923 cat >conftest.$ac_ext <<_ACEOF 3557 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2924/* confdefs.h. */
2925_ACEOF
2926cat confdefs.h >>conftest.$ac_ext
2927cat >>conftest.$ac_ext <<_ACEOF
2928/* end confdefs.h. */ 3558/* end confdefs.h. */
2929#include <ac_nonexistent.h> 3559#include <ac_nonexistent.h>
2930_ACEOF 3560_ACEOF
2931if { (ac_try="$ac_cpp conftest.$ac_ext" 3561if ac_fn_c_try_cpp "$LINENO"; then :
2932case "(($ac_try" in
2933 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2934 *) ac_try_echo=$ac_try;;
2935esac
2936eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2937 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
2938 ac_status=$?
2939 grep -v '^ *+' conftest.er1 >conftest.err
2940 rm -f conftest.er1
2941 cat conftest.err >&5
2942 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2943 (exit $ac_status); } >/dev/null && {
2944 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
2945 test ! -s conftest.err
2946 }; then
2947 # Broken: success on invalid input. 3562 # Broken: success on invalid input.
2948continue 3563continue
2949else 3564else
2950 echo "$as_me: failed program was:" >&5
2951sed 's/^/| /' conftest.$ac_ext >&5
2952
2953 # Passes both tests. 3565 # Passes both tests.
2954ac_preproc_ok=: 3566ac_preproc_ok=:
2955break 3567break
2956fi 3568fi
2957 3569rm -f conftest.err conftest.i conftest.$ac_ext
2958rm -f conftest.err conftest.$ac_ext
2959 3570
2960done 3571done
2961# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 3572# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
2962rm -f conftest.err conftest.$ac_ext 3573rm -f conftest.i conftest.err conftest.$ac_ext
2963if $ac_preproc_ok; then 3574if $ac_preproc_ok; then :
2964 break 3575 break
2965fi 3576fi
2966 3577
@@ -2972,8 +3583,8 @@ fi
2972else 3583else
2973 ac_cv_prog_CPP=$CPP 3584 ac_cv_prog_CPP=$CPP
2974fi 3585fi
2975{ echo "$as_me:$LINENO: result: $CPP" >&5 3586{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
2976echo "${ECHO_T}$CPP" >&6; } 3587$as_echo "$CPP" >&6; }
2977ac_preproc_ok=false 3588ac_preproc_ok=false
2978for ac_c_preproc_warn_flag in '' yes 3589for ac_c_preproc_warn_flag in '' yes
2979do 3590do
@@ -2983,11 +3594,7 @@ do
2983 # <limits.h> exists even on freestanding compilers. 3594 # <limits.h> exists even on freestanding compilers.
2984 # On the NeXT, cc -E runs the code through the compiler's parser, 3595 # On the NeXT, cc -E runs the code through the compiler's parser,
2985 # not just through cpp. "Syntax error" is here to catch this case. 3596 # not just through cpp. "Syntax error" is here to catch this case.
2986 cat >conftest.$ac_ext <<_ACEOF 3597 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2987/* confdefs.h. */
2988_ACEOF
2989cat confdefs.h >>conftest.$ac_ext
2990cat >>conftest.$ac_ext <<_ACEOF
2991/* end confdefs.h. */ 3598/* end confdefs.h. */
2992#ifdef __STDC__ 3599#ifdef __STDC__
2993# include <limits.h> 3600# include <limits.h>
@@ -2996,83 +3603,40 @@ cat >>conftest.$ac_ext <<_ACEOF
2996#endif 3603#endif
2997 Syntax error 3604 Syntax error
2998_ACEOF 3605_ACEOF
2999if { (ac_try="$ac_cpp conftest.$ac_ext" 3606if ac_fn_c_try_cpp "$LINENO"; then :
3000case "(($ac_try" in
3001 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3002 *) ac_try_echo=$ac_try;;
3003esac
3004eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3005 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3006 ac_status=$?
3007 grep -v '^ *+' conftest.er1 >conftest.err
3008 rm -f conftest.er1
3009 cat conftest.err >&5
3010 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3011 (exit $ac_status); } >/dev/null && {
3012 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3013 test ! -s conftest.err
3014 }; then
3015 :
3016else
3017 echo "$as_me: failed program was:" >&5
3018sed 's/^/| /' conftest.$ac_ext >&5
3019 3607
3608else
3020 # Broken: fails on valid input. 3609 # Broken: fails on valid input.
3021continue 3610continue
3022fi 3611fi
3023 3612rm -f conftest.err conftest.i conftest.$ac_ext
3024rm -f conftest.err conftest.$ac_ext
3025 3613
3026 # OK, works on sane cases. Now check whether nonexistent headers 3614 # OK, works on sane cases. Now check whether nonexistent headers
3027 # can be detected and how. 3615 # can be detected and how.
3028 cat >conftest.$ac_ext <<_ACEOF 3616 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3029/* confdefs.h. */
3030_ACEOF
3031cat confdefs.h >>conftest.$ac_ext
3032cat >>conftest.$ac_ext <<_ACEOF
3033/* end confdefs.h. */ 3617/* end confdefs.h. */
3034#include <ac_nonexistent.h> 3618#include <ac_nonexistent.h>
3035_ACEOF 3619_ACEOF
3036if { (ac_try="$ac_cpp conftest.$ac_ext" 3620if ac_fn_c_try_cpp "$LINENO"; then :
3037case "(($ac_try" in
3038 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3039 *) ac_try_echo=$ac_try;;
3040esac
3041eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3042 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3043 ac_status=$?
3044 grep -v '^ *+' conftest.er1 >conftest.err
3045 rm -f conftest.er1
3046 cat conftest.err >&5
3047 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3048 (exit $ac_status); } >/dev/null && {
3049 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3050 test ! -s conftest.err
3051 }; then
3052 # Broken: success on invalid input. 3621 # Broken: success on invalid input.
3053continue 3622continue
3054else 3623else
3055 echo "$as_me: failed program was:" >&5
3056sed 's/^/| /' conftest.$ac_ext >&5
3057
3058 # Passes both tests. 3624 # Passes both tests.
3059ac_preproc_ok=: 3625ac_preproc_ok=:
3060break 3626break
3061fi 3627fi
3062 3628rm -f conftest.err conftest.i conftest.$ac_ext
3063rm -f conftest.err conftest.$ac_ext
3064 3629
3065done 3630done
3066# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 3631# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
3067rm -f conftest.err conftest.$ac_ext 3632rm -f conftest.i conftest.err conftest.$ac_ext
3068if $ac_preproc_ok; then 3633if $ac_preproc_ok; then :
3069 : 3634
3070else 3635else
3071 { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check 3636 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3072See \`config.log' for more details." >&5 3637$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3073echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check 3638as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
3074See \`config.log' for more details." >&2;} 3639See \`config.log' for more details" "$LINENO" 5; }
3075 { (exit 1); exit 1; }; }
3076fi 3640fi
3077 3641
3078ac_ext=c 3642ac_ext=c
@@ -3082,45 +3646,40 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
3082ac_compiler_gnu=$ac_cv_c_compiler_gnu 3646ac_compiler_gnu=$ac_cv_c_compiler_gnu
3083 3647
3084 3648
3085{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 3649{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
3086echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } 3650$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
3087if test "${ac_cv_path_GREP+set}" = set; then 3651if ${ac_cv_path_GREP+:} false; then :
3088 echo $ECHO_N "(cached) $ECHO_C" >&6 3652 $as_echo_n "(cached) " >&6
3089else
3090 # Extract the first word of "grep ggrep" to use in msg output
3091if test -z "$GREP"; then
3092set dummy grep ggrep; ac_prog_name=$2
3093if test "${ac_cv_path_GREP+set}" = set; then
3094 echo $ECHO_N "(cached) $ECHO_C" >&6
3095else 3653else
3654 if test -z "$GREP"; then
3096 ac_path_GREP_found=false 3655 ac_path_GREP_found=false
3097# Loop through the user's path and test for each of PROGNAME-LIST 3656 # Loop through the user's path and test for each of PROGNAME-LIST
3098as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 3657 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3099for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin 3658for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
3100do 3659do
3101 IFS=$as_save_IFS 3660 IFS=$as_save_IFS
3102 test -z "$as_dir" && as_dir=. 3661 test -z "$as_dir" && as_dir=.
3103 for ac_prog in grep ggrep; do 3662 for ac_prog in grep ggrep; do
3104 for ac_exec_ext in '' $ac_executable_extensions; do 3663 for ac_exec_ext in '' $ac_executable_extensions; do
3105 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" 3664 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
3106 { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue 3665 as_fn_executable_p "$ac_path_GREP" || continue
3107 # Check for GNU ac_path_GREP and select it if it is found. 3666# Check for GNU ac_path_GREP and select it if it is found.
3108 # Check for GNU $ac_path_GREP 3667 # Check for GNU $ac_path_GREP
3109case `"$ac_path_GREP" --version 2>&1` in 3668case `"$ac_path_GREP" --version 2>&1` in
3110*GNU*) 3669*GNU*)
3111 ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; 3670 ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
3112*) 3671*)
3113 ac_count=0 3672 ac_count=0
3114 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" 3673 $as_echo_n 0123456789 >"conftest.in"
3115 while : 3674 while :
3116 do 3675 do
3117 cat "conftest.in" "conftest.in" >"conftest.tmp" 3676 cat "conftest.in" "conftest.in" >"conftest.tmp"
3118 mv "conftest.tmp" "conftest.in" 3677 mv "conftest.tmp" "conftest.in"
3119 cp "conftest.in" "conftest.nl" 3678 cp "conftest.in" "conftest.nl"
3120 echo 'GREP' >> "conftest.nl" 3679 $as_echo 'GREP' >> "conftest.nl"
3121 "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break 3680 "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
3122 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break 3681 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3123 ac_count=`expr $ac_count + 1` 3682 as_fn_arith $ac_count + 1 && ac_count=$as_val
3124 if test $ac_count -gt ${ac_path_GREP_max-0}; then 3683 if test $ac_count -gt ${ac_path_GREP_max-0}; then
3125 # Best one so far, save it but keep looking for a better one 3684 # Best one so far, save it but keep looking for a better one
3126 ac_cv_path_GREP="$ac_path_GREP" 3685 ac_cv_path_GREP="$ac_path_GREP"
@@ -3132,77 +3691,61 @@ case `"$ac_path_GREP" --version 2>&1` in
3132 rm -f conftest.in conftest.tmp conftest.nl conftest.out;; 3691 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
3133esac 3692esac
3134 3693
3135 3694 $ac_path_GREP_found && break 3
3136 $ac_path_GREP_found && break 3 3695 done
3696 done
3137 done 3697 done
3138done
3139
3140done
3141IFS=$as_save_IFS 3698IFS=$as_save_IFS
3142 3699 if test -z "$ac_cv_path_GREP"; then
3143 3700 as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
3144fi 3701 fi
3145
3146GREP="$ac_cv_path_GREP"
3147if test -z "$GREP"; then
3148 { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
3149echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
3150 { (exit 1); exit 1; }; }
3151fi
3152
3153else 3702else
3154 ac_cv_path_GREP=$GREP 3703 ac_cv_path_GREP=$GREP
3155fi 3704fi
3156 3705
3157
3158fi 3706fi
3159{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 3707{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
3160echo "${ECHO_T}$ac_cv_path_GREP" >&6; } 3708$as_echo "$ac_cv_path_GREP" >&6; }
3161 GREP="$ac_cv_path_GREP" 3709 GREP="$ac_cv_path_GREP"
3162 3710
3163 3711
3164{ echo "$as_me:$LINENO: checking for egrep" >&5 3712{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
3165echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } 3713$as_echo_n "checking for egrep... " >&6; }
3166if test "${ac_cv_path_EGREP+set}" = set; then 3714if ${ac_cv_path_EGREP+:} false; then :
3167 echo $ECHO_N "(cached) $ECHO_C" >&6 3715 $as_echo_n "(cached) " >&6
3168else 3716else
3169 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 3717 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
3170 then ac_cv_path_EGREP="$GREP -E" 3718 then ac_cv_path_EGREP="$GREP -E"
3171 else 3719 else
3172 # Extract the first word of "egrep" to use in msg output 3720 if test -z "$EGREP"; then
3173if test -z "$EGREP"; then
3174set dummy egrep; ac_prog_name=$2
3175if test "${ac_cv_path_EGREP+set}" = set; then
3176 echo $ECHO_N "(cached) $ECHO_C" >&6
3177else
3178 ac_path_EGREP_found=false 3721 ac_path_EGREP_found=false
3179# Loop through the user's path and test for each of PROGNAME-LIST 3722 # Loop through the user's path and test for each of PROGNAME-LIST
3180as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 3723 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3181for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin 3724for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
3182do 3725do
3183 IFS=$as_save_IFS 3726 IFS=$as_save_IFS
3184 test -z "$as_dir" && as_dir=. 3727 test -z "$as_dir" && as_dir=.
3185 for ac_prog in egrep; do 3728 for ac_prog in egrep; do
3186 for ac_exec_ext in '' $ac_executable_extensions; do 3729 for ac_exec_ext in '' $ac_executable_extensions; do
3187 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" 3730 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
3188 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue 3731 as_fn_executable_p "$ac_path_EGREP" || continue
3189 # Check for GNU ac_path_EGREP and select it if it is found. 3732# Check for GNU ac_path_EGREP and select it if it is found.
3190 # Check for GNU $ac_path_EGREP 3733 # Check for GNU $ac_path_EGREP
3191case `"$ac_path_EGREP" --version 2>&1` in 3734case `"$ac_path_EGREP" --version 2>&1` in
3192*GNU*) 3735*GNU*)
3193 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; 3736 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
3194*) 3737*)
3195 ac_count=0 3738 ac_count=0
3196 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" 3739 $as_echo_n 0123456789 >"conftest.in"
3197 while : 3740 while :
3198 do 3741 do
3199 cat "conftest.in" "conftest.in" >"conftest.tmp" 3742 cat "conftest.in" "conftest.in" >"conftest.tmp"
3200 mv "conftest.tmp" "conftest.in" 3743 mv "conftest.tmp" "conftest.in"
3201 cp "conftest.in" "conftest.nl" 3744 cp "conftest.in" "conftest.nl"
3202 echo 'EGREP' >> "conftest.nl" 3745 $as_echo 'EGREP' >> "conftest.nl"
3203 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break 3746 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
3204 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break 3747 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3205 ac_count=`expr $ac_count + 1` 3748 as_fn_arith $ac_count + 1 && ac_count=$as_val
3206 if test $ac_count -gt ${ac_path_EGREP_max-0}; then 3749 if test $ac_count -gt ${ac_path_EGREP_max-0}; then
3207 # Best one so far, save it but keep looking for a better one 3750 # Best one so far, save it but keep looking for a better one
3208 ac_cv_path_EGREP="$ac_path_EGREP" 3751 ac_cv_path_EGREP="$ac_path_EGREP"
@@ -3214,46 +3757,31 @@ case `"$ac_path_EGREP" --version 2>&1` in
3214 rm -f conftest.in conftest.tmp conftest.nl conftest.out;; 3757 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
3215esac 3758esac
3216 3759
3217 3760 $ac_path_EGREP_found && break 3
3218 $ac_path_EGREP_found && break 3 3761 done
3762 done
3219 done 3763 done
3220done
3221
3222done
3223IFS=$as_save_IFS 3764IFS=$as_save_IFS
3224 3765 if test -z "$ac_cv_path_EGREP"; then
3225 3766 as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
3226fi 3767 fi
3227
3228EGREP="$ac_cv_path_EGREP"
3229if test -z "$EGREP"; then
3230 { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
3231echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
3232 { (exit 1); exit 1; }; }
3233fi
3234
3235else 3768else
3236 ac_cv_path_EGREP=$EGREP 3769 ac_cv_path_EGREP=$EGREP
3237fi 3770fi
3238 3771
3239
3240 fi 3772 fi
3241fi 3773fi
3242{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 3774{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
3243echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } 3775$as_echo "$ac_cv_path_EGREP" >&6; }
3244 EGREP="$ac_cv_path_EGREP" 3776 EGREP="$ac_cv_path_EGREP"
3245 3777
3246 3778
3247{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 3779{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
3248echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } 3780$as_echo_n "checking for ANSI C header files... " >&6; }
3249if test "${ac_cv_header_stdc+set}" = set; then 3781if ${ac_cv_header_stdc+:} false; then :
3250 echo $ECHO_N "(cached) $ECHO_C" >&6 3782 $as_echo_n "(cached) " >&6
3251else 3783else
3252 cat >conftest.$ac_ext <<_ACEOF 3784 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3253/* confdefs.h. */
3254_ACEOF
3255cat confdefs.h >>conftest.$ac_ext
3256cat >>conftest.$ac_ext <<_ACEOF
3257/* end confdefs.h. */ 3785/* end confdefs.h. */
3258#include <stdlib.h> 3786#include <stdlib.h>
3259#include <stdarg.h> 3787#include <stdarg.h>
@@ -3268,47 +3796,23 @@ main ()
3268 return 0; 3796 return 0;
3269} 3797}
3270_ACEOF 3798_ACEOF
3271rm -f conftest.$ac_objext 3799if ac_fn_c_try_compile "$LINENO"; then :
3272if { (ac_try="$ac_compile"
3273case "(($ac_try" in
3274 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3275 *) ac_try_echo=$ac_try;;
3276esac
3277eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3278 (eval "$ac_compile") 2>conftest.er1
3279 ac_status=$?
3280 grep -v '^ *+' conftest.er1 >conftest.err
3281 rm -f conftest.er1
3282 cat conftest.err >&5
3283 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3284 (exit $ac_status); } && {
3285 test -z "$ac_c_werror_flag" ||
3286 test ! -s conftest.err
3287 } && test -s conftest.$ac_objext; then
3288 ac_cv_header_stdc=yes 3800 ac_cv_header_stdc=yes
3289else 3801else
3290 echo "$as_me: failed program was:" >&5 3802 ac_cv_header_stdc=no
3291sed 's/^/| /' conftest.$ac_ext >&5
3292
3293 ac_cv_header_stdc=no
3294fi 3803fi
3295
3296rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3804rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3297 3805
3298if test $ac_cv_header_stdc = yes; then 3806if test $ac_cv_header_stdc = yes; then
3299 # SunOS 4.x string.h does not declare mem*, contrary to ANSI. 3807 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
3300 cat >conftest.$ac_ext <<_ACEOF 3808 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3301/* confdefs.h. */
3302_ACEOF
3303cat confdefs.h >>conftest.$ac_ext
3304cat >>conftest.$ac_ext <<_ACEOF
3305/* end confdefs.h. */ 3809/* end confdefs.h. */
3306#include <string.h> 3810#include <string.h>
3307 3811
3308_ACEOF 3812_ACEOF
3309if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 3813if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
3310 $EGREP "memchr" >/dev/null 2>&1; then 3814 $EGREP "memchr" >/dev/null 2>&1; then :
3311 : 3815
3312else 3816else
3313 ac_cv_header_stdc=no 3817 ac_cv_header_stdc=no
3314fi 3818fi
@@ -3318,18 +3822,14 @@ fi
3318 3822
3319if test $ac_cv_header_stdc = yes; then 3823if test $ac_cv_header_stdc = yes; then
3320 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. 3824 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
3321 cat >conftest.$ac_ext <<_ACEOF 3825 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3322/* confdefs.h. */
3323_ACEOF
3324cat confdefs.h >>conftest.$ac_ext
3325cat >>conftest.$ac_ext <<_ACEOF
3326/* end confdefs.h. */ 3826/* end confdefs.h. */
3327#include <stdlib.h> 3827#include <stdlib.h>
3328 3828
3329_ACEOF 3829_ACEOF
3330if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 3830if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
3331 $EGREP "free" >/dev/null 2>&1; then 3831 $EGREP "free" >/dev/null 2>&1; then :
3332 : 3832
3333else 3833else
3334 ac_cv_header_stdc=no 3834 ac_cv_header_stdc=no
3335fi 3835fi
@@ -3339,14 +3839,10 @@ fi
3339 3839
3340if test $ac_cv_header_stdc = yes; then 3840if test $ac_cv_header_stdc = yes; then
3341 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. 3841 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
3342 if test "$cross_compiling" = yes; then 3842 if test "$cross_compiling" = yes; then :
3343 : 3843 :
3344else 3844else
3345 cat >conftest.$ac_ext <<_ACEOF 3845 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3346/* confdefs.h. */
3347_ACEOF
3348cat confdefs.h >>conftest.$ac_ext
3349cat >>conftest.$ac_ext <<_ACEOF
3350/* end confdefs.h. */ 3846/* end confdefs.h. */
3351#include <ctype.h> 3847#include <ctype.h>
3352#include <stdlib.h> 3848#include <stdlib.h>
@@ -3373,113 +3869,35 @@ main ()
3373 return 0; 3869 return 0;
3374} 3870}
3375_ACEOF 3871_ACEOF
3376rm -f conftest$ac_exeext 3872if ac_fn_c_try_run "$LINENO"; then :
3377if { (ac_try="$ac_link"
3378case "(($ac_try" in
3379 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3380 *) ac_try_echo=$ac_try;;
3381esac
3382eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3383 (eval "$ac_link") 2>&5
3384 ac_status=$?
3385 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3386 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
3387 { (case "(($ac_try" in
3388 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3389 *) ac_try_echo=$ac_try;;
3390esac
3391eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3392 (eval "$ac_try") 2>&5
3393 ac_status=$?
3394 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3395 (exit $ac_status); }; }; then
3396 :
3397else
3398 echo "$as_me: program exited with status $ac_status" >&5
3399echo "$as_me: failed program was:" >&5
3400sed 's/^/| /' conftest.$ac_ext >&5
3401 3873
3402( exit $ac_status ) 3874else
3403ac_cv_header_stdc=no 3875 ac_cv_header_stdc=no
3404fi 3876fi
3405rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 3877rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
3878 conftest.$ac_objext conftest.beam conftest.$ac_ext
3406fi 3879fi
3407 3880
3408
3409fi 3881fi
3410fi 3882fi
3411{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 3883{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
3412echo "${ECHO_T}$ac_cv_header_stdc" >&6; } 3884$as_echo "$ac_cv_header_stdc" >&6; }
3413if test $ac_cv_header_stdc = yes; then 3885if test $ac_cv_header_stdc = yes; then
3414 3886
3415cat >>confdefs.h <<\_ACEOF 3887$as_echo "#define STDC_HEADERS 1" >>confdefs.h
3416#define STDC_HEADERS 1
3417_ACEOF
3418 3888
3419fi 3889fi
3420 3890
3421# On IRIX 5.3, sys/types and inttypes.h are conflicting. 3891# On IRIX 5.3, sys/types and inttypes.h are conflicting.
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ 3892for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
3432 inttypes.h stdint.h unistd.h 3893 inttypes.h stdint.h unistd.h
3433do 3894do :
3434as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 3895 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
3435{ echo "$as_me:$LINENO: checking for $ac_header" >&5 3896ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
3436echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } 3897"
3437if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then 3898if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
3438 echo $ECHO_N "(cached) $ECHO_C" >&6
3439else
3440 cat >conftest.$ac_ext <<_ACEOF
3441/* confdefs.h. */
3442_ACEOF
3443cat confdefs.h >>conftest.$ac_ext
3444cat >>conftest.$ac_ext <<_ACEOF
3445/* end confdefs.h. */
3446$ac_includes_default
3447
3448#include <$ac_header>
3449_ACEOF
3450rm -f conftest.$ac_objext
3451if { (ac_try="$ac_compile"
3452case "(($ac_try" in
3453 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3454 *) ac_try_echo=$ac_try;;
3455esac
3456eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3457 (eval "$ac_compile") 2>conftest.er1
3458 ac_status=$?
3459 grep -v '^ *+' conftest.er1 >conftest.err
3460 rm -f conftest.er1
3461 cat conftest.err >&5
3462 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3463 (exit $ac_status); } && {
3464 test -z "$ac_c_werror_flag" ||
3465 test ! -s conftest.err
3466 } && test -s conftest.$ac_objext; then
3467 eval "$as_ac_Header=yes"
3468else
3469 echo "$as_me: failed program was:" >&5
3470sed 's/^/| /' conftest.$ac_ext >&5
3471
3472 eval "$as_ac_Header=no"
3473fi
3474
3475rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3476fi
3477ac_res=`eval echo '${'$as_ac_Header'}'`
3478 { echo "$as_me:$LINENO: result: $ac_res" >&5
3479echo "${ECHO_T}$ac_res" >&6; }
3480if test `eval echo '${'$as_ac_Header'}'` = yes; then
3481 cat >>confdefs.h <<_ACEOF 3899 cat >>confdefs.h <<_ACEOF
3482#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 3900#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
3483_ACEOF 3901_ACEOF
3484 3902
3485fi 3903fi
@@ -3487,241 +3905,229 @@ fi
3487done 3905done
3488 3906
3489 3907
3490{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 3908 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
3491echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } 3909$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
3492if test "${ac_cv_c_bigendian+set}" = set; then 3910if ${ac_cv_c_bigendian+:} false; then :
3493 echo $ECHO_N "(cached) $ECHO_C" >&6 3911 $as_echo_n "(cached) " >&6
3494else 3912else
3495 # See if sys/param.h defines the BYTE_ORDER macro. 3913 ac_cv_c_bigendian=unknown
3496cat >conftest.$ac_ext <<_ACEOF 3914 # See if we're dealing with a universal compiler.
3497/* confdefs.h. */ 3915 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3498_ACEOF 3916/* end confdefs.h. */
3499cat confdefs.h >>conftest.$ac_ext 3917#ifndef __APPLE_CC__
3500cat >>conftest.$ac_ext <<_ACEOF 3918 not a universal capable compiler
3919 #endif
3920 typedef int dummy;
3921
3922_ACEOF
3923if ac_fn_c_try_compile "$LINENO"; then :
3924
3925 # Check for potential -arch flags. It is not universal unless
3926 # there are at least two -arch flags with different values.
3927 ac_arch=
3928 ac_prev=
3929 for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
3930 if test -n "$ac_prev"; then
3931 case $ac_word in
3932 i?86 | x86_64 | ppc | ppc64)
3933 if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
3934 ac_arch=$ac_word
3935 else
3936 ac_cv_c_bigendian=universal
3937 break
3938 fi
3939 ;;
3940 esac
3941 ac_prev=
3942 elif test "x$ac_word" = "x-arch"; then
3943 ac_prev=arch
3944 fi
3945 done
3946fi
3947rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3948 if test $ac_cv_c_bigendian = unknown; then
3949 # See if sys/param.h defines the BYTE_ORDER macro.
3950 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3501/* end confdefs.h. */ 3951/* end confdefs.h. */
3502#include <sys/types.h> 3952#include <sys/types.h>
3503#include <sys/param.h> 3953 #include <sys/param.h>
3504 3954
3505int 3955int
3506main () 3956main ()
3507{ 3957{
3508#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ 3958#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
3509 && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) 3959 && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
3510 bogus endian macros 3960 && LITTLE_ENDIAN)
3511#endif 3961 bogus endian macros
3962 #endif
3512 3963
3513 ; 3964 ;
3514 return 0; 3965 return 0;
3515} 3966}
3516_ACEOF 3967_ACEOF
3517rm -f conftest.$ac_objext 3968if ac_fn_c_try_compile "$LINENO"; then :
3518if { (ac_try="$ac_compile"
3519case "(($ac_try" in
3520 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3521 *) ac_try_echo=$ac_try;;
3522esac
3523eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3524 (eval "$ac_compile") 2>conftest.er1
3525 ac_status=$?
3526 grep -v '^ *+' conftest.er1 >conftest.err
3527 rm -f conftest.er1
3528 cat conftest.err >&5
3529 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3530 (exit $ac_status); } && {
3531 test -z "$ac_c_werror_flag" ||
3532 test ! -s conftest.err
3533 } && test -s conftest.$ac_objext; then
3534 # It does; now see whether it defined to BIG_ENDIAN or not. 3969 # It does; now see whether it defined to BIG_ENDIAN or not.
3535cat >conftest.$ac_ext <<_ACEOF 3970 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3536/* confdefs.h. */
3537_ACEOF
3538cat confdefs.h >>conftest.$ac_ext
3539cat >>conftest.$ac_ext <<_ACEOF
3540/* end confdefs.h. */ 3971/* end confdefs.h. */
3541#include <sys/types.h> 3972#include <sys/types.h>
3542#include <sys/param.h> 3973 #include <sys/param.h>
3543 3974
3544int 3975int
3545main () 3976main ()
3546{ 3977{
3547#if BYTE_ORDER != BIG_ENDIAN 3978#if BYTE_ORDER != BIG_ENDIAN
3548 not big endian 3979 not big endian
3549#endif 3980 #endif
3550 3981
3551 ; 3982 ;
3552 return 0; 3983 return 0;
3553} 3984}
3554_ACEOF 3985_ACEOF
3555rm -f conftest.$ac_objext 3986if ac_fn_c_try_compile "$LINENO"; then :
3556if { (ac_try="$ac_compile"
3557case "(($ac_try" in
3558 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3559 *) ac_try_echo=$ac_try;;
3560esac
3561eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3562 (eval "$ac_compile") 2>conftest.er1
3563 ac_status=$?
3564 grep -v '^ *+' conftest.er1 >conftest.err
3565 rm -f conftest.er1
3566 cat conftest.err >&5
3567 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3568 (exit $ac_status); } && {
3569 test -z "$ac_c_werror_flag" ||
3570 test ! -s conftest.err
3571 } && test -s conftest.$ac_objext; then
3572 ac_cv_c_bigendian=yes 3987 ac_cv_c_bigendian=yes
3573else 3988else
3574 echo "$as_me: failed program was:" >&5 3989 ac_cv_c_bigendian=no
3575sed 's/^/| /' conftest.$ac_ext >&5
3576
3577 ac_cv_c_bigendian=no
3578fi 3990fi
3579
3580rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3991rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3581else 3992fi
3582 echo "$as_me: failed program was:" >&5 3993rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3583sed 's/^/| /' conftest.$ac_ext >&5 3994 fi
3995 if test $ac_cv_c_bigendian = unknown; then
3996 # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
3997 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3998/* end confdefs.h. */
3999#include <limits.h>
3584 4000
3585 # It does not; compile a test program. 4001int
3586if test "$cross_compiling" = yes; then 4002main ()
3587 # try to guess the endianness by grepping values into an object file 4003{
3588 ac_cv_c_bigendian=unknown 4004#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
3589 cat >conftest.$ac_ext <<_ACEOF 4005 bogus endian macros
3590/* confdefs.h. */ 4006 #endif
4007
4008 ;
4009 return 0;
4010}
3591_ACEOF 4011_ACEOF
3592cat confdefs.h >>conftest.$ac_ext 4012if ac_fn_c_try_compile "$LINENO"; then :
3593cat >>conftest.$ac_ext <<_ACEOF 4013 # It does; now see whether it defined to _BIG_ENDIAN or not.
4014 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3594/* end confdefs.h. */ 4015/* end confdefs.h. */
3595short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; 4016#include <limits.h>
3596short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; 4017
3597void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
3598short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
3599short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
3600void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
3601int 4018int
3602main () 4019main ()
3603{ 4020{
3604 _ascii (); _ebcdic (); 4021#ifndef _BIG_ENDIAN
4022 not big endian
4023 #endif
4024
3605 ; 4025 ;
3606 return 0; 4026 return 0;
3607} 4027}
3608_ACEOF 4028_ACEOF
3609rm -f conftest.$ac_objext 4029if ac_fn_c_try_compile "$LINENO"; then :
3610if { (ac_try="$ac_compile"
3611case "(($ac_try" in
3612 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3613 *) ac_try_echo=$ac_try;;
3614esac
3615eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3616 (eval "$ac_compile") 2>conftest.er1
3617 ac_status=$?
3618 grep -v '^ *+' conftest.er1 >conftest.err
3619 rm -f conftest.er1
3620 cat conftest.err >&5
3621 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3622 (exit $ac_status); } && {
3623 test -z "$ac_c_werror_flag" ||
3624 test ! -s conftest.err
3625 } && test -s conftest.$ac_objext; then
3626 if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
3627 ac_cv_c_bigendian=yes 4030 ac_cv_c_bigendian=yes
4031else
4032 ac_cv_c_bigendian=no
3628fi 4033fi
3629if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then 4034rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3630 if test "$ac_cv_c_bigendian" = unknown; then
3631 ac_cv_c_bigendian=no
3632 else
3633 # finding both strings is unlikely to happen, but who knows?
3634 ac_cv_c_bigendian=unknown
3635 fi
3636fi 4035fi
3637else 4036rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3638 echo "$as_me: failed program was:" >&5 4037 fi
3639sed 's/^/| /' conftest.$ac_ext >&5 4038 if test $ac_cv_c_bigendian = unknown; then
3640 4039 # Compile a test program.
4040 if test "$cross_compiling" = yes; then :
4041 # Try to guess by grepping values from an object file.
4042 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4043/* end confdefs.h. */
4044short int ascii_mm[] =
4045 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
4046 short int ascii_ii[] =
4047 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
4048 int use_ascii (int i) {
4049 return ascii_mm[i] + ascii_ii[i];
4050 }
4051 short int ebcdic_ii[] =
4052 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
4053 short int ebcdic_mm[] =
4054 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
4055 int use_ebcdic (int i) {
4056 return ebcdic_mm[i] + ebcdic_ii[i];
4057 }
4058 extern int foo;
3641 4059
4060int
4061main ()
4062{
4063return use_ascii (foo) == use_ebcdic (foo);
4064 ;
4065 return 0;
4066}
4067_ACEOF
4068if ac_fn_c_try_compile "$LINENO"; then :
4069 if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
4070 ac_cv_c_bigendian=yes
4071 fi
4072 if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
4073 if test "$ac_cv_c_bigendian" = unknown; then
4074 ac_cv_c_bigendian=no
4075 else
4076 # finding both strings is unlikely to happen, but who knows?
4077 ac_cv_c_bigendian=unknown
4078 fi
4079 fi
3642fi 4080fi
3643
3644rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 4081rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3645else 4082else
3646 cat >conftest.$ac_ext <<_ACEOF 4083 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3647/* confdefs.h. */
3648_ACEOF
3649cat confdefs.h >>conftest.$ac_ext
3650cat >>conftest.$ac_ext <<_ACEOF
3651/* end confdefs.h. */ 4084/* end confdefs.h. */
3652$ac_includes_default 4085$ac_includes_default
3653int 4086int
3654main () 4087main ()
3655{ 4088{
3656 4089
3657 /* Are we little or big endian? From Harbison&Steele. */ 4090 /* Are we little or big endian? From Harbison&Steele. */
3658 union 4091 union
3659 { 4092 {
3660 long int l; 4093 long int l;
3661 char c[sizeof (long int)]; 4094 char c[sizeof (long int)];
3662 } u; 4095 } u;
3663 u.l = 1; 4096 u.l = 1;
3664 return u.c[sizeof (long int) - 1] == 1; 4097 return u.c[sizeof (long int) - 1] == 1;
3665 4098
3666 ; 4099 ;
3667 return 0; 4100 return 0;
3668} 4101}
3669_ACEOF 4102_ACEOF
3670rm -f conftest$ac_exeext 4103if ac_fn_c_try_run "$LINENO"; then :
3671if { (ac_try="$ac_link"
3672case "(($ac_try" in
3673 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3674 *) ac_try_echo=$ac_try;;
3675esac
3676eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3677 (eval "$ac_link") 2>&5
3678 ac_status=$?
3679 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3680 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
3681 { (case "(($ac_try" in
3682 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3683 *) ac_try_echo=$ac_try;;
3684esac
3685eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3686 (eval "$ac_try") 2>&5
3687 ac_status=$?
3688 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3689 (exit $ac_status); }; }; then
3690 ac_cv_c_bigendian=no 4104 ac_cv_c_bigendian=no
3691else 4105else
3692 echo "$as_me: program exited with status $ac_status" >&5 4106 ac_cv_c_bigendian=yes
3693echo "$as_me: failed program was:" >&5
3694sed 's/^/| /' conftest.$ac_ext >&5
3695
3696( exit $ac_status )
3697ac_cv_c_bigendian=yes
3698fi 4107fi
3699rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 4108rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
4109 conftest.$ac_objext conftest.beam conftest.$ac_ext
3700fi 4110fi
3701 4111
3702 4112 fi
3703fi 4113fi
4114{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
4115$as_echo "$ac_cv_c_bigendian" >&6; }
4116 case $ac_cv_c_bigendian in #(
4117 yes)
4118 $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
4119;; #(
4120 no)
4121 ;; #(
4122 universal)
3704 4123
3705rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 4124$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
3706fi
3707{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
3708echo "${ECHO_T}$ac_cv_c_bigendian" >&6; }
3709case $ac_cv_c_bigendian in
3710 yes)
3711 4125
3712cat >>confdefs.h <<\_ACEOF 4126 ;; #(
3713#define WORDS_BIGENDIAN 1 4127 *)
3714_ACEOF 4128 as_fn_error $? "unknown endianness
3715 ;; 4129 presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
3716 no) 4130 esac
3717 ;;
3718 *)
3719 { { echo "$as_me:$LINENO: error: unknown endianness
3720presetting ac_cv_c_bigendian=no (or yes) will help" >&5
3721echo "$as_me: error: unknown endianness
3722presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
3723 { (exit 1); exit 1; }; } ;;
3724esac
3725 4131
3726 4132
3727# Checks for programs. 4133# Checks for programs.
@@ -3729,10 +4135,10 @@ for ac_prog in gawk mawk nawk awk
3729do 4135do
3730 # Extract the first word of "$ac_prog", so it can be a program name with args. 4136 # Extract the first word of "$ac_prog", so it can be a program name with args.
3731set dummy $ac_prog; ac_word=$2 4137set dummy $ac_prog; ac_word=$2
3732{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4138{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3733echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4139$as_echo_n "checking for $ac_word... " >&6; }
3734if test "${ac_cv_prog_AWK+set}" = set; then 4140if ${ac_cv_prog_AWK+:} false; then :
3735 echo $ECHO_N "(cached) $ECHO_C" >&6 4141 $as_echo_n "(cached) " >&6
3736else 4142else
3737 if test -n "$AWK"; then 4143 if test -n "$AWK"; then
3738 ac_cv_prog_AWK="$AWK" # Let the user override the test. 4144 ac_cv_prog_AWK="$AWK" # Let the user override the test.
@@ -3742,25 +4148,25 @@ for as_dir in $PATH
3742do 4148do
3743 IFS=$as_save_IFS 4149 IFS=$as_save_IFS
3744 test -z "$as_dir" && as_dir=. 4150 test -z "$as_dir" && as_dir=.
3745 for ac_exec_ext in '' $ac_executable_extensions; do 4151 for ac_exec_ext in '' $ac_executable_extensions; do
3746 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4152 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3747 ac_cv_prog_AWK="$ac_prog" 4153 ac_cv_prog_AWK="$ac_prog"
3748 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4154 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3749 break 2 4155 break 2
3750 fi 4156 fi
3751done 4157done
3752done 4158 done
3753IFS=$as_save_IFS 4159IFS=$as_save_IFS
3754 4160
3755fi 4161fi
3756fi 4162fi
3757AWK=$ac_cv_prog_AWK 4163AWK=$ac_cv_prog_AWK
3758if test -n "$AWK"; then 4164if test -n "$AWK"; then
3759 { echo "$as_me:$LINENO: result: $AWK" >&5 4165 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
3760echo "${ECHO_T}$AWK" >&6; } 4166$as_echo "$AWK" >&6; }
3761else 4167else
3762 { echo "$as_me:$LINENO: result: no" >&5 4168 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3763echo "${ECHO_T}no" >&6; } 4169$as_echo "no" >&6; }
3764fi 4170fi
3765 4171
3766 4172
@@ -3772,15 +4178,15 @@ ac_cpp='$CPP $CPPFLAGS'
3772ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 4178ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3773ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 4179ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3774ac_compiler_gnu=$ac_cv_c_compiler_gnu 4180ac_compiler_gnu=$ac_cv_c_compiler_gnu
3775{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 4181{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
3776echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } 4182$as_echo_n "checking how to run the C preprocessor... " >&6; }
3777# On Suns, sometimes $CPP names a directory. 4183# On Suns, sometimes $CPP names a directory.
3778if test -n "$CPP" && test -d "$CPP"; then 4184if test -n "$CPP" && test -d "$CPP"; then
3779 CPP= 4185 CPP=
3780fi 4186fi
3781if test -z "$CPP"; then 4187if test -z "$CPP"; then
3782 if test "${ac_cv_prog_CPP+set}" = set; then 4188 if ${ac_cv_prog_CPP+:} false; then :
3783 echo $ECHO_N "(cached) $ECHO_C" >&6 4189 $as_echo_n "(cached) " >&6
3784else 4190else
3785 # Double quotes because CPP needs to be expanded 4191 # Double quotes because CPP needs to be expanded
3786 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" 4192 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3794,11 +4200,7 @@ do
3794 # <limits.h> exists even on freestanding compilers. 4200 # <limits.h> exists even on freestanding compilers.
3795 # On the NeXT, cc -E runs the code through the compiler's parser, 4201 # On the NeXT, cc -E runs the code through the compiler's parser,
3796 # not just through cpp. "Syntax error" is here to catch this case. 4202 # not just through cpp. "Syntax error" is here to catch this case.
3797 cat >conftest.$ac_ext <<_ACEOF 4203 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3798/* confdefs.h. */
3799_ACEOF
3800cat confdefs.h >>conftest.$ac_ext
3801cat >>conftest.$ac_ext <<_ACEOF
3802/* end confdefs.h. */ 4204/* end confdefs.h. */
3803#ifdef __STDC__ 4205#ifdef __STDC__
3804# include <limits.h> 4206# include <limits.h>
@@ -3807,76 +4209,34 @@ cat >>conftest.$ac_ext <<_ACEOF
3807#endif 4209#endif
3808 Syntax error 4210 Syntax error
3809_ACEOF 4211_ACEOF
3810if { (ac_try="$ac_cpp conftest.$ac_ext" 4212if ac_fn_c_try_cpp "$LINENO"; then :
3811case "(($ac_try" in
3812 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3813 *) ac_try_echo=$ac_try;;
3814esac
3815eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3816 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3817 ac_status=$?
3818 grep -v '^ *+' conftest.er1 >conftest.err
3819 rm -f conftest.er1
3820 cat conftest.err >&5
3821 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3822 (exit $ac_status); } >/dev/null && {
3823 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3824 test ! -s conftest.err
3825 }; then
3826 :
3827else
3828 echo "$as_me: failed program was:" >&5
3829sed 's/^/| /' conftest.$ac_ext >&5
3830 4213
4214else
3831 # Broken: fails on valid input. 4215 # Broken: fails on valid input.
3832continue 4216continue
3833fi 4217fi
3834 4218rm -f conftest.err conftest.i conftest.$ac_ext
3835rm -f conftest.err conftest.$ac_ext
3836 4219
3837 # OK, works on sane cases. Now check whether nonexistent headers 4220 # OK, works on sane cases. Now check whether nonexistent headers
3838 # can be detected and how. 4221 # can be detected and how.
3839 cat >conftest.$ac_ext <<_ACEOF 4222 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3840/* confdefs.h. */
3841_ACEOF
3842cat confdefs.h >>conftest.$ac_ext
3843cat >>conftest.$ac_ext <<_ACEOF
3844/* end confdefs.h. */ 4223/* end confdefs.h. */
3845#include <ac_nonexistent.h> 4224#include <ac_nonexistent.h>
3846_ACEOF 4225_ACEOF
3847if { (ac_try="$ac_cpp conftest.$ac_ext" 4226if ac_fn_c_try_cpp "$LINENO"; then :
3848case "(($ac_try" in
3849 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3850 *) ac_try_echo=$ac_try;;
3851esac
3852eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3853 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3854 ac_status=$?
3855 grep -v '^ *+' conftest.er1 >conftest.err
3856 rm -f conftest.er1
3857 cat conftest.err >&5
3858 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3859 (exit $ac_status); } >/dev/null && {
3860 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3861 test ! -s conftest.err
3862 }; then
3863 # Broken: success on invalid input. 4227 # Broken: success on invalid input.
3864continue 4228continue
3865else 4229else
3866 echo "$as_me: failed program was:" >&5
3867sed 's/^/| /' conftest.$ac_ext >&5
3868
3869 # Passes both tests. 4230 # Passes both tests.
3870ac_preproc_ok=: 4231ac_preproc_ok=:
3871break 4232break
3872fi 4233fi
3873 4234rm -f conftest.err conftest.i conftest.$ac_ext
3874rm -f conftest.err conftest.$ac_ext
3875 4235
3876done 4236done
3877# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 4237# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
3878rm -f conftest.err conftest.$ac_ext 4238rm -f conftest.i conftest.err conftest.$ac_ext
3879if $ac_preproc_ok; then 4239if $ac_preproc_ok; then :
3880 break 4240 break
3881fi 4241fi
3882 4242
@@ -3888,8 +4248,8 @@ fi
3888else 4248else
3889 ac_cv_prog_CPP=$CPP 4249 ac_cv_prog_CPP=$CPP
3890fi 4250fi
3891{ echo "$as_me:$LINENO: result: $CPP" >&5 4251{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
3892echo "${ECHO_T}$CPP" >&6; } 4252$as_echo "$CPP" >&6; }
3893ac_preproc_ok=false 4253ac_preproc_ok=false
3894for ac_c_preproc_warn_flag in '' yes 4254for ac_c_preproc_warn_flag in '' yes
3895do 4255do
@@ -3899,11 +4259,7 @@ do
3899 # <limits.h> exists even on freestanding compilers. 4259 # <limits.h> exists even on freestanding compilers.
3900 # On the NeXT, cc -E runs the code through the compiler's parser, 4260 # On the NeXT, cc -E runs the code through the compiler's parser,
3901 # not just through cpp. "Syntax error" is here to catch this case. 4261 # not just through cpp. "Syntax error" is here to catch this case.
3902 cat >conftest.$ac_ext <<_ACEOF 4262 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3903/* confdefs.h. */
3904_ACEOF
3905cat confdefs.h >>conftest.$ac_ext
3906cat >>conftest.$ac_ext <<_ACEOF
3907/* end confdefs.h. */ 4263/* end confdefs.h. */
3908#ifdef __STDC__ 4264#ifdef __STDC__
3909# include <limits.h> 4265# include <limits.h>
@@ -3912,83 +4268,40 @@ cat >>conftest.$ac_ext <<_ACEOF
3912#endif 4268#endif
3913 Syntax error 4269 Syntax error
3914_ACEOF 4270_ACEOF
3915if { (ac_try="$ac_cpp conftest.$ac_ext" 4271if ac_fn_c_try_cpp "$LINENO"; then :
3916case "(($ac_try" in
3917 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3918 *) ac_try_echo=$ac_try;;
3919esac
3920eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3921 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3922 ac_status=$?
3923 grep -v '^ *+' conftest.er1 >conftest.err
3924 rm -f conftest.er1
3925 cat conftest.err >&5
3926 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3927 (exit $ac_status); } >/dev/null && {
3928 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3929 test ! -s conftest.err
3930 }; then
3931 :
3932else
3933 echo "$as_me: failed program was:" >&5
3934sed 's/^/| /' conftest.$ac_ext >&5
3935 4272
4273else
3936 # Broken: fails on valid input. 4274 # Broken: fails on valid input.
3937continue 4275continue
3938fi 4276fi
3939 4277rm -f conftest.err conftest.i conftest.$ac_ext
3940rm -f conftest.err conftest.$ac_ext
3941 4278
3942 # OK, works on sane cases. Now check whether nonexistent headers 4279 # OK, works on sane cases. Now check whether nonexistent headers
3943 # can be detected and how. 4280 # can be detected and how.
3944 cat >conftest.$ac_ext <<_ACEOF 4281 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3945/* confdefs.h. */
3946_ACEOF
3947cat confdefs.h >>conftest.$ac_ext
3948cat >>conftest.$ac_ext <<_ACEOF
3949/* end confdefs.h. */ 4282/* end confdefs.h. */
3950#include <ac_nonexistent.h> 4283#include <ac_nonexistent.h>
3951_ACEOF 4284_ACEOF
3952if { (ac_try="$ac_cpp conftest.$ac_ext" 4285if ac_fn_c_try_cpp "$LINENO"; then :
3953case "(($ac_try" in
3954 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3955 *) ac_try_echo=$ac_try;;
3956esac
3957eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3958 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3959 ac_status=$?
3960 grep -v '^ *+' conftest.er1 >conftest.err
3961 rm -f conftest.er1
3962 cat conftest.err >&5
3963 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3964 (exit $ac_status); } >/dev/null && {
3965 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3966 test ! -s conftest.err
3967 }; then
3968 # Broken: success on invalid input. 4286 # Broken: success on invalid input.
3969continue 4287continue
3970else 4288else
3971 echo "$as_me: failed program was:" >&5
3972sed 's/^/| /' conftest.$ac_ext >&5
3973
3974 # Passes both tests. 4289 # Passes both tests.
3975ac_preproc_ok=: 4290ac_preproc_ok=:
3976break 4291break
3977fi 4292fi
3978 4293rm -f conftest.err conftest.i conftest.$ac_ext
3979rm -f conftest.err conftest.$ac_ext
3980 4294
3981done 4295done
3982# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 4296# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
3983rm -f conftest.err conftest.$ac_ext 4297rm -f conftest.i conftest.err conftest.$ac_ext
3984if $ac_preproc_ok; then 4298if $ac_preproc_ok; then :
3985 : 4299
3986else 4300else
3987 { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check 4301 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3988See \`config.log' for more details." >&5 4302$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3989echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check 4303as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
3990See \`config.log' for more details." >&2;} 4304See \`config.log' for more details" "$LINENO" 5; }
3991 { (exit 1); exit 1; }; }
3992fi 4305fi
3993 4306
3994ac_ext=c 4307ac_ext=c
@@ -4000,10 +4313,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
4000if test -n "$ac_tool_prefix"; then 4313if test -n "$ac_tool_prefix"; then
4001 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. 4314 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4002set dummy ${ac_tool_prefix}ranlib; ac_word=$2 4315set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4003{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4316{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4004echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4317$as_echo_n "checking for $ac_word... " >&6; }
4005if test "${ac_cv_prog_RANLIB+set}" = set; then 4318if ${ac_cv_prog_RANLIB+:} false; then :
4006 echo $ECHO_N "(cached) $ECHO_C" >&6 4319 $as_echo_n "(cached) " >&6
4007else 4320else
4008 if test -n "$RANLIB"; then 4321 if test -n "$RANLIB"; then
4009 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. 4322 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -4013,25 +4326,25 @@ for as_dir in $PATH
4013do 4326do
4014 IFS=$as_save_IFS 4327 IFS=$as_save_IFS
4015 test -z "$as_dir" && as_dir=. 4328 test -z "$as_dir" && as_dir=.
4016 for ac_exec_ext in '' $ac_executable_extensions; do 4329 for ac_exec_ext in '' $ac_executable_extensions; do
4017 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4330 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4018 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" 4331 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4019 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4332 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4020 break 2 4333 break 2
4021 fi 4334 fi
4022done 4335done
4023done 4336 done
4024IFS=$as_save_IFS 4337IFS=$as_save_IFS
4025 4338
4026fi 4339fi
4027fi 4340fi
4028RANLIB=$ac_cv_prog_RANLIB 4341RANLIB=$ac_cv_prog_RANLIB
4029if test -n "$RANLIB"; then 4342if test -n "$RANLIB"; then
4030 { echo "$as_me:$LINENO: result: $RANLIB" >&5 4343 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
4031echo "${ECHO_T}$RANLIB" >&6; } 4344$as_echo "$RANLIB" >&6; }
4032else 4345else
4033 { echo "$as_me:$LINENO: result: no" >&5 4346 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4034echo "${ECHO_T}no" >&6; } 4347$as_echo "no" >&6; }
4035fi 4348fi
4036 4349
4037 4350
@@ -4040,10 +4353,10 @@ if test -z "$ac_cv_prog_RANLIB"; then
4040 ac_ct_RANLIB=$RANLIB 4353 ac_ct_RANLIB=$RANLIB
4041 # Extract the first word of "ranlib", so it can be a program name with args. 4354 # Extract the first word of "ranlib", so it can be a program name with args.
4042set dummy ranlib; ac_word=$2 4355set dummy ranlib; ac_word=$2
4043{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4356{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4044echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4357$as_echo_n "checking for $ac_word... " >&6; }
4045if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then 4358if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
4046 echo $ECHO_N "(cached) $ECHO_C" >&6 4359 $as_echo_n "(cached) " >&6
4047else 4360else
4048 if test -n "$ac_ct_RANLIB"; then 4361 if test -n "$ac_ct_RANLIB"; then
4049 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. 4362 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
@@ -4053,25 +4366,25 @@ for as_dir in $PATH
4053do 4366do
4054 IFS=$as_save_IFS 4367 IFS=$as_save_IFS
4055 test -z "$as_dir" && as_dir=. 4368 test -z "$as_dir" && as_dir=.
4056 for ac_exec_ext in '' $ac_executable_extensions; do 4369 for ac_exec_ext in '' $ac_executable_extensions; do
4057 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4370 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4058 ac_cv_prog_ac_ct_RANLIB="ranlib" 4371 ac_cv_prog_ac_ct_RANLIB="ranlib"
4059 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4372 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4060 break 2 4373 break 2
4061 fi 4374 fi
4062done 4375done
4063done 4376 done
4064IFS=$as_save_IFS 4377IFS=$as_save_IFS
4065 4378
4066fi 4379fi
4067fi 4380fi
4068ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB 4381ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4069if test -n "$ac_ct_RANLIB"; then 4382if test -n "$ac_ct_RANLIB"; then
4070 { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 4383 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
4071echo "${ECHO_T}$ac_ct_RANLIB" >&6; } 4384$as_echo "$ac_ct_RANLIB" >&6; }
4072else 4385else
4073 { echo "$as_me:$LINENO: result: no" >&5 4386 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4074echo "${ECHO_T}no" >&6; } 4387$as_echo "no" >&6; }
4075fi 4388fi
4076 4389
4077 if test "x$ac_ct_RANLIB" = x; then 4390 if test "x$ac_ct_RANLIB" = x; then
@@ -4079,12 +4392,8 @@ fi
4079 else 4392 else
4080 case $cross_compiling:$ac_tool_warned in 4393 case $cross_compiling:$ac_tool_warned in
4081yes:) 4394yes:)
4082{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools 4395{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4083whose name does not start with the host triplet. If you think this 4396$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4084configuration is useful to you, please write to autoconf@gnu.org." >&5
4085echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4086whose name does not start with the host triplet. If you think this
4087configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4088ac_tool_warned=yes ;; 4397ac_tool_warned=yes ;;
4089esac 4398esac
4090 RANLIB=$ac_ct_RANLIB 4399 RANLIB=$ac_ct_RANLIB
@@ -4106,22 +4415,23 @@ fi
4106# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" 4415# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
4107# OS/2's system install, which has a completely different semantic 4416# OS/2's system install, which has a completely different semantic
4108# ./install, which can be erroneously created by make from ./install.sh. 4417# ./install, which can be erroneously created by make from ./install.sh.
4109{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 4418# Reject install programs that cannot install multiple files.
4110echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } 4419{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
4420$as_echo_n "checking for a BSD-compatible install... " >&6; }
4111if test -z "$INSTALL"; then 4421if test -z "$INSTALL"; then
4112if test "${ac_cv_path_install+set}" = set; then 4422if ${ac_cv_path_install+:} false; then :
4113 echo $ECHO_N "(cached) $ECHO_C" >&6 4423 $as_echo_n "(cached) " >&6
4114else 4424else
4115 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 4425 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4116for as_dir in $PATH 4426for as_dir in $PATH
4117do 4427do
4118 IFS=$as_save_IFS 4428 IFS=$as_save_IFS
4119 test -z "$as_dir" && as_dir=. 4429 test -z "$as_dir" && as_dir=.
4120 # Account for people who put trailing slashes in PATH elements. 4430 # Account for people who put trailing slashes in PATH elements.
4121case $as_dir/ in 4431case $as_dir/ in #((
4122 ./ | .// | /cC/* | \ 4432 ./ | .// | /[cC]/* | \
4123 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ 4433 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
4124 ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ 4434 ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
4125 /usr/ucb/* ) ;; 4435 /usr/ucb/* ) ;;
4126 *) 4436 *)
4127 # OSF1 and SCO ODT 3.0 have their own names for install. 4437 # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -4129,7 +4439,7 @@ case $as_dir/ in
4129 # by default. 4439 # by default.
4130 for ac_prog in ginstall scoinst install; do 4440 for ac_prog in ginstall scoinst install; do
4131 for ac_exec_ext in '' $ac_executable_extensions; do 4441 for ac_exec_ext in '' $ac_executable_extensions; do
4132 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then 4442 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
4133 if test $ac_prog = install && 4443 if test $ac_prog = install &&
4134 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then 4444 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
4135 # AIX install. It has an incompatible calling convention. 4445 # AIX install. It has an incompatible calling convention.
@@ -4139,17 +4449,29 @@ case $as_dir/ in
4139 # program-specific install script used by HP pwplus--don't use. 4449 # program-specific install script used by HP pwplus--don't use.
4140 : 4450 :
4141 else 4451 else
4142 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" 4452 rm -rf conftest.one conftest.two conftest.dir
4143 break 3 4453 echo one > conftest.one
4454 echo two > conftest.two
4455 mkdir conftest.dir
4456 if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
4457 test -s conftest.one && test -s conftest.two &&
4458 test -s conftest.dir/conftest.one &&
4459 test -s conftest.dir/conftest.two
4460 then
4461 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
4462 break 3
4463 fi
4144 fi 4464 fi
4145 fi 4465 fi
4146 done 4466 done
4147 done 4467 done
4148 ;; 4468 ;;
4149esac 4469esac
4150done 4470
4471 done
4151IFS=$as_save_IFS 4472IFS=$as_save_IFS
4152 4473
4474rm -rf conftest.one conftest.two conftest.dir
4153 4475
4154fi 4476fi
4155 if test "${ac_cv_path_install+set}" = set; then 4477 if test "${ac_cv_path_install+set}" = set; then
@@ -4162,8 +4484,8 @@ fi
4162 INSTALL=$ac_install_sh 4484 INSTALL=$ac_install_sh
4163 fi 4485 fi
4164fi 4486fi
4165{ echo "$as_me:$LINENO: result: $INSTALL" >&5 4487{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
4166echo "${ECHO_T}$INSTALL" >&6; } 4488$as_echo "$INSTALL" >&6; }
4167 4489
4168# Use test -z because SunOS4 sh mishandles braces in ${var-val}. 4490# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
4169# It thinks the first close brace ends the variable substitution. 4491# It thinks the first close brace ends the variable substitution.
@@ -4173,48 +4495,43 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
4173 4495
4174test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' 4496test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
4175 4497
4176{ echo "$as_me:$LINENO: checking for egrep" >&5 4498{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
4177echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } 4499$as_echo_n "checking for egrep... " >&6; }
4178if test "${ac_cv_path_EGREP+set}" = set; then 4500if ${ac_cv_path_EGREP+:} false; then :
4179 echo $ECHO_N "(cached) $ECHO_C" >&6 4501 $as_echo_n "(cached) " >&6
4180else 4502else
4181 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 4503 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
4182 then ac_cv_path_EGREP="$GREP -E" 4504 then ac_cv_path_EGREP="$GREP -E"
4183 else 4505 else
4184 # Extract the first word of "egrep" to use in msg output 4506 if test -z "$EGREP"; then
4185if test -z "$EGREP"; then
4186set dummy egrep; ac_prog_name=$2
4187if test "${ac_cv_path_EGREP+set}" = set; then
4188 echo $ECHO_N "(cached) $ECHO_C" >&6
4189else
4190 ac_path_EGREP_found=false 4507 ac_path_EGREP_found=false
4191# Loop through the user's path and test for each of PROGNAME-LIST 4508 # Loop through the user's path and test for each of PROGNAME-LIST
4192as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 4509 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4193for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin 4510for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
4194do 4511do
4195 IFS=$as_save_IFS 4512 IFS=$as_save_IFS
4196 test -z "$as_dir" && as_dir=. 4513 test -z "$as_dir" && as_dir=.
4197 for ac_prog in egrep; do 4514 for ac_prog in egrep; do
4198 for ac_exec_ext in '' $ac_executable_extensions; do 4515 for ac_exec_ext in '' $ac_executable_extensions; do
4199 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" 4516 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
4200 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue 4517 as_fn_executable_p "$ac_path_EGREP" || continue
4201 # Check for GNU ac_path_EGREP and select it if it is found. 4518# Check for GNU ac_path_EGREP and select it if it is found.
4202 # Check for GNU $ac_path_EGREP 4519 # Check for GNU $ac_path_EGREP
4203case `"$ac_path_EGREP" --version 2>&1` in 4520case `"$ac_path_EGREP" --version 2>&1` in
4204*GNU*) 4521*GNU*)
4205 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; 4522 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
4206*) 4523*)
4207 ac_count=0 4524 ac_count=0
4208 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" 4525 $as_echo_n 0123456789 >"conftest.in"
4209 while : 4526 while :
4210 do 4527 do
4211 cat "conftest.in" "conftest.in" >"conftest.tmp" 4528 cat "conftest.in" "conftest.in" >"conftest.tmp"
4212 mv "conftest.tmp" "conftest.in" 4529 mv "conftest.tmp" "conftest.in"
4213 cp "conftest.in" "conftest.nl" 4530 cp "conftest.in" "conftest.nl"
4214 echo 'EGREP' >> "conftest.nl" 4531 $as_echo 'EGREP' >> "conftest.nl"
4215 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break 4532 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
4216 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break 4533 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
4217 ac_count=`expr $ac_count + 1` 4534 as_fn_arith $ac_count + 1 && ac_count=$as_val
4218 if test $ac_count -gt ${ac_path_EGREP_max-0}; then 4535 if test $ac_count -gt ${ac_path_EGREP_max-0}; then
4219 # Best one so far, save it but keep looking for a better one 4536 # Best one so far, save it but keep looking for a better one
4220 ac_cv_path_EGREP="$ac_path_EGREP" 4537 ac_cv_path_EGREP="$ac_path_EGREP"
@@ -4226,33 +4543,22 @@ case `"$ac_path_EGREP" --version 2>&1` in
4226 rm -f conftest.in conftest.tmp conftest.nl conftest.out;; 4543 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4227esac 4544esac
4228 4545
4229 4546 $ac_path_EGREP_found && break 3
4230 $ac_path_EGREP_found && break 3 4547 done
4548 done
4231 done 4549 done
4232done
4233
4234done
4235IFS=$as_save_IFS 4550IFS=$as_save_IFS
4236 4551 if test -z "$ac_cv_path_EGREP"; then
4237 4552 as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
4238fi 4553 fi
4239
4240EGREP="$ac_cv_path_EGREP"
4241if test -z "$EGREP"; then
4242 { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
4243echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
4244 { (exit 1); exit 1; }; }
4245fi
4246
4247else 4554else
4248 ac_cv_path_EGREP=$EGREP 4555 ac_cv_path_EGREP=$EGREP
4249fi 4556fi
4250 4557
4251
4252 fi 4558 fi
4253fi 4559fi
4254{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 4560{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
4255echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } 4561$as_echo "$ac_cv_path_EGREP" >&6; }
4256 EGREP="$ac_cv_path_EGREP" 4562 EGREP="$ac_cv_path_EGREP"
4257 4563
4258 4564
@@ -4261,10 +4567,10 @@ if test -n "$ac_tool_prefix"; then
4261 do 4567 do
4262 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. 4568 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
4263set dummy $ac_tool_prefix$ac_prog; ac_word=$2 4569set dummy $ac_tool_prefix$ac_prog; ac_word=$2
4264{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4570{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4265echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4571$as_echo_n "checking for $ac_word... " >&6; }
4266if test "${ac_cv_prog_AR+set}" = set; then 4572if ${ac_cv_prog_AR+:} false; then :
4267 echo $ECHO_N "(cached) $ECHO_C" >&6 4573 $as_echo_n "(cached) " >&6
4268else 4574else
4269 if test -n "$AR"; then 4575 if test -n "$AR"; then
4270 ac_cv_prog_AR="$AR" # Let the user override the test. 4576 ac_cv_prog_AR="$AR" # Let the user override the test.
@@ -4274,25 +4580,25 @@ for as_dir in $PATH
4274do 4580do
4275 IFS=$as_save_IFS 4581 IFS=$as_save_IFS
4276 test -z "$as_dir" && as_dir=. 4582 test -z "$as_dir" && as_dir=.
4277 for ac_exec_ext in '' $ac_executable_extensions; do 4583 for ac_exec_ext in '' $ac_executable_extensions; do
4278 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4584 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4279 ac_cv_prog_AR="$ac_tool_prefix$ac_prog" 4585 ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
4280 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4586 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4281 break 2 4587 break 2
4282 fi 4588 fi
4283done 4589done
4284done 4590 done
4285IFS=$as_save_IFS 4591IFS=$as_save_IFS
4286 4592
4287fi 4593fi
4288fi 4594fi
4289AR=$ac_cv_prog_AR 4595AR=$ac_cv_prog_AR
4290if test -n "$AR"; then 4596if test -n "$AR"; then
4291 { echo "$as_me:$LINENO: result: $AR" >&5 4597 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
4292echo "${ECHO_T}$AR" >&6; } 4598$as_echo "$AR" >&6; }
4293else 4599else
4294 { echo "$as_me:$LINENO: result: no" >&5 4600 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4295echo "${ECHO_T}no" >&6; } 4601$as_echo "no" >&6; }
4296fi 4602fi
4297 4603
4298 4604
@@ -4305,10 +4611,10 @@ if test -z "$AR"; then
4305do 4611do
4306 # Extract the first word of "$ac_prog", so it can be a program name with args. 4612 # Extract the first word of "$ac_prog", so it can be a program name with args.
4307set dummy $ac_prog; ac_word=$2 4613set dummy $ac_prog; ac_word=$2
4308{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4614{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4309echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4615$as_echo_n "checking for $ac_word... " >&6; }
4310if test "${ac_cv_prog_ac_ct_AR+set}" = set; then 4616if ${ac_cv_prog_ac_ct_AR+:} false; then :
4311 echo $ECHO_N "(cached) $ECHO_C" >&6 4617 $as_echo_n "(cached) " >&6
4312else 4618else
4313 if test -n "$ac_ct_AR"; then 4619 if test -n "$ac_ct_AR"; then
4314 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. 4620 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
@@ -4318,25 +4624,25 @@ for as_dir in $PATH
4318do 4624do
4319 IFS=$as_save_IFS 4625 IFS=$as_save_IFS
4320 test -z "$as_dir" && as_dir=. 4626 test -z "$as_dir" && as_dir=.
4321 for ac_exec_ext in '' $ac_executable_extensions; do 4627 for ac_exec_ext in '' $ac_executable_extensions; do
4322 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4628 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4323 ac_cv_prog_ac_ct_AR="$ac_prog" 4629 ac_cv_prog_ac_ct_AR="$ac_prog"
4324 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4630 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4325 break 2 4631 break 2
4326 fi 4632 fi
4327done 4633done
4328done 4634 done
4329IFS=$as_save_IFS 4635IFS=$as_save_IFS
4330 4636
4331fi 4637fi
4332fi 4638fi
4333ac_ct_AR=$ac_cv_prog_ac_ct_AR 4639ac_ct_AR=$ac_cv_prog_ac_ct_AR
4334if test -n "$ac_ct_AR"; then 4640if test -n "$ac_ct_AR"; then
4335 { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 4641 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
4336echo "${ECHO_T}$ac_ct_AR" >&6; } 4642$as_echo "$ac_ct_AR" >&6; }
4337else 4643else
4338 { echo "$as_me:$LINENO: result: no" >&5 4644 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4339echo "${ECHO_T}no" >&6; } 4645$as_echo "no" >&6; }
4340fi 4646fi
4341 4647
4342 4648
@@ -4348,12 +4654,8 @@ done
4348 else 4654 else
4349 case $cross_compiling:$ac_tool_warned in 4655 case $cross_compiling:$ac_tool_warned in
4350yes:) 4656yes:)
4351{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools 4657{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4352whose name does not start with the host triplet. If you think this 4658$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4353configuration is useful to you, please write to autoconf@gnu.org." >&5
4354echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4355whose name does not start with the host triplet. If you think this
4356configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4357ac_tool_warned=yes ;; 4659ac_tool_warned=yes ;;
4358esac 4660esac
4359 AR=$ac_ct_AR 4661 AR=$ac_ct_AR
@@ -4362,10 +4664,10 @@ fi
4362 4664
4363# Extract the first word of "cat", so it can be a program name with args. 4665# Extract the first word of "cat", so it can be a program name with args.
4364set dummy cat; ac_word=$2 4666set dummy cat; ac_word=$2
4365{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4667{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4366echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4668$as_echo_n "checking for $ac_word... " >&6; }
4367if test "${ac_cv_path_CAT+set}" = set; then 4669if ${ac_cv_path_CAT+:} false; then :
4368 echo $ECHO_N "(cached) $ECHO_C" >&6 4670 $as_echo_n "(cached) " >&6
4369else 4671else
4370 case $CAT in 4672 case $CAT in
4371 [\\/]* | ?:[\\/]*) 4673 [\\/]* | ?:[\\/]*)
@@ -4377,14 +4679,14 @@ for as_dir in $PATH
4377do 4679do
4378 IFS=$as_save_IFS 4680 IFS=$as_save_IFS
4379 test -z "$as_dir" && as_dir=. 4681 test -z "$as_dir" && as_dir=.
4380 for ac_exec_ext in '' $ac_executable_extensions; do 4682 for ac_exec_ext in '' $ac_executable_extensions; do
4381 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4683 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4382 ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" 4684 ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
4383 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4685 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4384 break 2 4686 break 2
4385 fi 4687 fi
4386done 4688done
4387done 4689 done
4388IFS=$as_save_IFS 4690IFS=$as_save_IFS
4389 4691
4390 ;; 4692 ;;
@@ -4392,20 +4694,20 @@ esac
4392fi 4694fi
4393CAT=$ac_cv_path_CAT 4695CAT=$ac_cv_path_CAT
4394if test -n "$CAT"; then 4696if test -n "$CAT"; then
4395 { echo "$as_me:$LINENO: result: $CAT" >&5 4697 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
4396echo "${ECHO_T}$CAT" >&6; } 4698$as_echo "$CAT" >&6; }
4397else 4699else
4398 { echo "$as_me:$LINENO: result: no" >&5 4700 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4399echo "${ECHO_T}no" >&6; } 4701$as_echo "no" >&6; }
4400fi 4702fi
4401 4703
4402 4704
4403# Extract the first word of "kill", so it can be a program name with args. 4705# Extract the first word of "kill", so it can be a program name with args.
4404set dummy kill; ac_word=$2 4706set dummy kill; ac_word=$2
4405{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4707{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4406echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4708$as_echo_n "checking for $ac_word... " >&6; }
4407if test "${ac_cv_path_KILL+set}" = set; then 4709if ${ac_cv_path_KILL+:} false; then :
4408 echo $ECHO_N "(cached) $ECHO_C" >&6 4710 $as_echo_n "(cached) " >&6
4409else 4711else
4410 case $KILL in 4712 case $KILL in
4411 [\\/]* | ?:[\\/]*) 4713 [\\/]* | ?:[\\/]*)
@@ -4417,14 +4719,14 @@ for as_dir in $PATH
4417do 4719do
4418 IFS=$as_save_IFS 4720 IFS=$as_save_IFS
4419 test -z "$as_dir" && as_dir=. 4721 test -z "$as_dir" && as_dir=.
4420 for ac_exec_ext in '' $ac_executable_extensions; do 4722 for ac_exec_ext in '' $ac_executable_extensions; do
4421 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4723 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4422 ac_cv_path_KILL="$as_dir/$ac_word$ac_exec_ext" 4724 ac_cv_path_KILL="$as_dir/$ac_word$ac_exec_ext"
4423 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4725 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4424 break 2 4726 break 2
4425 fi 4727 fi
4426done 4728done
4427done 4729 done
4428IFS=$as_save_IFS 4730IFS=$as_save_IFS
4429 4731
4430 ;; 4732 ;;
@@ -4432,11 +4734,11 @@ esac
4432fi 4734fi
4433KILL=$ac_cv_path_KILL 4735KILL=$ac_cv_path_KILL
4434if test -n "$KILL"; then 4736if test -n "$KILL"; then
4435 { echo "$as_me:$LINENO: result: $KILL" >&5 4737 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KILL" >&5
4436echo "${ECHO_T}$KILL" >&6; } 4738$as_echo "$KILL" >&6; }
4437else 4739else
4438 { echo "$as_me:$LINENO: result: no" >&5 4740 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4439echo "${ECHO_T}no" >&6; } 4741$as_echo "no" >&6; }
4440fi 4742fi
4441 4743
4442 4744
@@ -4444,10 +4746,10 @@ for ac_prog in perl5 perl
4444do 4746do
4445 # Extract the first word of "$ac_prog", so it can be a program name with args. 4747 # Extract the first word of "$ac_prog", so it can be a program name with args.
4446set dummy $ac_prog; ac_word=$2 4748set dummy $ac_prog; ac_word=$2
4447{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4749{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4448echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4750$as_echo_n "checking for $ac_word... " >&6; }
4449if test "${ac_cv_path_PERL+set}" = set; then 4751if ${ac_cv_path_PERL+:} false; then :
4450 echo $ECHO_N "(cached) $ECHO_C" >&6 4752 $as_echo_n "(cached) " >&6
4451else 4753else
4452 case $PERL in 4754 case $PERL in
4453 [\\/]* | ?:[\\/]*) 4755 [\\/]* | ?:[\\/]*)
@@ -4459,14 +4761,14 @@ for as_dir in $PATH
4459do 4761do
4460 IFS=$as_save_IFS 4762 IFS=$as_save_IFS
4461 test -z "$as_dir" && as_dir=. 4763 test -z "$as_dir" && as_dir=.
4462 for ac_exec_ext in '' $ac_executable_extensions; do 4764 for ac_exec_ext in '' $ac_executable_extensions; do
4463 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4765 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4464 ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" 4766 ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
4465 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4767 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4466 break 2 4768 break 2
4467 fi 4769 fi
4468done 4770done
4469done 4771 done
4470IFS=$as_save_IFS 4772IFS=$as_save_IFS
4471 4773
4472 ;; 4774 ;;
@@ -4474,11 +4776,11 @@ esac
4474fi 4776fi
4475PERL=$ac_cv_path_PERL 4777PERL=$ac_cv_path_PERL
4476if test -n "$PERL"; then 4778if test -n "$PERL"; then
4477 { echo "$as_me:$LINENO: result: $PERL" >&5 4779 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
4478echo "${ECHO_T}$PERL" >&6; } 4780$as_echo "$PERL" >&6; }
4479else 4781else
4480 { echo "$as_me:$LINENO: result: no" >&5 4782 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4481echo "${ECHO_T}no" >&6; } 4783$as_echo "no" >&6; }
4482fi 4784fi
4483 4785
4484 4786
@@ -4487,10 +4789,10 @@ done
4487 4789
4488# Extract the first word of "sed", so it can be a program name with args. 4790# Extract the first word of "sed", so it can be a program name with args.
4489set dummy sed; ac_word=$2 4791set dummy sed; ac_word=$2
4490{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4792{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4491echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4793$as_echo_n "checking for $ac_word... " >&6; }
4492if test "${ac_cv_path_SED+set}" = set; then 4794if ${ac_cv_path_SED+:} false; then :
4493 echo $ECHO_N "(cached) $ECHO_C" >&6 4795 $as_echo_n "(cached) " >&6
4494else 4796else
4495 case $SED in 4797 case $SED in
4496 [\\/]* | ?:[\\/]*) 4798 [\\/]* | ?:[\\/]*)
@@ -4502,14 +4804,14 @@ for as_dir in $PATH
4502do 4804do
4503 IFS=$as_save_IFS 4805 IFS=$as_save_IFS
4504 test -z "$as_dir" && as_dir=. 4806 test -z "$as_dir" && as_dir=.
4505 for ac_exec_ext in '' $ac_executable_extensions; do 4807 for ac_exec_ext in '' $ac_executable_extensions; do
4506 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4808 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4507 ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" 4809 ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
4508 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4810 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4509 break 2 4811 break 2
4510 fi 4812 fi
4511done 4813done
4512done 4814 done
4513IFS=$as_save_IFS 4815IFS=$as_save_IFS
4514 4816
4515 ;; 4817 ;;
@@ -4517,21 +4819,21 @@ esac
4517fi 4819fi
4518SED=$ac_cv_path_SED 4820SED=$ac_cv_path_SED
4519if test -n "$SED"; then 4821if test -n "$SED"; then
4520 { echo "$as_me:$LINENO: result: $SED" >&5 4822 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
4521echo "${ECHO_T}$SED" >&6; } 4823$as_echo "$SED" >&6; }
4522else 4824else
4523 { echo "$as_me:$LINENO: result: no" >&5 4825 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4524echo "${ECHO_T}no" >&6; } 4826$as_echo "no" >&6; }
4525fi 4827fi
4526 4828
4527 4829
4528 4830
4529# Extract the first word of "ent", so it can be a program name with args. 4831# Extract the first word of "ent", so it can be a program name with args.
4530set dummy ent; ac_word=$2 4832set dummy ent; ac_word=$2
4531{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4833{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4532echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4834$as_echo_n "checking for $ac_word... " >&6; }
4533if test "${ac_cv_path_ENT+set}" = set; then 4835if ${ac_cv_path_ENT+:} false; then :
4534 echo $ECHO_N "(cached) $ECHO_C" >&6 4836 $as_echo_n "(cached) " >&6
4535else 4837else
4536 case $ENT in 4838 case $ENT in
4537 [\\/]* | ?:[\\/]*) 4839 [\\/]* | ?:[\\/]*)
@@ -4543,14 +4845,14 @@ for as_dir in $PATH
4543do 4845do
4544 IFS=$as_save_IFS 4846 IFS=$as_save_IFS
4545 test -z "$as_dir" && as_dir=. 4847 test -z "$as_dir" && as_dir=.
4546 for ac_exec_ext in '' $ac_executable_extensions; do 4848 for ac_exec_ext in '' $ac_executable_extensions; do
4547 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4849 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4548 ac_cv_path_ENT="$as_dir/$ac_word$ac_exec_ext" 4850 ac_cv_path_ENT="$as_dir/$ac_word$ac_exec_ext"
4549 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4851 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4550 break 2 4852 break 2
4551 fi 4853 fi
4552done 4854done
4553done 4855 done
4554IFS=$as_save_IFS 4856IFS=$as_save_IFS
4555 4857
4556 ;; 4858 ;;
@@ -4558,21 +4860,21 @@ esac
4558fi 4860fi
4559ENT=$ac_cv_path_ENT 4861ENT=$ac_cv_path_ENT
4560if test -n "$ENT"; then 4862if test -n "$ENT"; then
4561 { echo "$as_me:$LINENO: result: $ENT" >&5 4863 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENT" >&5
4562echo "${ECHO_T}$ENT" >&6; } 4864$as_echo "$ENT" >&6; }
4563else 4865else
4564 { echo "$as_me:$LINENO: result: no" >&5 4866 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4565echo "${ECHO_T}no" >&6; } 4867$as_echo "no" >&6; }
4566fi 4868fi
4567 4869
4568 4870
4569 4871
4570# Extract the first word of "bash", so it can be a program name with args. 4872# Extract the first word of "bash", so it can be a program name with args.
4571set dummy bash; ac_word=$2 4873set dummy bash; ac_word=$2
4572{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4874{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4573echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4875$as_echo_n "checking for $ac_word... " >&6; }
4574if test "${ac_cv_path_TEST_MINUS_S_SH+set}" = set; then 4876if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
4575 echo $ECHO_N "(cached) $ECHO_C" >&6 4877 $as_echo_n "(cached) " >&6
4576else 4878else
4577 case $TEST_MINUS_S_SH in 4879 case $TEST_MINUS_S_SH in
4578 [\\/]* | ?:[\\/]*) 4880 [\\/]* | ?:[\\/]*)
@@ -4584,14 +4886,14 @@ for as_dir in $PATH
4584do 4886do
4585 IFS=$as_save_IFS 4887 IFS=$as_save_IFS
4586 test -z "$as_dir" && as_dir=. 4888 test -z "$as_dir" && as_dir=.
4587 for ac_exec_ext in '' $ac_executable_extensions; do 4889 for ac_exec_ext in '' $ac_executable_extensions; do
4588 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4890 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4589 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext" 4891 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
4590 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4892 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4591 break 2 4893 break 2
4592 fi 4894 fi
4593done 4895done
4594done 4896 done
4595IFS=$as_save_IFS 4897IFS=$as_save_IFS
4596 4898
4597 ;; 4899 ;;
@@ -4599,20 +4901,20 @@ esac
4599fi 4901fi
4600TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH 4902TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
4601if test -n "$TEST_MINUS_S_SH"; then 4903if test -n "$TEST_MINUS_S_SH"; then
4602 { echo "$as_me:$LINENO: result: $TEST_MINUS_S_SH" >&5 4904 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
4603echo "${ECHO_T}$TEST_MINUS_S_SH" >&6; } 4905$as_echo "$TEST_MINUS_S_SH" >&6; }
4604else 4906else
4605 { echo "$as_me:$LINENO: result: no" >&5 4907 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4606echo "${ECHO_T}no" >&6; } 4908$as_echo "no" >&6; }
4607fi 4909fi
4608 4910
4609 4911
4610# Extract the first word of "ksh", so it can be a program name with args. 4912# Extract the first word of "ksh", so it can be a program name with args.
4611set dummy ksh; ac_word=$2 4913set dummy ksh; ac_word=$2
4612{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4914{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4613echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4915$as_echo_n "checking for $ac_word... " >&6; }
4614if test "${ac_cv_path_TEST_MINUS_S_SH+set}" = set; then 4916if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
4615 echo $ECHO_N "(cached) $ECHO_C" >&6 4917 $as_echo_n "(cached) " >&6
4616else 4918else
4617 case $TEST_MINUS_S_SH in 4919 case $TEST_MINUS_S_SH in
4618 [\\/]* | ?:[\\/]*) 4920 [\\/]* | ?:[\\/]*)
@@ -4624,14 +4926,14 @@ for as_dir in $PATH
4624do 4926do
4625 IFS=$as_save_IFS 4927 IFS=$as_save_IFS
4626 test -z "$as_dir" && as_dir=. 4928 test -z "$as_dir" && as_dir=.
4627 for ac_exec_ext in '' $ac_executable_extensions; do 4929 for ac_exec_ext in '' $ac_executable_extensions; do
4628 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4930 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4629 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext" 4931 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
4630 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4932 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4631 break 2 4933 break 2
4632 fi 4934 fi
4633done 4935done
4634done 4936 done
4635IFS=$as_save_IFS 4937IFS=$as_save_IFS
4636 4938
4637 ;; 4939 ;;
@@ -4639,20 +4941,20 @@ esac
4639fi 4941fi
4640TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH 4942TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
4641if test -n "$TEST_MINUS_S_SH"; then 4943if test -n "$TEST_MINUS_S_SH"; then
4642 { echo "$as_me:$LINENO: result: $TEST_MINUS_S_SH" >&5 4944 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
4643echo "${ECHO_T}$TEST_MINUS_S_SH" >&6; } 4945$as_echo "$TEST_MINUS_S_SH" >&6; }
4644else 4946else
4645 { echo "$as_me:$LINENO: result: no" >&5 4947 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4646echo "${ECHO_T}no" >&6; } 4948$as_echo "no" >&6; }
4647fi 4949fi
4648 4950
4649 4951
4650# Extract the first word of "sh", so it can be a program name with args. 4952# Extract the first word of "sh", so it can be a program name with args.
4651set dummy sh; ac_word=$2 4953set dummy sh; ac_word=$2
4652{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4954{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4653echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4955$as_echo_n "checking for $ac_word... " >&6; }
4654if test "${ac_cv_path_TEST_MINUS_S_SH+set}" = set; then 4956if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
4655 echo $ECHO_N "(cached) $ECHO_C" >&6 4957 $as_echo_n "(cached) " >&6
4656else 4958else
4657 case $TEST_MINUS_S_SH in 4959 case $TEST_MINUS_S_SH in
4658 [\\/]* | ?:[\\/]*) 4960 [\\/]* | ?:[\\/]*)
@@ -4664,14 +4966,14 @@ for as_dir in $PATH
4664do 4966do
4665 IFS=$as_save_IFS 4967 IFS=$as_save_IFS
4666 test -z "$as_dir" && as_dir=. 4968 test -z "$as_dir" && as_dir=.
4667 for ac_exec_ext in '' $ac_executable_extensions; do 4969 for ac_exec_ext in '' $ac_executable_extensions; do
4668 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4970 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4669 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext" 4971 ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
4670 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4972 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4671 break 2 4973 break 2
4672 fi 4974 fi
4673done 4975done
4674done 4976 done
4675IFS=$as_save_IFS 4977IFS=$as_save_IFS
4676 4978
4677 ;; 4979 ;;
@@ -4679,20 +4981,20 @@ esac
4679fi 4981fi
4680TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH 4982TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
4681if test -n "$TEST_MINUS_S_SH"; then 4983if test -n "$TEST_MINUS_S_SH"; then
4682 { echo "$as_me:$LINENO: result: $TEST_MINUS_S_SH" >&5 4984 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
4683echo "${ECHO_T}$TEST_MINUS_S_SH" >&6; } 4985$as_echo "$TEST_MINUS_S_SH" >&6; }
4684else 4986else
4685 { echo "$as_me:$LINENO: result: no" >&5 4987 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4686echo "${ECHO_T}no" >&6; } 4988$as_echo "no" >&6; }
4687fi 4989fi
4688 4990
4689 4991
4690# Extract the first word of "sh", so it can be a program name with args. 4992# Extract the first word of "sh", so it can be a program name with args.
4691set dummy sh; ac_word=$2 4993set dummy sh; ac_word=$2
4692{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4994{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4693echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4995$as_echo_n "checking for $ac_word... " >&6; }
4694if test "${ac_cv_path_SH+set}" = set; then 4996if ${ac_cv_path_SH+:} false; then :
4695 echo $ECHO_N "(cached) $ECHO_C" >&6 4997 $as_echo_n "(cached) " >&6
4696else 4998else
4697 case $SH in 4999 case $SH in
4698 [\\/]* | ?:[\\/]*) 5000 [\\/]* | ?:[\\/]*)
@@ -4704,14 +5006,14 @@ for as_dir in $PATH
4704do 5006do
4705 IFS=$as_save_IFS 5007 IFS=$as_save_IFS
4706 test -z "$as_dir" && as_dir=. 5008 test -z "$as_dir" && as_dir=.
4707 for ac_exec_ext in '' $ac_executable_extensions; do 5009 for ac_exec_ext in '' $ac_executable_extensions; do
4708 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5010 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4709 ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext" 5011 ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
4710 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5012 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4711 break 2 5013 break 2
4712 fi 5014 fi
4713done 5015done
4714done 5016 done
4715IFS=$as_save_IFS 5017IFS=$as_save_IFS
4716 5018
4717 ;; 5019 ;;
@@ -4719,20 +5021,20 @@ esac
4719fi 5021fi
4720SH=$ac_cv_path_SH 5022SH=$ac_cv_path_SH
4721if test -n "$SH"; then 5023if test -n "$SH"; then
4722 { echo "$as_me:$LINENO: result: $SH" >&5 5024 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
4723echo "${ECHO_T}$SH" >&6; } 5025$as_echo "$SH" >&6; }
4724else 5026else
4725 { echo "$as_me:$LINENO: result: no" >&5 5027 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4726echo "${ECHO_T}no" >&6; } 5028$as_echo "no" >&6; }
4727fi 5029fi
4728 5030
4729 5031
4730# Extract the first word of "groff", so it can be a program name with args. 5032# Extract the first word of "groff", so it can be a program name with args.
4731set dummy groff; ac_word=$2 5033set dummy groff; ac_word=$2
4732{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5034{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4733echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5035$as_echo_n "checking for $ac_word... " >&6; }
4734if test "${ac_cv_path_GROFF+set}" = set; then 5036if ${ac_cv_path_GROFF+:} false; then :
4735 echo $ECHO_N "(cached) $ECHO_C" >&6 5037 $as_echo_n "(cached) " >&6
4736else 5038else
4737 case $GROFF in 5039 case $GROFF in
4738 [\\/]* | ?:[\\/]*) 5040 [\\/]* | ?:[\\/]*)
@@ -4744,14 +5046,14 @@ for as_dir in $PATH
4744do 5046do
4745 IFS=$as_save_IFS 5047 IFS=$as_save_IFS
4746 test -z "$as_dir" && as_dir=. 5048 test -z "$as_dir" && as_dir=.
4747 for ac_exec_ext in '' $ac_executable_extensions; do 5049 for ac_exec_ext in '' $ac_executable_extensions; do
4748 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5050 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4749 ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext" 5051 ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext"
4750 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5052 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4751 break 2 5053 break 2
4752 fi 5054 fi
4753done 5055done
4754done 5056 done
4755IFS=$as_save_IFS 5057IFS=$as_save_IFS
4756 5058
4757 ;; 5059 ;;
@@ -4759,20 +5061,20 @@ esac
4759fi 5061fi
4760GROFF=$ac_cv_path_GROFF 5062GROFF=$ac_cv_path_GROFF
4761if test -n "$GROFF"; then 5063if test -n "$GROFF"; then
4762 { echo "$as_me:$LINENO: result: $GROFF" >&5 5064 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
4763echo "${ECHO_T}$GROFF" >&6; } 5065$as_echo "$GROFF" >&6; }
4764else 5066else
4765 { echo "$as_me:$LINENO: result: no" >&5 5067 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4766echo "${ECHO_T}no" >&6; } 5068$as_echo "no" >&6; }
4767fi 5069fi
4768 5070
4769 5071
4770# Extract the first word of "nroff", so it can be a program name with args. 5072# Extract the first word of "nroff", so it can be a program name with args.
4771set dummy nroff; ac_word=$2 5073set dummy nroff; ac_word=$2
4772{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5074{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4773echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5075$as_echo_n "checking for $ac_word... " >&6; }
4774if test "${ac_cv_path_NROFF+set}" = set; then 5076if ${ac_cv_path_NROFF+:} false; then :
4775 echo $ECHO_N "(cached) $ECHO_C" >&6 5077 $as_echo_n "(cached) " >&6
4776else 5078else
4777 case $NROFF in 5079 case $NROFF in
4778 [\\/]* | ?:[\\/]*) 5080 [\\/]* | ?:[\\/]*)
@@ -4784,14 +5086,14 @@ for as_dir in $PATH
4784do 5086do
4785 IFS=$as_save_IFS 5087 IFS=$as_save_IFS
4786 test -z "$as_dir" && as_dir=. 5088 test -z "$as_dir" && as_dir=.
4787 for ac_exec_ext in '' $ac_executable_extensions; do 5089 for ac_exec_ext in '' $ac_executable_extensions; do
4788 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5090 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4789 ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext" 5091 ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext"
4790 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5092 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4791 break 2 5093 break 2
4792 fi 5094 fi
4793done 5095done
4794done 5096 done
4795IFS=$as_save_IFS 5097IFS=$as_save_IFS
4796 5098
4797 ;; 5099 ;;
@@ -4799,20 +5101,20 @@ esac
4799fi 5101fi
4800NROFF=$ac_cv_path_NROFF 5102NROFF=$ac_cv_path_NROFF
4801if test -n "$NROFF"; then 5103if test -n "$NROFF"; then
4802 { echo "$as_me:$LINENO: result: $NROFF" >&5 5104 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5
4803echo "${ECHO_T}$NROFF" >&6; } 5105$as_echo "$NROFF" >&6; }
4804else 5106else
4805 { echo "$as_me:$LINENO: result: no" >&5 5107 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4806echo "${ECHO_T}no" >&6; } 5108$as_echo "no" >&6; }
4807fi 5109fi
4808 5110
4809 5111
4810# Extract the first word of "mandoc", so it can be a program name with args. 5112# Extract the first word of "mandoc", so it can be a program name with args.
4811set dummy mandoc; ac_word=$2 5113set dummy mandoc; ac_word=$2
4812{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5114{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4813echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5115$as_echo_n "checking for $ac_word... " >&6; }
4814if test "${ac_cv_path_MANDOC+set}" = set; then 5116if ${ac_cv_path_MANDOC+:} false; then :
4815 echo $ECHO_N "(cached) $ECHO_C" >&6 5117 $as_echo_n "(cached) " >&6
4816else 5118else
4817 case $MANDOC in 5119 case $MANDOC in
4818 [\\/]* | ?:[\\/]*) 5120 [\\/]* | ?:[\\/]*)
@@ -4824,14 +5126,14 @@ for as_dir in $PATH
4824do 5126do
4825 IFS=$as_save_IFS 5127 IFS=$as_save_IFS
4826 test -z "$as_dir" && as_dir=. 5128 test -z "$as_dir" && as_dir=.
4827 for ac_exec_ext in '' $ac_executable_extensions; do 5129 for ac_exec_ext in '' $ac_executable_extensions; do
4828 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5130 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4829 ac_cv_path_MANDOC="$as_dir/$ac_word$ac_exec_ext" 5131 ac_cv_path_MANDOC="$as_dir/$ac_word$ac_exec_ext"
4830 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5132 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4831 break 2 5133 break 2
4832 fi 5134 fi
4833done 5135done
4834done 5136 done
4835IFS=$as_save_IFS 5137IFS=$as_save_IFS
4836 5138
4837 ;; 5139 ;;
@@ -4839,11 +5141,11 @@ esac
4839fi 5141fi
4840MANDOC=$ac_cv_path_MANDOC 5142MANDOC=$ac_cv_path_MANDOC
4841if test -n "$MANDOC"; then 5143if test -n "$MANDOC"; then
4842 { echo "$as_me:$LINENO: result: $MANDOC" >&5 5144 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANDOC" >&5
4843echo "${ECHO_T}$MANDOC" >&6; } 5145$as_echo "$MANDOC" >&6; }
4844else 5146else
4845 { echo "$as_me:$LINENO: result: no" >&5 5147 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4846echo "${ECHO_T}no" >&6; } 5148$as_echo "no" >&6; }
4847fi 5149fi
4848 5150
4849 5151
@@ -4857,18 +5159,18 @@ elif test "x$NROFF" != "x" ; then
4857elif test "x$GROFF" != "x" ; then 5159elif test "x$GROFF" != "x" ; then
4858 MANFMT="$GROFF -mandoc -Tascii" 5160 MANFMT="$GROFF -mandoc -Tascii"
4859else 5161else
4860 { echo "$as_me:$LINENO: WARNING: no manpage formatted found" >&5 5162 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no manpage formatted found" >&5
4861echo "$as_me: WARNING: no manpage formatted found" >&2;} 5163$as_echo "$as_me: WARNING: no manpage formatted found" >&2;}
4862 MANFMT="false" 5164 MANFMT="false"
4863fi 5165fi
4864 5166
4865 5167
4866# Extract the first word of "groupadd", so it can be a program name with args. 5168# Extract the first word of "groupadd", so it can be a program name with args.
4867set dummy groupadd; ac_word=$2 5169set dummy groupadd; ac_word=$2
4868{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5170{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4869echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5171$as_echo_n "checking for $ac_word... " >&6; }
4870if test "${ac_cv_path_PATH_GROUPADD_PROG+set}" = set; then 5172if ${ac_cv_path_PATH_GROUPADD_PROG+:} false; then :
4871 echo $ECHO_N "(cached) $ECHO_C" >&6 5173 $as_echo_n "(cached) " >&6
4872else 5174else
4873 case $PATH_GROUPADD_PROG in 5175 case $PATH_GROUPADD_PROG in
4874 [\\/]* | ?:[\\/]*) 5176 [\\/]* | ?:[\\/]*)
@@ -4880,14 +5182,14 @@ for as_dir in /usr/sbin${PATH_SEPARATOR}/etc
4880do 5182do
4881 IFS=$as_save_IFS 5183 IFS=$as_save_IFS
4882 test -z "$as_dir" && as_dir=. 5184 test -z "$as_dir" && as_dir=.
4883 for ac_exec_ext in '' $ac_executable_extensions; do 5185 for ac_exec_ext in '' $ac_executable_extensions; do
4884 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5186 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4885 ac_cv_path_PATH_GROUPADD_PROG="$as_dir/$ac_word$ac_exec_ext" 5187 ac_cv_path_PATH_GROUPADD_PROG="$as_dir/$ac_word$ac_exec_ext"
4886 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5188 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4887 break 2 5189 break 2
4888 fi 5190 fi
4889done 5191done
4890done 5192 done
4891IFS=$as_save_IFS 5193IFS=$as_save_IFS
4892 5194
4893 test -z "$ac_cv_path_PATH_GROUPADD_PROG" && ac_cv_path_PATH_GROUPADD_PROG="groupadd" 5195 test -z "$ac_cv_path_PATH_GROUPADD_PROG" && ac_cv_path_PATH_GROUPADD_PROG="groupadd"
@@ -4896,20 +5198,20 @@ esac
4896fi 5198fi
4897PATH_GROUPADD_PROG=$ac_cv_path_PATH_GROUPADD_PROG 5199PATH_GROUPADD_PROG=$ac_cv_path_PATH_GROUPADD_PROG
4898if test -n "$PATH_GROUPADD_PROG"; then 5200if test -n "$PATH_GROUPADD_PROG"; then
4899 { echo "$as_me:$LINENO: result: $PATH_GROUPADD_PROG" >&5 5201 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_GROUPADD_PROG" >&5
4900echo "${ECHO_T}$PATH_GROUPADD_PROG" >&6; } 5202$as_echo "$PATH_GROUPADD_PROG" >&6; }
4901else 5203else
4902 { echo "$as_me:$LINENO: result: no" >&5 5204 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4903echo "${ECHO_T}no" >&6; } 5205$as_echo "no" >&6; }
4904fi 5206fi
4905 5207
4906 5208
4907# Extract the first word of "useradd", so it can be a program name with args. 5209# Extract the first word of "useradd", so it can be a program name with args.
4908set dummy useradd; ac_word=$2 5210set dummy useradd; ac_word=$2
4909{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5211{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4910echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5212$as_echo_n "checking for $ac_word... " >&6; }
4911if test "${ac_cv_path_PATH_USERADD_PROG+set}" = set; then 5213if ${ac_cv_path_PATH_USERADD_PROG+:} false; then :
4912 echo $ECHO_N "(cached) $ECHO_C" >&6 5214 $as_echo_n "(cached) " >&6
4913else 5215else
4914 case $PATH_USERADD_PROG in 5216 case $PATH_USERADD_PROG in
4915 [\\/]* | ?:[\\/]*) 5217 [\\/]* | ?:[\\/]*)
@@ -4921,14 +5223,14 @@ for as_dir in /usr/sbin${PATH_SEPARATOR}/etc
4921do 5223do
4922 IFS=$as_save_IFS 5224 IFS=$as_save_IFS
4923 test -z "$as_dir" && as_dir=. 5225 test -z "$as_dir" && as_dir=.
4924 for ac_exec_ext in '' $ac_executable_extensions; do 5226 for ac_exec_ext in '' $ac_executable_extensions; do
4925 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5227 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4926 ac_cv_path_PATH_USERADD_PROG="$as_dir/$ac_word$ac_exec_ext" 5228 ac_cv_path_PATH_USERADD_PROG="$as_dir/$ac_word$ac_exec_ext"
4927 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5229 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4928 break 2 5230 break 2
4929 fi 5231 fi
4930done 5232done
4931done 5233 done
4932IFS=$as_save_IFS 5234IFS=$as_save_IFS
4933 5235
4934 test -z "$ac_cv_path_PATH_USERADD_PROG" && ac_cv_path_PATH_USERADD_PROG="useradd" 5236 test -z "$ac_cv_path_PATH_USERADD_PROG" && ac_cv_path_PATH_USERADD_PROG="useradd"
@@ -4937,20 +5239,20 @@ esac
4937fi 5239fi
4938PATH_USERADD_PROG=$ac_cv_path_PATH_USERADD_PROG 5240PATH_USERADD_PROG=$ac_cv_path_PATH_USERADD_PROG
4939if test -n "$PATH_USERADD_PROG"; then 5241if test -n "$PATH_USERADD_PROG"; then
4940 { echo "$as_me:$LINENO: result: $PATH_USERADD_PROG" >&5 5242 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_USERADD_PROG" >&5
4941echo "${ECHO_T}$PATH_USERADD_PROG" >&6; } 5243$as_echo "$PATH_USERADD_PROG" >&6; }
4942else 5244else
4943 { echo "$as_me:$LINENO: result: no" >&5 5245 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4944echo "${ECHO_T}no" >&6; } 5246$as_echo "no" >&6; }
4945fi 5247fi
4946 5248
4947 5249
4948# Extract the first word of "pkgmk", so it can be a program name with args. 5250# Extract the first word of "pkgmk", so it can be a program name with args.
4949set dummy pkgmk; ac_word=$2 5251set dummy pkgmk; ac_word=$2
4950{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5252{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4951echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5253$as_echo_n "checking for $ac_word... " >&6; }
4952if test "${ac_cv_prog_MAKE_PACKAGE_SUPPORTED+set}" = set; then 5254if ${ac_cv_prog_MAKE_PACKAGE_SUPPORTED+:} false; then :
4953 echo $ECHO_N "(cached) $ECHO_C" >&6 5255 $as_echo_n "(cached) " >&6
4954else 5256else
4955 if test -n "$MAKE_PACKAGE_SUPPORTED"; then 5257 if test -n "$MAKE_PACKAGE_SUPPORTED"; then
4956 ac_cv_prog_MAKE_PACKAGE_SUPPORTED="$MAKE_PACKAGE_SUPPORTED" # Let the user override the test. 5258 ac_cv_prog_MAKE_PACKAGE_SUPPORTED="$MAKE_PACKAGE_SUPPORTED" # Let the user override the test.
@@ -4960,14 +5262,14 @@ for as_dir in $PATH
4960do 5262do
4961 IFS=$as_save_IFS 5263 IFS=$as_save_IFS
4962 test -z "$as_dir" && as_dir=. 5264 test -z "$as_dir" && as_dir=.
4963 for ac_exec_ext in '' $ac_executable_extensions; do 5265 for ac_exec_ext in '' $ac_executable_extensions; do
4964 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5266 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4965 ac_cv_prog_MAKE_PACKAGE_SUPPORTED="yes" 5267 ac_cv_prog_MAKE_PACKAGE_SUPPORTED="yes"
4966 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5268 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4967 break 2 5269 break 2
4968 fi 5270 fi
4969done 5271done
4970done 5272 done
4971IFS=$as_save_IFS 5273IFS=$as_save_IFS
4972 5274
4973 test -z "$ac_cv_prog_MAKE_PACKAGE_SUPPORTED" && ac_cv_prog_MAKE_PACKAGE_SUPPORTED="no" 5275 test -z "$ac_cv_prog_MAKE_PACKAGE_SUPPORTED" && ac_cv_prog_MAKE_PACKAGE_SUPPORTED="no"
@@ -4975,11 +5277,11 @@ fi
4975fi 5277fi
4976MAKE_PACKAGE_SUPPORTED=$ac_cv_prog_MAKE_PACKAGE_SUPPORTED 5278MAKE_PACKAGE_SUPPORTED=$ac_cv_prog_MAKE_PACKAGE_SUPPORTED
4977if test -n "$MAKE_PACKAGE_SUPPORTED"; then 5279if test -n "$MAKE_PACKAGE_SUPPORTED"; then
4978 { echo "$as_me:$LINENO: result: $MAKE_PACKAGE_SUPPORTED" >&5 5280 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE_PACKAGE_SUPPORTED" >&5
4979echo "${ECHO_T}$MAKE_PACKAGE_SUPPORTED" >&6; } 5281$as_echo "$MAKE_PACKAGE_SUPPORTED" >&6; }
4980else 5282else
4981 { echo "$as_me:$LINENO: result: no" >&5 5283 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4982echo "${ECHO_T}no" >&6; } 5284$as_echo "no" >&6; }
4983fi 5285fi
4984 5286
4985 5287
@@ -4993,16 +5295,16 @@ fi
4993 5295
4994# System features 5296# System features
4995# Check whether --enable-largefile was given. 5297# Check whether --enable-largefile was given.
4996if test "${enable_largefile+set}" = set; then 5298if test "${enable_largefile+set}" = set; then :
4997 enableval=$enable_largefile; 5299 enableval=$enable_largefile;
4998fi 5300fi
4999 5301
5000if test "$enable_largefile" != no; then 5302if test "$enable_largefile" != no; then
5001 5303
5002 { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 5304 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
5003echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; } 5305$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
5004if test "${ac_cv_sys_largefile_CC+set}" = set; then 5306if ${ac_cv_sys_largefile_CC+:} false; then :
5005 echo $ECHO_N "(cached) $ECHO_C" >&6 5307 $as_echo_n "(cached) " >&6
5006else 5308else
5007 ac_cv_sys_largefile_CC=no 5309 ac_cv_sys_largefile_CC=no
5008 if test "$GCC" != yes; then 5310 if test "$GCC" != yes; then
@@ -5010,11 +5312,7 @@ else
5010 while :; do 5312 while :; do
5011 # IRIX 6.2 and later do not support large files by default, 5313 # IRIX 6.2 and later do not support large files by default,
5012 # so use the C compiler's -n32 option if that helps. 5314 # so use the C compiler's -n32 option if that helps.
5013 cat >conftest.$ac_ext <<_ACEOF 5315 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5014/* confdefs.h. */
5015_ACEOF
5016cat confdefs.h >>conftest.$ac_ext
5017cat >>conftest.$ac_ext <<_ACEOF
5018/* end confdefs.h. */ 5316/* end confdefs.h. */
5019#include <sys/types.h> 5317#include <sys/types.h>
5020 /* Check that off_t can represent 2**63 - 1 correctly. 5318 /* Check that off_t can represent 2**63 - 1 correctly.
@@ -5033,58 +5331,14 @@ main ()
5033 return 0; 5331 return 0;
5034} 5332}
5035_ACEOF 5333_ACEOF
5036 rm -f conftest.$ac_objext 5334 if ac_fn_c_try_compile "$LINENO"; then :
5037if { (ac_try="$ac_compile"
5038case "(($ac_try" in
5039 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5040 *) ac_try_echo=$ac_try;;
5041esac
5042eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5043 (eval "$ac_compile") 2>conftest.er1
5044 ac_status=$?
5045 grep -v '^ *+' conftest.er1 >conftest.err
5046 rm -f conftest.er1
5047 cat conftest.err >&5
5048 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5049 (exit $ac_status); } && {
5050 test -z "$ac_c_werror_flag" ||
5051 test ! -s conftest.err
5052 } && test -s conftest.$ac_objext; then
5053 break 5335 break
5054else
5055 echo "$as_me: failed program was:" >&5
5056sed 's/^/| /' conftest.$ac_ext >&5
5057
5058
5059fi 5336fi
5060
5061rm -f core conftest.err conftest.$ac_objext 5337rm -f core conftest.err conftest.$ac_objext
5062 CC="$CC -n32" 5338 CC="$CC -n32"
5063 rm -f conftest.$ac_objext 5339 if ac_fn_c_try_compile "$LINENO"; then :
5064if { (ac_try="$ac_compile"
5065case "(($ac_try" in
5066 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5067 *) ac_try_echo=$ac_try;;
5068esac
5069eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5070 (eval "$ac_compile") 2>conftest.er1
5071 ac_status=$?
5072 grep -v '^ *+' conftest.er1 >conftest.err
5073 rm -f conftest.er1
5074 cat conftest.err >&5
5075 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5076 (exit $ac_status); } && {
5077 test -z "$ac_c_werror_flag" ||
5078 test ! -s conftest.err
5079 } && test -s conftest.$ac_objext; then
5080 ac_cv_sys_largefile_CC=' -n32'; break 5340 ac_cv_sys_largefile_CC=' -n32'; break
5081else
5082 echo "$as_me: failed program was:" >&5
5083sed 's/^/| /' conftest.$ac_ext >&5
5084
5085
5086fi 5341fi
5087
5088rm -f core conftest.err conftest.$ac_objext 5342rm -f core conftest.err conftest.$ac_objext
5089 break 5343 break
5090 done 5344 done
@@ -5092,23 +5346,19 @@ rm -f core conftest.err conftest.$ac_objext
5092 rm -f conftest.$ac_ext 5346 rm -f conftest.$ac_ext
5093 fi 5347 fi
5094fi 5348fi
5095{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 5349{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
5096echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; } 5350$as_echo "$ac_cv_sys_largefile_CC" >&6; }
5097 if test "$ac_cv_sys_largefile_CC" != no; then 5351 if test "$ac_cv_sys_largefile_CC" != no; then
5098 CC=$CC$ac_cv_sys_largefile_CC 5352 CC=$CC$ac_cv_sys_largefile_CC
5099 fi 5353 fi
5100 5354
5101 { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 5355 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
5102echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; } 5356$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
5103if test "${ac_cv_sys_file_offset_bits+set}" = set; then 5357if ${ac_cv_sys_file_offset_bits+:} false; then :
5104 echo $ECHO_N "(cached) $ECHO_C" >&6 5358 $as_echo_n "(cached) " >&6
5105else 5359else
5106 while :; do 5360 while :; do
5107 cat >conftest.$ac_ext <<_ACEOF 5361 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5108/* confdefs.h. */
5109_ACEOF
5110cat confdefs.h >>conftest.$ac_ext
5111cat >>conftest.$ac_ext <<_ACEOF
5112/* end confdefs.h. */ 5362/* end confdefs.h. */
5113#include <sys/types.h> 5363#include <sys/types.h>
5114 /* Check that off_t can represent 2**63 - 1 correctly. 5364 /* Check that off_t can represent 2**63 - 1 correctly.
@@ -5127,37 +5377,11 @@ main ()
5127 return 0; 5377 return 0;
5128} 5378}
5129_ACEOF 5379_ACEOF
5130rm -f conftest.$ac_objext 5380if ac_fn_c_try_compile "$LINENO"; then :
5131if { (ac_try="$ac_compile"
5132case "(($ac_try" in
5133 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5134 *) ac_try_echo=$ac_try;;
5135esac
5136eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5137 (eval "$ac_compile") 2>conftest.er1
5138 ac_status=$?
5139 grep -v '^ *+' conftest.er1 >conftest.err
5140 rm -f conftest.er1
5141 cat conftest.err >&5
5142 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5143 (exit $ac_status); } && {
5144 test -z "$ac_c_werror_flag" ||
5145 test ! -s conftest.err
5146 } && test -s conftest.$ac_objext; then
5147 ac_cv_sys_file_offset_bits=no; break 5381 ac_cv_sys_file_offset_bits=no; break
5148else
5149 echo "$as_me: failed program was:" >&5
5150sed 's/^/| /' conftest.$ac_ext >&5
5151
5152
5153fi 5382fi
5154
5155rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5383rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5156 cat >conftest.$ac_ext <<_ACEOF 5384 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5157/* confdefs.h. */
5158_ACEOF
5159cat confdefs.h >>conftest.$ac_ext
5160cat >>conftest.$ac_ext <<_ACEOF
5161/* end confdefs.h. */ 5385/* end confdefs.h. */
5162#define _FILE_OFFSET_BITS 64 5386#define _FILE_OFFSET_BITS 64
5163#include <sys/types.h> 5387#include <sys/types.h>
@@ -5177,38 +5401,16 @@ main ()
5177 return 0; 5401 return 0;
5178} 5402}
5179_ACEOF 5403_ACEOF
5180rm -f conftest.$ac_objext 5404if ac_fn_c_try_compile "$LINENO"; then :
5181if { (ac_try="$ac_compile"
5182case "(($ac_try" in
5183 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5184 *) ac_try_echo=$ac_try;;
5185esac
5186eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5187 (eval "$ac_compile") 2>conftest.er1
5188 ac_status=$?
5189 grep -v '^ *+' conftest.er1 >conftest.err
5190 rm -f conftest.er1
5191 cat conftest.err >&5
5192 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5193 (exit $ac_status); } && {
5194 test -z "$ac_c_werror_flag" ||
5195 test ! -s conftest.err
5196 } && test -s conftest.$ac_objext; then
5197 ac_cv_sys_file_offset_bits=64; break 5405 ac_cv_sys_file_offset_bits=64; break
5198else
5199 echo "$as_me: failed program was:" >&5
5200sed 's/^/| /' conftest.$ac_ext >&5
5201
5202
5203fi 5406fi
5204
5205rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5407rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5206 ac_cv_sys_file_offset_bits=unknown 5408 ac_cv_sys_file_offset_bits=unknown
5207 break 5409 break
5208done 5410done
5209fi 5411fi
5210{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 5412{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
5211echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; } 5413$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
5212case $ac_cv_sys_file_offset_bits in #( 5414case $ac_cv_sys_file_offset_bits in #(
5213 no | unknown) ;; 5415 no | unknown) ;;
5214 *) 5416 *)
@@ -5217,19 +5419,15 @@ cat >>confdefs.h <<_ACEOF
5217_ACEOF 5419_ACEOF
5218;; 5420;;
5219esac 5421esac
5220rm -f conftest* 5422rm -rf conftest*
5221 if test $ac_cv_sys_file_offset_bits = unknown; then 5423 if test $ac_cv_sys_file_offset_bits = unknown; then
5222 { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 5424 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
5223echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } 5425$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
5224if test "${ac_cv_sys_large_files+set}" = set; then 5426if ${ac_cv_sys_large_files+:} false; then :
5225 echo $ECHO_N "(cached) $ECHO_C" >&6 5427 $as_echo_n "(cached) " >&6
5226else 5428else
5227 while :; do 5429 while :; do
5228 cat >conftest.$ac_ext <<_ACEOF 5430 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5229/* confdefs.h. */
5230_ACEOF
5231cat confdefs.h >>conftest.$ac_ext
5232cat >>conftest.$ac_ext <<_ACEOF
5233/* end confdefs.h. */ 5431/* end confdefs.h. */
5234#include <sys/types.h> 5432#include <sys/types.h>
5235 /* Check that off_t can represent 2**63 - 1 correctly. 5433 /* Check that off_t can represent 2**63 - 1 correctly.
@@ -5248,37 +5446,11 @@ main ()
5248 return 0; 5446 return 0;
5249} 5447}
5250_ACEOF 5448_ACEOF
5251rm -f conftest.$ac_objext 5449if ac_fn_c_try_compile "$LINENO"; then :
5252if { (ac_try="$ac_compile"
5253case "(($ac_try" in
5254 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5255 *) ac_try_echo=$ac_try;;
5256esac
5257eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5258 (eval "$ac_compile") 2>conftest.er1
5259 ac_status=$?
5260 grep -v '^ *+' conftest.er1 >conftest.err
5261 rm -f conftest.er1
5262 cat conftest.err >&5
5263 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5264 (exit $ac_status); } && {
5265 test -z "$ac_c_werror_flag" ||
5266 test ! -s conftest.err
5267 } && test -s conftest.$ac_objext; then
5268 ac_cv_sys_large_files=no; break 5450 ac_cv_sys_large_files=no; break
5269else
5270 echo "$as_me: failed program was:" >&5
5271sed 's/^/| /' conftest.$ac_ext >&5
5272
5273
5274fi 5451fi
5275
5276rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5452rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5277 cat >conftest.$ac_ext <<_ACEOF 5453 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5278/* confdefs.h. */
5279_ACEOF
5280cat confdefs.h >>conftest.$ac_ext
5281cat >>conftest.$ac_ext <<_ACEOF
5282/* end confdefs.h. */ 5454/* end confdefs.h. */
5283#define _LARGE_FILES 1 5455#define _LARGE_FILES 1
5284#include <sys/types.h> 5456#include <sys/types.h>
@@ -5298,38 +5470,16 @@ main ()
5298 return 0; 5470 return 0;
5299} 5471}
5300_ACEOF 5472_ACEOF
5301rm -f conftest.$ac_objext 5473if ac_fn_c_try_compile "$LINENO"; then :
5302if { (ac_try="$ac_compile"
5303case "(($ac_try" in
5304 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5305 *) ac_try_echo=$ac_try;;
5306esac
5307eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5308 (eval "$ac_compile") 2>conftest.er1
5309 ac_status=$?
5310 grep -v '^ *+' conftest.er1 >conftest.err
5311 rm -f conftest.er1
5312 cat conftest.err >&5
5313 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5314 (exit $ac_status); } && {
5315 test -z "$ac_c_werror_flag" ||
5316 test ! -s conftest.err
5317 } && test -s conftest.$ac_objext; then
5318 ac_cv_sys_large_files=1; break 5474 ac_cv_sys_large_files=1; break
5319else
5320 echo "$as_me: failed program was:" >&5
5321sed 's/^/| /' conftest.$ac_ext >&5
5322
5323
5324fi 5475fi
5325
5326rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5476rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5327 ac_cv_sys_large_files=unknown 5477 ac_cv_sys_large_files=unknown
5328 break 5478 break
5329done 5479done
5330fi 5480fi
5331{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 5481{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
5332echo "${ECHO_T}$ac_cv_sys_large_files" >&6; } 5482$as_echo "$ac_cv_sys_large_files" >&6; }
5333case $ac_cv_sys_large_files in #( 5483case $ac_cv_sys_large_files in #(
5334 no | unknown) ;; 5484 no | unknown) ;;
5335 *) 5485 *)
@@ -5338,80 +5488,23 @@ cat >>confdefs.h <<_ACEOF
5338_ACEOF 5488_ACEOF
5339;; 5489;;
5340esac 5490esac
5341rm -f conftest* 5491rm -rf conftest*
5342 fi 5492 fi
5343fi
5344 5493
5345 5494
5346if test -z "$AR" ; then
5347 { { echo "$as_me:$LINENO: error: *** 'ar' missing, please install or fix your \$PATH ***" >&5
5348echo "$as_me: error: *** 'ar' missing, please install or fix your \$PATH ***" >&2;}
5349 { (exit 1); exit 1; }; }
5350fi 5495fi
5351 5496
5352# Use LOGIN_PROGRAM from environment if possible
5353if test ! -z "$LOGIN_PROGRAM" ; then
5354
5355cat >>confdefs.h <<_ACEOF
5356#define LOGIN_PROGRAM_FALLBACK "$LOGIN_PROGRAM"
5357_ACEOF
5358 5497
5359else 5498if test -z "$AR" ; then
5360 # Search for login 5499 as_fn_error $? "*** 'ar' missing, please install or fix your \$PATH ***" "$LINENO" 5
5361 # Extract the first word of "login", so it can be a program name with args.
5362set dummy login; ac_word=$2
5363{ echo "$as_me:$LINENO: checking for $ac_word" >&5
5364echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
5365if test "${ac_cv_path_LOGIN_PROGRAM_FALLBACK+set}" = set; then
5366 echo $ECHO_N "(cached) $ECHO_C" >&6
5367else
5368 case $LOGIN_PROGRAM_FALLBACK in
5369 [\\/]* | ?:[\\/]*)
5370 ac_cv_path_LOGIN_PROGRAM_FALLBACK="$LOGIN_PROGRAM_FALLBACK" # Let the user override the test with a path.
5371 ;;
5372 *)
5373 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5374for as_dir in $PATH
5375do
5376 IFS=$as_save_IFS
5377 test -z "$as_dir" && as_dir=.
5378 for ac_exec_ext in '' $ac_executable_extensions; do
5379 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5380 ac_cv_path_LOGIN_PROGRAM_FALLBACK="$as_dir/$ac_word$ac_exec_ext"
5381 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5382 break 2
5383 fi
5384done
5385done
5386IFS=$as_save_IFS
5387
5388 ;;
5389esac
5390fi
5391LOGIN_PROGRAM_FALLBACK=$ac_cv_path_LOGIN_PROGRAM_FALLBACK
5392if test -n "$LOGIN_PROGRAM_FALLBACK"; then
5393 { echo "$as_me:$LINENO: result: $LOGIN_PROGRAM_FALLBACK" >&5
5394echo "${ECHO_T}$LOGIN_PROGRAM_FALLBACK" >&6; }
5395else
5396 { echo "$as_me:$LINENO: result: no" >&5
5397echo "${ECHO_T}no" >&6; }
5398fi
5399
5400
5401 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
5402 cat >>confdefs.h <<_ACEOF
5403#define LOGIN_PROGRAM_FALLBACK "$LOGIN_PROGRAM_FALLBACK"
5404_ACEOF
5405
5406 fi
5407fi 5500fi
5408 5501
5409# Extract the first word of "passwd", so it can be a program name with args. 5502# Extract the first word of "passwd", so it can be a program name with args.
5410set dummy passwd; ac_word=$2 5503set dummy passwd; ac_word=$2
5411{ echo "$as_me:$LINENO: checking for $ac_word" >&5 5504{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5412echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 5505$as_echo_n "checking for $ac_word... " >&6; }
5413if test "${ac_cv_path_PATH_PASSWD_PROG+set}" = set; then 5506if ${ac_cv_path_PATH_PASSWD_PROG+:} false; then :
5414 echo $ECHO_N "(cached) $ECHO_C" >&6 5507 $as_echo_n "(cached) " >&6
5415else 5508else
5416 case $PATH_PASSWD_PROG in 5509 case $PATH_PASSWD_PROG in
5417 [\\/]* | ?:[\\/]*) 5510 [\\/]* | ?:[\\/]*)
@@ -5423,14 +5516,14 @@ for as_dir in $PATH
5423do 5516do
5424 IFS=$as_save_IFS 5517 IFS=$as_save_IFS
5425 test -z "$as_dir" && as_dir=. 5518 test -z "$as_dir" && as_dir=.
5426 for ac_exec_ext in '' $ac_executable_extensions; do 5519 for ac_exec_ext in '' $ac_executable_extensions; do
5427 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 5520 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5428 ac_cv_path_PATH_PASSWD_PROG="$as_dir/$ac_word$ac_exec_ext" 5521 ac_cv_path_PATH_PASSWD_PROG="$as_dir/$ac_word$ac_exec_ext"
5429 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 5522 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5430 break 2 5523 break 2
5431 fi 5524 fi
5432done 5525done
5433done 5526 done
5434IFS=$as_save_IFS 5527IFS=$as_save_IFS
5435 5528
5436 ;; 5529 ;;
@@ -5438,11 +5531,11 @@ esac
5438fi 5531fi
5439PATH_PASSWD_PROG=$ac_cv_path_PATH_PASSWD_PROG 5532PATH_PASSWD_PROG=$ac_cv_path_PATH_PASSWD_PROG
5440if test -n "$PATH_PASSWD_PROG"; then 5533if test -n "$PATH_PASSWD_PROG"; then
5441 { echo "$as_me:$LINENO: result: $PATH_PASSWD_PROG" >&5 5534 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_PASSWD_PROG" >&5
5442echo "${ECHO_T}$PATH_PASSWD_PROG" >&6; } 5535$as_echo "$PATH_PASSWD_PROG" >&6; }
5443else 5536else
5444 { echo "$as_me:$LINENO: result: no" >&5 5537 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5445echo "${ECHO_T}no" >&6; } 5538$as_echo "no" >&6; }
5446fi 5539fi
5447 5540
5448 5541
@@ -5459,18 +5552,14 @@ if test -z "$LD" ; then
5459fi 5552fi
5460 5553
5461 5554
5462{ echo "$as_me:$LINENO: checking for inline" >&5 5555{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
5463echo $ECHO_N "checking for inline... $ECHO_C" >&6; } 5556$as_echo_n "checking for inline... " >&6; }
5464if test "${ac_cv_c_inline+set}" = set; then 5557if ${ac_cv_c_inline+:} false; then :
5465 echo $ECHO_N "(cached) $ECHO_C" >&6 5558 $as_echo_n "(cached) " >&6
5466else 5559else
5467 ac_cv_c_inline=no 5560 ac_cv_c_inline=no
5468for ac_kw in inline __inline__ __inline; do 5561for ac_kw in inline __inline__ __inline; do
5469 cat >conftest.$ac_ext <<_ACEOF 5562 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5470/* confdefs.h. */
5471_ACEOF
5472cat confdefs.h >>conftest.$ac_ext
5473cat >>conftest.$ac_ext <<_ACEOF
5474/* end confdefs.h. */ 5563/* end confdefs.h. */
5475#ifndef __cplusplus 5564#ifndef __cplusplus
5476typedef int foo_t; 5565typedef int foo_t;
@@ -5479,39 +5568,16 @@ $ac_kw foo_t foo () {return 0; }
5479#endif 5568#endif
5480 5569
5481_ACEOF 5570_ACEOF
5482rm -f conftest.$ac_objext 5571if ac_fn_c_try_compile "$LINENO"; then :
5483if { (ac_try="$ac_compile"
5484case "(($ac_try" in
5485 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5486 *) ac_try_echo=$ac_try;;
5487esac
5488eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5489 (eval "$ac_compile") 2>conftest.er1
5490 ac_status=$?
5491 grep -v '^ *+' conftest.er1 >conftest.err
5492 rm -f conftest.er1
5493 cat conftest.err >&5
5494 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5495 (exit $ac_status); } && {
5496 test -z "$ac_c_werror_flag" ||
5497 test ! -s conftest.err
5498 } && test -s conftest.$ac_objext; then
5499 ac_cv_c_inline=$ac_kw 5572 ac_cv_c_inline=$ac_kw
5500else
5501 echo "$as_me: failed program was:" >&5
5502sed 's/^/| /' conftest.$ac_ext >&5
5503
5504
5505fi 5573fi
5506
5507rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5574rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5508 test "$ac_cv_c_inline" != no && break 5575 test "$ac_cv_c_inline" != no && break
5509done 5576done
5510 5577
5511fi 5578fi
5512{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 5579{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
5513echo "${ECHO_T}$ac_cv_c_inline" >&6; } 5580$as_echo "$ac_cv_c_inline" >&6; }
5514
5515 5581
5516case $ac_cv_c_inline in 5582case $ac_cv_c_inline in
5517 inline | yes) ;; 5583 inline | yes) ;;
@@ -5529,254 +5595,49 @@ _ACEOF
5529esac 5595esac
5530 5596
5531 5597
5532{ echo "$as_me:$LINENO: checking whether LLONG_MAX is declared" >&5 5598ac_fn_c_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
5533echo $ECHO_N "checking whether LLONG_MAX is declared... $ECHO_C" >&6; } 5599"
5534if test "${ac_cv_have_decl_LLONG_MAX+set}" = set; then 5600if test "x$ac_cv_have_decl_LLONG_MAX" = xyes; then :
5535 echo $ECHO_N "(cached) $ECHO_C" >&6
5536else
5537 cat >conftest.$ac_ext <<_ACEOF
5538/* confdefs.h. */
5539_ACEOF
5540cat confdefs.h >>conftest.$ac_ext
5541cat >>conftest.$ac_ext <<_ACEOF
5542/* end confdefs.h. */
5543#include <limits.h>
5544
5545int
5546main ()
5547{
5548#ifndef LLONG_MAX
5549 (void) LLONG_MAX;
5550#endif
5551
5552 ;
5553 return 0;
5554}
5555_ACEOF
5556rm -f conftest.$ac_objext
5557if { (ac_try="$ac_compile"
5558case "(($ac_try" in
5559 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5560 *) ac_try_echo=$ac_try;;
5561esac
5562eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5563 (eval "$ac_compile") 2>conftest.er1
5564 ac_status=$?
5565 grep -v '^ *+' conftest.er1 >conftest.err
5566 rm -f conftest.er1
5567 cat conftest.err >&5
5568 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5569 (exit $ac_status); } && {
5570 test -z "$ac_c_werror_flag" ||
5571 test ! -s conftest.err
5572 } && test -s conftest.$ac_objext; then
5573 ac_cv_have_decl_LLONG_MAX=yes
5574else
5575 echo "$as_me: failed program was:" >&5
5576sed 's/^/| /' conftest.$ac_ext >&5
5577
5578 ac_cv_have_decl_LLONG_MAX=no
5579fi
5580
5581rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5582fi
5583{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_LLONG_MAX" >&5
5584echo "${ECHO_T}$ac_cv_have_decl_LLONG_MAX" >&6; }
5585if test $ac_cv_have_decl_LLONG_MAX = yes; then
5586 have_llong_max=1 5601 have_llong_max=1
5587fi 5602fi
5588 5603
5589{ echo "$as_me:$LINENO: checking whether SYSTR_POLICY_KILL is declared" >&5 5604ac_fn_c_check_decl "$LINENO" "SYSTR_POLICY_KILL" "ac_cv_have_decl_SYSTR_POLICY_KILL" "
5590echo $ECHO_N "checking whether SYSTR_POLICY_KILL is declared... $ECHO_C" >&6; }
5591if test "${ac_cv_have_decl_SYSTR_POLICY_KILL+set}" = set; then
5592 echo $ECHO_N "(cached) $ECHO_C" >&6
5593else
5594 cat >conftest.$ac_ext <<_ACEOF
5595/* confdefs.h. */
5596_ACEOF
5597cat confdefs.h >>conftest.$ac_ext
5598cat >>conftest.$ac_ext <<_ACEOF
5599/* end confdefs.h. */
5600
5601 #include <sys/types.h> 5605 #include <sys/types.h>
5602 #include <sys/param.h> 5606 #include <sys/param.h>
5603 #include <dev/systrace.h> 5607 #include <dev/systrace.h>
5604 5608
5605 5609"
5606int 5610if test "x$ac_cv_have_decl_SYSTR_POLICY_KILL" = xyes; then :
5607main ()
5608{
5609#ifndef SYSTR_POLICY_KILL
5610 (void) SYSTR_POLICY_KILL;
5611#endif
5612
5613 ;
5614 return 0;
5615}
5616_ACEOF
5617rm -f conftest.$ac_objext
5618if { (ac_try="$ac_compile"
5619case "(($ac_try" in
5620 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5621 *) ac_try_echo=$ac_try;;
5622esac
5623eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5624 (eval "$ac_compile") 2>conftest.er1
5625 ac_status=$?
5626 grep -v '^ *+' conftest.er1 >conftest.err
5627 rm -f conftest.er1
5628 cat conftest.err >&5
5629 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5630 (exit $ac_status); } && {
5631 test -z "$ac_c_werror_flag" ||
5632 test ! -s conftest.err
5633 } && test -s conftest.$ac_objext; then
5634 ac_cv_have_decl_SYSTR_POLICY_KILL=yes
5635else
5636 echo "$as_me: failed program was:" >&5
5637sed 's/^/| /' conftest.$ac_ext >&5
5638
5639 ac_cv_have_decl_SYSTR_POLICY_KILL=no
5640fi
5641
5642rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5643fi
5644{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_SYSTR_POLICY_KILL" >&5
5645echo "${ECHO_T}$ac_cv_have_decl_SYSTR_POLICY_KILL" >&6; }
5646if test $ac_cv_have_decl_SYSTR_POLICY_KILL = yes; then
5647 have_systr_policy_kill=1 5611 have_systr_policy_kill=1
5648fi 5612fi
5649 5613
5650{ echo "$as_me:$LINENO: checking whether RLIMIT_NPROC is declared" >&5 5614ac_fn_c_check_decl "$LINENO" "RLIMIT_NPROC" "ac_cv_have_decl_RLIMIT_NPROC" "
5651echo $ECHO_N "checking whether RLIMIT_NPROC is declared... $ECHO_C" >&6; }
5652if test "${ac_cv_have_decl_RLIMIT_NPROC+set}" = set; then
5653 echo $ECHO_N "(cached) $ECHO_C" >&6
5654else
5655 cat >conftest.$ac_ext <<_ACEOF
5656/* confdefs.h. */
5657_ACEOF
5658cat confdefs.h >>conftest.$ac_ext
5659cat >>conftest.$ac_ext <<_ACEOF
5660/* end confdefs.h. */
5661
5662 #include <sys/types.h> 5615 #include <sys/types.h>
5663 #include <sys/resource.h> 5616 #include <sys/resource.h>
5664 5617
5618"
5619if test "x$ac_cv_have_decl_RLIMIT_NPROC" = xyes; then :
5665 5620
5666int 5621$as_echo "#define HAVE_RLIMIT_NPROC /**/" >>confdefs.h
5667main ()
5668{
5669#ifndef RLIMIT_NPROC
5670 (void) RLIMIT_NPROC;
5671#endif
5672
5673 ;
5674 return 0;
5675}
5676_ACEOF
5677rm -f conftest.$ac_objext
5678if { (ac_try="$ac_compile"
5679case "(($ac_try" in
5680 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5681 *) ac_try_echo=$ac_try;;
5682esac
5683eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5684 (eval "$ac_compile") 2>conftest.er1
5685 ac_status=$?
5686 grep -v '^ *+' conftest.er1 >conftest.err
5687 rm -f conftest.er1
5688 cat conftest.err >&5
5689 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5690 (exit $ac_status); } && {
5691 test -z "$ac_c_werror_flag" ||
5692 test ! -s conftest.err
5693 } && test -s conftest.$ac_objext; then
5694 ac_cv_have_decl_RLIMIT_NPROC=yes
5695else
5696 echo "$as_me: failed program was:" >&5
5697sed 's/^/| /' conftest.$ac_ext >&5
5698
5699 ac_cv_have_decl_RLIMIT_NPROC=no
5700fi
5701
5702rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5703fi
5704{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_RLIMIT_NPROC" >&5
5705echo "${ECHO_T}$ac_cv_have_decl_RLIMIT_NPROC" >&6; }
5706if test $ac_cv_have_decl_RLIMIT_NPROC = yes; then
5707
5708cat >>confdefs.h <<\_ACEOF
5709#define HAVE_RLIMIT_NPROC
5710_ACEOF
5711 5622
5712fi 5623fi
5713 5624
5714{ echo "$as_me:$LINENO: checking whether PR_SET_NO_NEW_PRIVS is declared" >&5 5625ac_fn_c_check_decl "$LINENO" "PR_SET_NO_NEW_PRIVS" "ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" "
5715echo $ECHO_N "checking whether PR_SET_NO_NEW_PRIVS is declared... $ECHO_C" >&6; }
5716if test "${ac_cv_have_decl_PR_SET_NO_NEW_PRIVS+set}" = set; then
5717 echo $ECHO_N "(cached) $ECHO_C" >&6
5718else
5719 cat >conftest.$ac_ext <<_ACEOF
5720/* confdefs.h. */
5721_ACEOF
5722cat confdefs.h >>conftest.$ac_ext
5723cat >>conftest.$ac_ext <<_ACEOF
5724/* end confdefs.h. */
5725
5726 #include <sys/types.h> 5626 #include <sys/types.h>
5727 #include <linux/prctl.h> 5627 #include <linux/prctl.h>
5728 5628
5729 5629"
5730int 5630if test "x$ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" = xyes; then :
5731main ()
5732{
5733#ifndef PR_SET_NO_NEW_PRIVS
5734 (void) PR_SET_NO_NEW_PRIVS;
5735#endif
5736
5737 ;
5738 return 0;
5739}
5740_ACEOF
5741rm -f conftest.$ac_objext
5742if { (ac_try="$ac_compile"
5743case "(($ac_try" in
5744 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5745 *) ac_try_echo=$ac_try;;
5746esac
5747eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5748 (eval "$ac_compile") 2>conftest.er1
5749 ac_status=$?
5750 grep -v '^ *+' conftest.er1 >conftest.err
5751 rm -f conftest.er1
5752 cat conftest.err >&5
5753 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5754 (exit $ac_status); } && {
5755 test -z "$ac_c_werror_flag" ||
5756 test ! -s conftest.err
5757 } && test -s conftest.$ac_objext; then
5758 ac_cv_have_decl_PR_SET_NO_NEW_PRIVS=yes
5759else
5760 echo "$as_me: failed program was:" >&5
5761sed 's/^/| /' conftest.$ac_ext >&5
5762
5763 ac_cv_have_decl_PR_SET_NO_NEW_PRIVS=no
5764fi
5765
5766rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5767fi
5768{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" >&5
5769echo "${ECHO_T}$ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" >&6; }
5770if test $ac_cv_have_decl_PR_SET_NO_NEW_PRIVS = yes; then
5771 have_linux_no_new_privs=1 5631 have_linux_no_new_privs=1
5772fi 5632fi
5773 5633
5774 5634
5775openssl=yes 5635openssl=yes
5776ssh1=no 5636ssh1=no
5637COMMENT_OUT_RSA1="#no ssh1#"
5777 5638
5778# Check whether --with-openssl was given. 5639# Check whether --with-openssl was given.
5779if test "${with_openssl+set}" = set; then 5640if test "${with_openssl+set}" = set; then :
5780 withval=$with_openssl; if test "x$withval" = "xno" ; then 5641 withval=$with_openssl; if test "x$withval" = "xno" ; then
5781 openssl=no 5642 openssl=no
5782 ssh1=no 5643 ssh1=no
@@ -5785,63 +5646,61 @@ if test "${with_openssl+set}" = set; then
5785 5646
5786fi 5647fi
5787 5648
5788{ echo "$as_me:$LINENO: checking whether OpenSSL will be used for cryptography" >&5 5649{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL will be used for cryptography" >&5
5789echo $ECHO_N "checking whether OpenSSL will be used for cryptography... $ECHO_C" >&6; } 5650$as_echo_n "checking whether OpenSSL will be used for cryptography... " >&6; }
5790if test "x$openssl" = "xyes" ; then 5651if test "x$openssl" = "xyes" ; then
5791 { echo "$as_me:$LINENO: result: yes" >&5 5652 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5792echo "${ECHO_T}yes" >&6; } 5653$as_echo "yes" >&6; }
5793 5654
5794cat >>confdefs.h <<_ACEOF 5655cat >>confdefs.h <<_ACEOF
5795#define WITH_OPENSSL 1 5656#define WITH_OPENSSL 1
5796_ACEOF 5657_ACEOF
5797 5658
5798else 5659else
5799 { echo "$as_me:$LINENO: result: no" >&5 5660 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5800echo "${ECHO_T}no" >&6; } 5661$as_echo "no" >&6; }
5801fi 5662fi
5802 5663
5803 5664
5804# Check whether --with-ssh1 was given. 5665# Check whether --with-ssh1 was given.
5805if test "${with_ssh1+set}" = set; then 5666if test "${with_ssh1+set}" = set; then :
5806 withval=$with_ssh1; 5667 withval=$with_ssh1;
5807 if test "x$withval" = "xyes" ; then 5668 if test "x$withval" = "xyes" ; then
5808 if test "x$openssl" = "xno" ; then 5669 if test "x$openssl" = "xno" ; then
5809 { { echo "$as_me:$LINENO: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&5 5670 as_fn_error $? "Cannot enable SSH protocol 1 with OpenSSL disabled" "$LINENO" 5
5810echo "$as_me: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&2;}
5811 { (exit 1); exit 1; }; }
5812 fi 5671 fi
5813 ssh1=yes 5672 ssh1=yes
5673 COMMENT_OUT_RSA1=""
5814 elif test "x$withval" = "xno" ; then 5674 elif test "x$withval" = "xno" ; then
5815 ssh1=no 5675 ssh1=no
5816 else 5676 else
5817 { { echo "$as_me:$LINENO: error: unknown --with-ssh1 argument" >&5 5677 as_fn_error $? "unknown --with-ssh1 argument" "$LINENO" 5
5818echo "$as_me: error: unknown --with-ssh1 argument" >&2;}
5819 { (exit 1); exit 1; }; }
5820 fi 5678 fi
5821 5679
5822 5680
5823fi 5681fi
5824 5682
5825{ echo "$as_me:$LINENO: checking whether SSH protocol 1 support is enabled" >&5 5683{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether SSH protocol 1 support is enabled" >&5
5826echo $ECHO_N "checking whether SSH protocol 1 support is enabled... $ECHO_C" >&6; } 5684$as_echo_n "checking whether SSH protocol 1 support is enabled... " >&6; }
5827if test "x$ssh1" = "xyes" ; then 5685if test "x$ssh1" = "xyes" ; then
5828 { echo "$as_me:$LINENO: result: yes" >&5 5686 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5829echo "${ECHO_T}yes" >&6; } 5687$as_echo "yes" >&6; }
5830 5688
5831cat >>confdefs.h <<_ACEOF 5689cat >>confdefs.h <<_ACEOF
5832#define WITH_SSH1 1 5690#define WITH_SSH1 1
5833_ACEOF 5691_ACEOF
5834 5692
5693
5835else 5694else
5836 { echo "$as_me:$LINENO: result: no" >&5 5695 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5837echo "${ECHO_T}no" >&6; } 5696$as_echo "no" >&6; }
5838fi 5697fi
5839 5698
5840use_stack_protector=1 5699use_stack_protector=1
5841use_toolchain_hardening=1 5700use_toolchain_hardening=1
5842 5701
5843# Check whether --with-stackprotect was given. 5702# Check whether --with-stackprotect was given.
5844if test "${with_stackprotect+set}" = set; then 5703if test "${with_stackprotect+set}" = set; then :
5845 withval=$with_stackprotect; 5704 withval=$with_stackprotect;
5846 if test "x$withval" = "xno"; then 5705 if test "x$withval" = "xno"; then
5847 use_stack_protector=0 5706 use_stack_protector=0
@@ -5850,7 +5709,7 @@ fi
5850 5709
5851 5710
5852# Check whether --with-hardening was given. 5711# Check whether --with-hardening was given.
5853if test "${with_hardening+set}" = set; then 5712if test "${with_hardening+set}" = set; then :
5854 withval=$with_hardening; 5713 withval=$with_hardening;
5855 if test "x$withval" = "xno"; then 5714 if test "x$withval" = "xno"; then
5856 use_toolchain_hardening=0 5715 use_toolchain_hardening=0
@@ -5860,64 +5719,36 @@ fi
5860 5719
5861# We use -Werror for the tests only so that we catch warnings like "this is 5720# We use -Werror for the tests only so that we catch warnings like "this is
5862# on by default" for things like -fPIE. 5721# on by default" for things like -fPIE.
5863{ echo "$as_me:$LINENO: checking if $CC supports -Werror" >&5 5722{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5
5864echo $ECHO_N "checking if $CC supports -Werror... $ECHO_C" >&6; } 5723$as_echo_n "checking if $CC supports -Werror... " >&6; }
5865saved_CFLAGS="$CFLAGS" 5724saved_CFLAGS="$CFLAGS"
5866CFLAGS="$CFLAGS -Werror" 5725CFLAGS="$CFLAGS -Werror"
5867cat >conftest.$ac_ext <<_ACEOF 5726cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5868/* confdefs.h. */
5869_ACEOF
5870cat confdefs.h >>conftest.$ac_ext
5871cat >>conftest.$ac_ext <<_ACEOF
5872/* end confdefs.h. */ 5727/* end confdefs.h. */
5873int main(void) { return 0; } 5728int main(void) { return 0; }
5874_ACEOF 5729_ACEOF
5875rm -f conftest.$ac_objext 5730if ac_fn_c_try_compile "$LINENO"; then :
5876if { (ac_try="$ac_compile" 5731 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5877case "(($ac_try" in 5732$as_echo "yes" >&6; }
5878 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5879 *) ac_try_echo=$ac_try;;
5880esac
5881eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5882 (eval "$ac_compile") 2>conftest.er1
5883 ac_status=$?
5884 grep -v '^ *+' conftest.er1 >conftest.err
5885 rm -f conftest.er1
5886 cat conftest.err >&5
5887 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5888 (exit $ac_status); } && {
5889 test -z "$ac_c_werror_flag" ||
5890 test ! -s conftest.err
5891 } && test -s conftest.$ac_objext; then
5892 { echo "$as_me:$LINENO: result: yes" >&5
5893echo "${ECHO_T}yes" >&6; }
5894 WERROR="-Werror" 5733 WERROR="-Werror"
5895else 5734else
5896 echo "$as_me: failed program was:" >&5 5735 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5897sed 's/^/| /' conftest.$ac_ext >&5 5736$as_echo "no" >&6; }
5898
5899 { echo "$as_me:$LINENO: result: no" >&5
5900echo "${ECHO_T}no" >&6; }
5901 WERROR="" 5737 WERROR=""
5902 5738
5903fi 5739fi
5904
5905rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5740rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5906CFLAGS="$saved_CFLAGS" 5741CFLAGS="$saved_CFLAGS"
5907 5742
5908if test "$GCC" = "yes" || test "$GCC" = "egcs"; then 5743if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
5909 { 5744 {
5910 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Qunused-arguments" >&5 5745 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Qunused-arguments" >&5
5911echo $ECHO_N "checking if $CC supports compile flag -Qunused-arguments... $ECHO_C" >&6; } 5746$as_echo_n "checking if $CC supports compile flag -Qunused-arguments... " >&6; }
5912 saved_CFLAGS="$CFLAGS" 5747 saved_CFLAGS="$CFLAGS"
5913 CFLAGS="$CFLAGS $WERROR -Qunused-arguments" 5748 CFLAGS="$CFLAGS $WERROR -Qunused-arguments"
5914 _define_flag="" 5749 _define_flag=""
5915 test "x$_define_flag" = "x" && _define_flag="-Qunused-arguments" 5750 test "x$_define_flag" = "x" && _define_flag="-Qunused-arguments"
5916 cat >conftest.$ac_ext <<_ACEOF 5751 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5917/* confdefs.h. */
5918_ACEOF
5919cat confdefs.h >>conftest.$ac_ext
5920cat >>conftest.$ac_ext <<_ACEOF
5921/* end confdefs.h. */ 5752/* end confdefs.h. */
5922 5753
5923#include <stdlib.h> 5754#include <stdlib.h>
@@ -5933,58 +5764,34 @@ int main(int argc, char **argv) {
5933} 5764}
5934 5765
5935_ACEOF 5766_ACEOF
5936rm -f conftest.$ac_objext 5767if ac_fn_c_try_compile "$LINENO"; then :
5937if { (ac_try="$ac_compile"
5938case "(($ac_try" in
5939 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5940 *) ac_try_echo=$ac_try;;
5941esac
5942eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5943 (eval "$ac_compile") 2>conftest.er1
5944 ac_status=$?
5945 grep -v '^ *+' conftest.er1 >conftest.err
5946 rm -f conftest.er1
5947 cat conftest.err >&5
5948 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5949 (exit $ac_status); } && {
5950 test -z "$ac_c_werror_flag" ||
5951 test ! -s conftest.err
5952 } && test -s conftest.$ac_objext; then
5953 5768
5954if `grep -i "unrecognized option" conftest.err >/dev/null` 5769if `grep -i "unrecognized option" conftest.err >/dev/null`
5955then 5770then
5956 { echo "$as_me:$LINENO: result: no" >&5 5771 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5957echo "${ECHO_T}no" >&6; } 5772$as_echo "no" >&6; }
5958 CFLAGS="$saved_CFLAGS" 5773 CFLAGS="$saved_CFLAGS"
5959else 5774else
5960 { echo "$as_me:$LINENO: result: yes" >&5 5775 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
5961echo "${ECHO_T}yes" >&6; } 5776$as_echo "yes" >&6; }
5962 CFLAGS="$saved_CFLAGS $_define_flag" 5777 CFLAGS="$saved_CFLAGS $_define_flag"
5963fi 5778fi
5964else 5779else
5965 echo "$as_me: failed program was:" >&5 5780 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5966sed 's/^/| /' conftest.$ac_ext >&5 5781$as_echo "no" >&6; }
5967
5968 { echo "$as_me:$LINENO: result: no" >&5
5969echo "${ECHO_T}no" >&6; }
5970 CFLAGS="$saved_CFLAGS" 5782 CFLAGS="$saved_CFLAGS"
5971 5783
5972fi 5784fi
5973
5974rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5785rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5975} 5786}
5976 { 5787 {
5977 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wunknown-warning-option" >&5 5788 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunknown-warning-option" >&5
5978echo $ECHO_N "checking if $CC supports compile flag -Wunknown-warning-option... $ECHO_C" >&6; } 5789$as_echo_n "checking if $CC supports compile flag -Wunknown-warning-option... " >&6; }
5979 saved_CFLAGS="$CFLAGS" 5790 saved_CFLAGS="$CFLAGS"
5980 CFLAGS="$CFLAGS $WERROR -Wunknown-warning-option" 5791 CFLAGS="$CFLAGS $WERROR -Wunknown-warning-option"
5981 _define_flag="" 5792 _define_flag=""
5982 test "x$_define_flag" = "x" && _define_flag="-Wunknown-warning-option" 5793 test "x$_define_flag" = "x" && _define_flag="-Wunknown-warning-option"
5983 cat >conftest.$ac_ext <<_ACEOF 5794 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5984/* confdefs.h. */
5985_ACEOF
5986cat confdefs.h >>conftest.$ac_ext
5987cat >>conftest.$ac_ext <<_ACEOF
5988/* end confdefs.h. */ 5795/* end confdefs.h. */
5989 5796
5990#include <stdlib.h> 5797#include <stdlib.h>
@@ -6000,58 +5807,34 @@ int main(int argc, char **argv) {
6000} 5807}
6001 5808
6002_ACEOF 5809_ACEOF
6003rm -f conftest.$ac_objext 5810if ac_fn_c_try_compile "$LINENO"; then :
6004if { (ac_try="$ac_compile"
6005case "(($ac_try" in
6006 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6007 *) ac_try_echo=$ac_try;;
6008esac
6009eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6010 (eval "$ac_compile") 2>conftest.er1
6011 ac_status=$?
6012 grep -v '^ *+' conftest.er1 >conftest.err
6013 rm -f conftest.er1
6014 cat conftest.err >&5
6015 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6016 (exit $ac_status); } && {
6017 test -z "$ac_c_werror_flag" ||
6018 test ! -s conftest.err
6019 } && test -s conftest.$ac_objext; then
6020 5811
6021if `grep -i "unrecognized option" conftest.err >/dev/null` 5812if `grep -i "unrecognized option" conftest.err >/dev/null`
6022then 5813then
6023 { echo "$as_me:$LINENO: result: no" >&5 5814 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6024echo "${ECHO_T}no" >&6; } 5815$as_echo "no" >&6; }
6025 CFLAGS="$saved_CFLAGS" 5816 CFLAGS="$saved_CFLAGS"
6026else 5817else
6027 { echo "$as_me:$LINENO: result: yes" >&5 5818 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6028echo "${ECHO_T}yes" >&6; } 5819$as_echo "yes" >&6; }
6029 CFLAGS="$saved_CFLAGS $_define_flag" 5820 CFLAGS="$saved_CFLAGS $_define_flag"
6030fi 5821fi
6031else 5822else
6032 echo "$as_me: failed program was:" >&5 5823 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6033sed 's/^/| /' conftest.$ac_ext >&5 5824$as_echo "no" >&6; }
6034
6035 { echo "$as_me:$LINENO: result: no" >&5
6036echo "${ECHO_T}no" >&6; }
6037 CFLAGS="$saved_CFLAGS" 5825 CFLAGS="$saved_CFLAGS"
6038 5826
6039fi 5827fi
6040
6041rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5828rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6042} 5829}
6043 { 5830 {
6044 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wall" >&5 5831 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wall" >&5
6045echo $ECHO_N "checking if $CC supports compile flag -Wall... $ECHO_C" >&6; } 5832$as_echo_n "checking if $CC supports compile flag -Wall... " >&6; }
6046 saved_CFLAGS="$CFLAGS" 5833 saved_CFLAGS="$CFLAGS"
6047 CFLAGS="$CFLAGS $WERROR -Wall" 5834 CFLAGS="$CFLAGS $WERROR -Wall"
6048 _define_flag="" 5835 _define_flag=""
6049 test "x$_define_flag" = "x" && _define_flag="-Wall" 5836 test "x$_define_flag" = "x" && _define_flag="-Wall"
6050 cat >conftest.$ac_ext <<_ACEOF 5837 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6051/* confdefs.h. */
6052_ACEOF
6053cat confdefs.h >>conftest.$ac_ext
6054cat >>conftest.$ac_ext <<_ACEOF
6055/* end confdefs.h. */ 5838/* end confdefs.h. */
6056 5839
6057#include <stdlib.h> 5840#include <stdlib.h>
@@ -6067,58 +5850,34 @@ int main(int argc, char **argv) {
6067} 5850}
6068 5851
6069_ACEOF 5852_ACEOF
6070rm -f conftest.$ac_objext 5853if ac_fn_c_try_compile "$LINENO"; then :
6071if { (ac_try="$ac_compile"
6072case "(($ac_try" in
6073 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6074 *) ac_try_echo=$ac_try;;
6075esac
6076eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6077 (eval "$ac_compile") 2>conftest.er1
6078 ac_status=$?
6079 grep -v '^ *+' conftest.er1 >conftest.err
6080 rm -f conftest.er1
6081 cat conftest.err >&5
6082 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6083 (exit $ac_status); } && {
6084 test -z "$ac_c_werror_flag" ||
6085 test ! -s conftest.err
6086 } && test -s conftest.$ac_objext; then
6087 5854
6088if `grep -i "unrecognized option" conftest.err >/dev/null` 5855if `grep -i "unrecognized option" conftest.err >/dev/null`
6089then 5856then
6090 { echo "$as_me:$LINENO: result: no" >&5 5857 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6091echo "${ECHO_T}no" >&6; } 5858$as_echo "no" >&6; }
6092 CFLAGS="$saved_CFLAGS" 5859 CFLAGS="$saved_CFLAGS"
6093else 5860else
6094 { echo "$as_me:$LINENO: result: yes" >&5 5861 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6095echo "${ECHO_T}yes" >&6; } 5862$as_echo "yes" >&6; }
6096 CFLAGS="$saved_CFLAGS $_define_flag" 5863 CFLAGS="$saved_CFLAGS $_define_flag"
6097fi 5864fi
6098else 5865else
6099 echo "$as_me: failed program was:" >&5 5866 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6100sed 's/^/| /' conftest.$ac_ext >&5 5867$as_echo "no" >&6; }
6101
6102 { echo "$as_me:$LINENO: result: no" >&5
6103echo "${ECHO_T}no" >&6; }
6104 CFLAGS="$saved_CFLAGS" 5868 CFLAGS="$saved_CFLAGS"
6105 5869
6106fi 5870fi
6107
6108rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5871rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6109} 5872}
6110 { 5873 {
6111 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wpointer-arith" >&5 5874 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-arith" >&5
6112echo $ECHO_N "checking if $CC supports compile flag -Wpointer-arith... $ECHO_C" >&6; } 5875$as_echo_n "checking if $CC supports compile flag -Wpointer-arith... " >&6; }
6113 saved_CFLAGS="$CFLAGS" 5876 saved_CFLAGS="$CFLAGS"
6114 CFLAGS="$CFLAGS $WERROR -Wpointer-arith" 5877 CFLAGS="$CFLAGS $WERROR -Wpointer-arith"
6115 _define_flag="" 5878 _define_flag=""
6116 test "x$_define_flag" = "x" && _define_flag="-Wpointer-arith" 5879 test "x$_define_flag" = "x" && _define_flag="-Wpointer-arith"
6117 cat >conftest.$ac_ext <<_ACEOF 5880 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6118/* confdefs.h. */
6119_ACEOF
6120cat confdefs.h >>conftest.$ac_ext
6121cat >>conftest.$ac_ext <<_ACEOF
6122/* end confdefs.h. */ 5881/* end confdefs.h. */
6123 5882
6124#include <stdlib.h> 5883#include <stdlib.h>
@@ -6134,58 +5893,34 @@ int main(int argc, char **argv) {
6134} 5893}
6135 5894
6136_ACEOF 5895_ACEOF
6137rm -f conftest.$ac_objext 5896if ac_fn_c_try_compile "$LINENO"; then :
6138if { (ac_try="$ac_compile"
6139case "(($ac_try" in
6140 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6141 *) ac_try_echo=$ac_try;;
6142esac
6143eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6144 (eval "$ac_compile") 2>conftest.er1
6145 ac_status=$?
6146 grep -v '^ *+' conftest.er1 >conftest.err
6147 rm -f conftest.er1
6148 cat conftest.err >&5
6149 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6150 (exit $ac_status); } && {
6151 test -z "$ac_c_werror_flag" ||
6152 test ! -s conftest.err
6153 } && test -s conftest.$ac_objext; then
6154 5897
6155if `grep -i "unrecognized option" conftest.err >/dev/null` 5898if `grep -i "unrecognized option" conftest.err >/dev/null`
6156then 5899then
6157 { echo "$as_me:$LINENO: result: no" >&5 5900 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6158echo "${ECHO_T}no" >&6; } 5901$as_echo "no" >&6; }
6159 CFLAGS="$saved_CFLAGS" 5902 CFLAGS="$saved_CFLAGS"
6160else 5903else
6161 { echo "$as_me:$LINENO: result: yes" >&5 5904 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6162echo "${ECHO_T}yes" >&6; } 5905$as_echo "yes" >&6; }
6163 CFLAGS="$saved_CFLAGS $_define_flag" 5906 CFLAGS="$saved_CFLAGS $_define_flag"
6164fi 5907fi
6165else 5908else
6166 echo "$as_me: failed program was:" >&5 5909 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6167sed 's/^/| /' conftest.$ac_ext >&5 5910$as_echo "no" >&6; }
6168
6169 { echo "$as_me:$LINENO: result: no" >&5
6170echo "${ECHO_T}no" >&6; }
6171 CFLAGS="$saved_CFLAGS" 5911 CFLAGS="$saved_CFLAGS"
6172 5912
6173fi 5913fi
6174
6175rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5914rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6176} 5915}
6177 { 5916 {
6178 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wuninitialized" >&5 5917 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wuninitialized" >&5
6179echo $ECHO_N "checking if $CC supports compile flag -Wuninitialized... $ECHO_C" >&6; } 5918$as_echo_n "checking if $CC supports compile flag -Wuninitialized... " >&6; }
6180 saved_CFLAGS="$CFLAGS" 5919 saved_CFLAGS="$CFLAGS"
6181 CFLAGS="$CFLAGS $WERROR -Wuninitialized" 5920 CFLAGS="$CFLAGS $WERROR -Wuninitialized"
6182 _define_flag="" 5921 _define_flag=""
6183 test "x$_define_flag" = "x" && _define_flag="-Wuninitialized" 5922 test "x$_define_flag" = "x" && _define_flag="-Wuninitialized"
6184 cat >conftest.$ac_ext <<_ACEOF 5923 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6185/* confdefs.h. */
6186_ACEOF
6187cat confdefs.h >>conftest.$ac_ext
6188cat >>conftest.$ac_ext <<_ACEOF
6189/* end confdefs.h. */ 5924/* end confdefs.h. */
6190 5925
6191#include <stdlib.h> 5926#include <stdlib.h>
@@ -6201,58 +5936,34 @@ int main(int argc, char **argv) {
6201} 5936}
6202 5937
6203_ACEOF 5938_ACEOF
6204rm -f conftest.$ac_objext 5939if ac_fn_c_try_compile "$LINENO"; then :
6205if { (ac_try="$ac_compile"
6206case "(($ac_try" in
6207 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6208 *) ac_try_echo=$ac_try;;
6209esac
6210eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6211 (eval "$ac_compile") 2>conftest.er1
6212 ac_status=$?
6213 grep -v '^ *+' conftest.er1 >conftest.err
6214 rm -f conftest.er1
6215 cat conftest.err >&5
6216 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6217 (exit $ac_status); } && {
6218 test -z "$ac_c_werror_flag" ||
6219 test ! -s conftest.err
6220 } && test -s conftest.$ac_objext; then
6221 5940
6222if `grep -i "unrecognized option" conftest.err >/dev/null` 5941if `grep -i "unrecognized option" conftest.err >/dev/null`
6223then 5942then
6224 { echo "$as_me:$LINENO: result: no" >&5 5943 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6225echo "${ECHO_T}no" >&6; } 5944$as_echo "no" >&6; }
6226 CFLAGS="$saved_CFLAGS" 5945 CFLAGS="$saved_CFLAGS"
6227else 5946else
6228 { echo "$as_me:$LINENO: result: yes" >&5 5947 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6229echo "${ECHO_T}yes" >&6; } 5948$as_echo "yes" >&6; }
6230 CFLAGS="$saved_CFLAGS $_define_flag" 5949 CFLAGS="$saved_CFLAGS $_define_flag"
6231fi 5950fi
6232else 5951else
6233 echo "$as_me: failed program was:" >&5 5952 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6234sed 's/^/| /' conftest.$ac_ext >&5 5953$as_echo "no" >&6; }
6235
6236 { echo "$as_me:$LINENO: result: no" >&5
6237echo "${ECHO_T}no" >&6; }
6238 CFLAGS="$saved_CFLAGS" 5954 CFLAGS="$saved_CFLAGS"
6239 5955
6240fi 5956fi
6241
6242rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 5957rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6243} 5958}
6244 { 5959 {
6245 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wsign-compare" >&5 5960 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsign-compare" >&5
6246echo $ECHO_N "checking if $CC supports compile flag -Wsign-compare... $ECHO_C" >&6; } 5961$as_echo_n "checking if $CC supports compile flag -Wsign-compare... " >&6; }
6247 saved_CFLAGS="$CFLAGS" 5962 saved_CFLAGS="$CFLAGS"
6248 CFLAGS="$CFLAGS $WERROR -Wsign-compare" 5963 CFLAGS="$CFLAGS $WERROR -Wsign-compare"
6249 _define_flag="" 5964 _define_flag=""
6250 test "x$_define_flag" = "x" && _define_flag="-Wsign-compare" 5965 test "x$_define_flag" = "x" && _define_flag="-Wsign-compare"
6251 cat >conftest.$ac_ext <<_ACEOF 5966 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6252/* confdefs.h. */
6253_ACEOF
6254cat confdefs.h >>conftest.$ac_ext
6255cat >>conftest.$ac_ext <<_ACEOF
6256/* end confdefs.h. */ 5967/* end confdefs.h. */
6257 5968
6258#include <stdlib.h> 5969#include <stdlib.h>
@@ -6268,58 +5979,34 @@ int main(int argc, char **argv) {
6268} 5979}
6269 5980
6270_ACEOF 5981_ACEOF
6271rm -f conftest.$ac_objext 5982if ac_fn_c_try_compile "$LINENO"; then :
6272if { (ac_try="$ac_compile"
6273case "(($ac_try" in
6274 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6275 *) ac_try_echo=$ac_try;;
6276esac
6277eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6278 (eval "$ac_compile") 2>conftest.er1
6279 ac_status=$?
6280 grep -v '^ *+' conftest.er1 >conftest.err
6281 rm -f conftest.er1
6282 cat conftest.err >&5
6283 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6284 (exit $ac_status); } && {
6285 test -z "$ac_c_werror_flag" ||
6286 test ! -s conftest.err
6287 } && test -s conftest.$ac_objext; then
6288 5983
6289if `grep -i "unrecognized option" conftest.err >/dev/null` 5984if `grep -i "unrecognized option" conftest.err >/dev/null`
6290then 5985then
6291 { echo "$as_me:$LINENO: result: no" >&5 5986 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6292echo "${ECHO_T}no" >&6; } 5987$as_echo "no" >&6; }
6293 CFLAGS="$saved_CFLAGS" 5988 CFLAGS="$saved_CFLAGS"
6294else 5989else
6295 { echo "$as_me:$LINENO: result: yes" >&5 5990 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6296echo "${ECHO_T}yes" >&6; } 5991$as_echo "yes" >&6; }
6297 CFLAGS="$saved_CFLAGS $_define_flag" 5992 CFLAGS="$saved_CFLAGS $_define_flag"
6298fi 5993fi
6299else 5994else
6300 echo "$as_me: failed program was:" >&5 5995 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6301sed 's/^/| /' conftest.$ac_ext >&5 5996$as_echo "no" >&6; }
6302
6303 { echo "$as_me:$LINENO: result: no" >&5
6304echo "${ECHO_T}no" >&6; }
6305 CFLAGS="$saved_CFLAGS" 5997 CFLAGS="$saved_CFLAGS"
6306 5998
6307fi 5999fi
6308
6309rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6000rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6310} 6001}
6311 { 6002 {
6312 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wformat-security" >&5 6003 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wformat-security" >&5
6313echo $ECHO_N "checking if $CC supports compile flag -Wformat-security... $ECHO_C" >&6; } 6004$as_echo_n "checking if $CC supports compile flag -Wformat-security... " >&6; }
6314 saved_CFLAGS="$CFLAGS" 6005 saved_CFLAGS="$CFLAGS"
6315 CFLAGS="$CFLAGS $WERROR -Wformat-security" 6006 CFLAGS="$CFLAGS $WERROR -Wformat-security"
6316 _define_flag="" 6007 _define_flag=""
6317 test "x$_define_flag" = "x" && _define_flag="-Wformat-security" 6008 test "x$_define_flag" = "x" && _define_flag="-Wformat-security"
6318 cat >conftest.$ac_ext <<_ACEOF 6009 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6319/* confdefs.h. */
6320_ACEOF
6321cat confdefs.h >>conftest.$ac_ext
6322cat >>conftest.$ac_ext <<_ACEOF
6323/* end confdefs.h. */ 6010/* end confdefs.h. */
6324 6011
6325#include <stdlib.h> 6012#include <stdlib.h>
@@ -6335,58 +6022,34 @@ int main(int argc, char **argv) {
6335} 6022}
6336 6023
6337_ACEOF 6024_ACEOF
6338rm -f conftest.$ac_objext 6025if ac_fn_c_try_compile "$LINENO"; then :
6339if { (ac_try="$ac_compile"
6340case "(($ac_try" in
6341 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6342 *) ac_try_echo=$ac_try;;
6343esac
6344eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6345 (eval "$ac_compile") 2>conftest.er1
6346 ac_status=$?
6347 grep -v '^ *+' conftest.er1 >conftest.err
6348 rm -f conftest.er1
6349 cat conftest.err >&5
6350 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6351 (exit $ac_status); } && {
6352 test -z "$ac_c_werror_flag" ||
6353 test ! -s conftest.err
6354 } && test -s conftest.$ac_objext; then
6355 6026
6356if `grep -i "unrecognized option" conftest.err >/dev/null` 6027if `grep -i "unrecognized option" conftest.err >/dev/null`
6357then 6028then
6358 { echo "$as_me:$LINENO: result: no" >&5 6029 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6359echo "${ECHO_T}no" >&6; } 6030$as_echo "no" >&6; }
6360 CFLAGS="$saved_CFLAGS" 6031 CFLAGS="$saved_CFLAGS"
6361else 6032else
6362 { echo "$as_me:$LINENO: result: yes" >&5 6033 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6363echo "${ECHO_T}yes" >&6; } 6034$as_echo "yes" >&6; }
6364 CFLAGS="$saved_CFLAGS $_define_flag" 6035 CFLAGS="$saved_CFLAGS $_define_flag"
6365fi 6036fi
6366else 6037else
6367 echo "$as_me: failed program was:" >&5 6038 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6368sed 's/^/| /' conftest.$ac_ext >&5 6039$as_echo "no" >&6; }
6369
6370 { echo "$as_me:$LINENO: result: no" >&5
6371echo "${ECHO_T}no" >&6; }
6372 CFLAGS="$saved_CFLAGS" 6040 CFLAGS="$saved_CFLAGS"
6373 6041
6374fi 6042fi
6375
6376rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6043rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6377} 6044}
6378 { 6045 {
6379 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wsizeof-pointer-memaccess" >&5 6046 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsizeof-pointer-memaccess" >&5
6380echo $ECHO_N "checking if $CC supports compile flag -Wsizeof-pointer-memaccess... $ECHO_C" >&6; } 6047$as_echo_n "checking if $CC supports compile flag -Wsizeof-pointer-memaccess... " >&6; }
6381 saved_CFLAGS="$CFLAGS" 6048 saved_CFLAGS="$CFLAGS"
6382 CFLAGS="$CFLAGS $WERROR -Wsizeof-pointer-memaccess" 6049 CFLAGS="$CFLAGS $WERROR -Wsizeof-pointer-memaccess"
6383 _define_flag="" 6050 _define_flag=""
6384 test "x$_define_flag" = "x" && _define_flag="-Wsizeof-pointer-memaccess" 6051 test "x$_define_flag" = "x" && _define_flag="-Wsizeof-pointer-memaccess"
6385 cat >conftest.$ac_ext <<_ACEOF 6052 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6386/* confdefs.h. */
6387_ACEOF
6388cat confdefs.h >>conftest.$ac_ext
6389cat >>conftest.$ac_ext <<_ACEOF
6390/* end confdefs.h. */ 6053/* end confdefs.h. */
6391 6054
6392#include <stdlib.h> 6055#include <stdlib.h>
@@ -6402,58 +6065,34 @@ int main(int argc, char **argv) {
6402} 6065}
6403 6066
6404_ACEOF 6067_ACEOF
6405rm -f conftest.$ac_objext 6068if ac_fn_c_try_compile "$LINENO"; then :
6406if { (ac_try="$ac_compile"
6407case "(($ac_try" in
6408 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6409 *) ac_try_echo=$ac_try;;
6410esac
6411eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6412 (eval "$ac_compile") 2>conftest.er1
6413 ac_status=$?
6414 grep -v '^ *+' conftest.er1 >conftest.err
6415 rm -f conftest.er1
6416 cat conftest.err >&5
6417 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6418 (exit $ac_status); } && {
6419 test -z "$ac_c_werror_flag" ||
6420 test ! -s conftest.err
6421 } && test -s conftest.$ac_objext; then
6422 6069
6423if `grep -i "unrecognized option" conftest.err >/dev/null` 6070if `grep -i "unrecognized option" conftest.err >/dev/null`
6424then 6071then
6425 { echo "$as_me:$LINENO: result: no" >&5 6072 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6426echo "${ECHO_T}no" >&6; } 6073$as_echo "no" >&6; }
6427 CFLAGS="$saved_CFLAGS" 6074 CFLAGS="$saved_CFLAGS"
6428else 6075else
6429 { echo "$as_me:$LINENO: result: yes" >&5 6076 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6430echo "${ECHO_T}yes" >&6; } 6077$as_echo "yes" >&6; }
6431 CFLAGS="$saved_CFLAGS $_define_flag" 6078 CFLAGS="$saved_CFLAGS $_define_flag"
6432fi 6079fi
6433else 6080else
6434 echo "$as_me: failed program was:" >&5 6081 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6435sed 's/^/| /' conftest.$ac_ext >&5 6082$as_echo "no" >&6; }
6436
6437 { echo "$as_me:$LINENO: result: no" >&5
6438echo "${ECHO_T}no" >&6; }
6439 CFLAGS="$saved_CFLAGS" 6083 CFLAGS="$saved_CFLAGS"
6440 6084
6441fi 6085fi
6442
6443rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6086rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6444} 6087}
6445 { 6088 {
6446 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wpointer-sign" >&5 6089 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-sign" >&5
6447echo $ECHO_N "checking if $CC supports compile flag -Wpointer-sign... $ECHO_C" >&6; } 6090$as_echo_n "checking if $CC supports compile flag -Wpointer-sign... " >&6; }
6448 saved_CFLAGS="$CFLAGS" 6091 saved_CFLAGS="$CFLAGS"
6449 CFLAGS="$CFLAGS $WERROR -Wpointer-sign" 6092 CFLAGS="$CFLAGS $WERROR -Wpointer-sign"
6450 _define_flag="-Wno-pointer-sign" 6093 _define_flag="-Wno-pointer-sign"
6451 test "x$_define_flag" = "x" && _define_flag="-Wpointer-sign" 6094 test "x$_define_flag" = "x" && _define_flag="-Wpointer-sign"
6452 cat >conftest.$ac_ext <<_ACEOF 6095 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6453/* confdefs.h. */
6454_ACEOF
6455cat confdefs.h >>conftest.$ac_ext
6456cat >>conftest.$ac_ext <<_ACEOF
6457/* end confdefs.h. */ 6096/* end confdefs.h. */
6458 6097
6459#include <stdlib.h> 6098#include <stdlib.h>
@@ -6469,58 +6108,34 @@ int main(int argc, char **argv) {
6469} 6108}
6470 6109
6471_ACEOF 6110_ACEOF
6472rm -f conftest.$ac_objext 6111if ac_fn_c_try_compile "$LINENO"; then :
6473if { (ac_try="$ac_compile"
6474case "(($ac_try" in
6475 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6476 *) ac_try_echo=$ac_try;;
6477esac
6478eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6479 (eval "$ac_compile") 2>conftest.er1
6480 ac_status=$?
6481 grep -v '^ *+' conftest.er1 >conftest.err
6482 rm -f conftest.er1
6483 cat conftest.err >&5
6484 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6485 (exit $ac_status); } && {
6486 test -z "$ac_c_werror_flag" ||
6487 test ! -s conftest.err
6488 } && test -s conftest.$ac_objext; then
6489 6112
6490if `grep -i "unrecognized option" conftest.err >/dev/null` 6113if `grep -i "unrecognized option" conftest.err >/dev/null`
6491then 6114then
6492 { echo "$as_me:$LINENO: result: no" >&5 6115 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6493echo "${ECHO_T}no" >&6; } 6116$as_echo "no" >&6; }
6494 CFLAGS="$saved_CFLAGS" 6117 CFLAGS="$saved_CFLAGS"
6495else 6118else
6496 { echo "$as_me:$LINENO: result: yes" >&5 6119 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6497echo "${ECHO_T}yes" >&6; } 6120$as_echo "yes" >&6; }
6498 CFLAGS="$saved_CFLAGS $_define_flag" 6121 CFLAGS="$saved_CFLAGS $_define_flag"
6499fi 6122fi
6500else 6123else
6501 echo "$as_me: failed program was:" >&5 6124 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6502sed 's/^/| /' conftest.$ac_ext >&5 6125$as_echo "no" >&6; }
6503
6504 { echo "$as_me:$LINENO: result: no" >&5
6505echo "${ECHO_T}no" >&6; }
6506 CFLAGS="$saved_CFLAGS" 6126 CFLAGS="$saved_CFLAGS"
6507 6127
6508fi 6128fi
6509
6510rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6129rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6511} 6130}
6512 { 6131 {
6513 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wunused-result" >&5 6132 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-result" >&5
6514echo $ECHO_N "checking if $CC supports compile flag -Wunused-result... $ECHO_C" >&6; } 6133$as_echo_n "checking if $CC supports compile flag -Wunused-result... " >&6; }
6515 saved_CFLAGS="$CFLAGS" 6134 saved_CFLAGS="$CFLAGS"
6516 CFLAGS="$CFLAGS $WERROR -Wunused-result" 6135 CFLAGS="$CFLAGS $WERROR -Wunused-result"
6517 _define_flag="-Wno-unused-result" 6136 _define_flag="-Wno-unused-result"
6518 test "x$_define_flag" = "x" && _define_flag="-Wunused-result" 6137 test "x$_define_flag" = "x" && _define_flag="-Wunused-result"
6519 cat >conftest.$ac_ext <<_ACEOF 6138 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6520/* confdefs.h. */
6521_ACEOF
6522cat confdefs.h >>conftest.$ac_ext
6523cat >>conftest.$ac_ext <<_ACEOF
6524/* end confdefs.h. */ 6139/* end confdefs.h. */
6525 6140
6526#include <stdlib.h> 6141#include <stdlib.h>
@@ -6536,58 +6151,34 @@ int main(int argc, char **argv) {
6536} 6151}
6537 6152
6538_ACEOF 6153_ACEOF
6539rm -f conftest.$ac_objext 6154if ac_fn_c_try_compile "$LINENO"; then :
6540if { (ac_try="$ac_compile"
6541case "(($ac_try" in
6542 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6543 *) ac_try_echo=$ac_try;;
6544esac
6545eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6546 (eval "$ac_compile") 2>conftest.er1
6547 ac_status=$?
6548 grep -v '^ *+' conftest.er1 >conftest.err
6549 rm -f conftest.er1
6550 cat conftest.err >&5
6551 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6552 (exit $ac_status); } && {
6553 test -z "$ac_c_werror_flag" ||
6554 test ! -s conftest.err
6555 } && test -s conftest.$ac_objext; then
6556 6155
6557if `grep -i "unrecognized option" conftest.err >/dev/null` 6156if `grep -i "unrecognized option" conftest.err >/dev/null`
6558then 6157then
6559 { echo "$as_me:$LINENO: result: no" >&5 6158 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6560echo "${ECHO_T}no" >&6; } 6159$as_echo "no" >&6; }
6561 CFLAGS="$saved_CFLAGS" 6160 CFLAGS="$saved_CFLAGS"
6562else 6161else
6563 { echo "$as_me:$LINENO: result: yes" >&5 6162 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6564echo "${ECHO_T}yes" >&6; } 6163$as_echo "yes" >&6; }
6565 CFLAGS="$saved_CFLAGS $_define_flag" 6164 CFLAGS="$saved_CFLAGS $_define_flag"
6566fi 6165fi
6567else 6166else
6568 echo "$as_me: failed program was:" >&5 6167 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6569sed 's/^/| /' conftest.$ac_ext >&5 6168$as_echo "no" >&6; }
6570
6571 { echo "$as_me:$LINENO: result: no" >&5
6572echo "${ECHO_T}no" >&6; }
6573 CFLAGS="$saved_CFLAGS" 6169 CFLAGS="$saved_CFLAGS"
6574 6170
6575fi 6171fi
6576
6577rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6172rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6578} 6173}
6579 { 6174 {
6580 { echo "$as_me:$LINENO: checking if $CC supports compile flag -fno-strict-aliasing" >&5 6175 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fno-strict-aliasing" >&5
6581echo $ECHO_N "checking if $CC supports compile flag -fno-strict-aliasing... $ECHO_C" >&6; } 6176$as_echo_n "checking if $CC supports compile flag -fno-strict-aliasing... " >&6; }
6582 saved_CFLAGS="$CFLAGS" 6177 saved_CFLAGS="$CFLAGS"
6583 CFLAGS="$CFLAGS $WERROR -fno-strict-aliasing" 6178 CFLAGS="$CFLAGS $WERROR -fno-strict-aliasing"
6584 _define_flag="" 6179 _define_flag=""
6585 test "x$_define_flag" = "x" && _define_flag="-fno-strict-aliasing" 6180 test "x$_define_flag" = "x" && _define_flag="-fno-strict-aliasing"
6586 cat >conftest.$ac_ext <<_ACEOF 6181 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6587/* confdefs.h. */
6588_ACEOF
6589cat confdefs.h >>conftest.$ac_ext
6590cat >>conftest.$ac_ext <<_ACEOF
6591/* end confdefs.h. */ 6182/* end confdefs.h. */
6592 6183
6593#include <stdlib.h> 6184#include <stdlib.h>
@@ -6603,58 +6194,34 @@ int main(int argc, char **argv) {
6603} 6194}
6604 6195
6605_ACEOF 6196_ACEOF
6606rm -f conftest.$ac_objext 6197if ac_fn_c_try_compile "$LINENO"; then :
6607if { (ac_try="$ac_compile"
6608case "(($ac_try" in
6609 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6610 *) ac_try_echo=$ac_try;;
6611esac
6612eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6613 (eval "$ac_compile") 2>conftest.er1
6614 ac_status=$?
6615 grep -v '^ *+' conftest.er1 >conftest.err
6616 rm -f conftest.er1
6617 cat conftest.err >&5
6618 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6619 (exit $ac_status); } && {
6620 test -z "$ac_c_werror_flag" ||
6621 test ! -s conftest.err
6622 } && test -s conftest.$ac_objext; then
6623 6198
6624if `grep -i "unrecognized option" conftest.err >/dev/null` 6199if `grep -i "unrecognized option" conftest.err >/dev/null`
6625then 6200then
6626 { echo "$as_me:$LINENO: result: no" >&5 6201 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6627echo "${ECHO_T}no" >&6; } 6202$as_echo "no" >&6; }
6628 CFLAGS="$saved_CFLAGS" 6203 CFLAGS="$saved_CFLAGS"
6629else 6204else
6630 { echo "$as_me:$LINENO: result: yes" >&5 6205 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6631echo "${ECHO_T}yes" >&6; } 6206$as_echo "yes" >&6; }
6632 CFLAGS="$saved_CFLAGS $_define_flag" 6207 CFLAGS="$saved_CFLAGS $_define_flag"
6633fi 6208fi
6634else 6209else
6635 echo "$as_me: failed program was:" >&5 6210 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6636sed 's/^/| /' conftest.$ac_ext >&5 6211$as_echo "no" >&6; }
6637
6638 { echo "$as_me:$LINENO: result: no" >&5
6639echo "${ECHO_T}no" >&6; }
6640 CFLAGS="$saved_CFLAGS" 6212 CFLAGS="$saved_CFLAGS"
6641 6213
6642fi 6214fi
6643
6644rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6215rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6645} 6216}
6646 { 6217 {
6647 { echo "$as_me:$LINENO: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5 6218 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5
6648echo $ECHO_N "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... $ECHO_C" >&6; } 6219$as_echo_n "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; }
6649 saved_CFLAGS="$CFLAGS" 6220 saved_CFLAGS="$CFLAGS"
6650 CFLAGS="$CFLAGS $WERROR -D_FORTIFY_SOURCE=2" 6221 CFLAGS="$CFLAGS $WERROR -D_FORTIFY_SOURCE=2"
6651 _define_flag="" 6222 _define_flag=""
6652 test "x$_define_flag" = "x" && _define_flag="-D_FORTIFY_SOURCE=2" 6223 test "x$_define_flag" = "x" && _define_flag="-D_FORTIFY_SOURCE=2"
6653 cat >conftest.$ac_ext <<_ACEOF 6224 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6654/* confdefs.h. */
6655_ACEOF
6656cat confdefs.h >>conftest.$ac_ext
6657cat >>conftest.$ac_ext <<_ACEOF
6658/* end confdefs.h. */ 6225/* end confdefs.h. */
6659 6226
6660#include <stdlib.h> 6227#include <stdlib.h>
@@ -6670,59 +6237,35 @@ int main(int argc, char **argv) {
6670} 6237}
6671 6238
6672_ACEOF 6239_ACEOF
6673rm -f conftest.$ac_objext 6240if ac_fn_c_try_compile "$LINENO"; then :
6674if { (ac_try="$ac_compile"
6675case "(($ac_try" in
6676 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6677 *) ac_try_echo=$ac_try;;
6678esac
6679eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6680 (eval "$ac_compile") 2>conftest.er1
6681 ac_status=$?
6682 grep -v '^ *+' conftest.er1 >conftest.err
6683 rm -f conftest.er1
6684 cat conftest.err >&5
6685 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6686 (exit $ac_status); } && {
6687 test -z "$ac_c_werror_flag" ||
6688 test ! -s conftest.err
6689 } && test -s conftest.$ac_objext; then
6690 6241
6691if `grep -i "unrecognized option" conftest.err >/dev/null` 6242if `grep -i "unrecognized option" conftest.err >/dev/null`
6692then 6243then
6693 { echo "$as_me:$LINENO: result: no" >&5 6244 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6694echo "${ECHO_T}no" >&6; } 6245$as_echo "no" >&6; }
6695 CFLAGS="$saved_CFLAGS" 6246 CFLAGS="$saved_CFLAGS"
6696else 6247else
6697 { echo "$as_me:$LINENO: result: yes" >&5 6248 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6698echo "${ECHO_T}yes" >&6; } 6249$as_echo "yes" >&6; }
6699 CFLAGS="$saved_CFLAGS $_define_flag" 6250 CFLAGS="$saved_CFLAGS $_define_flag"
6700fi 6251fi
6701else 6252else
6702 echo "$as_me: failed program was:" >&5 6253 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6703sed 's/^/| /' conftest.$ac_ext >&5 6254$as_echo "no" >&6; }
6704
6705 { echo "$as_me:$LINENO: result: no" >&5
6706echo "${ECHO_T}no" >&6; }
6707 CFLAGS="$saved_CFLAGS" 6255 CFLAGS="$saved_CFLAGS"
6708 6256
6709fi 6257fi
6710
6711rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6258rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6712} 6259}
6713 if test "x$use_toolchain_hardening" = "x1"; then 6260 if test "x$use_toolchain_hardening" = "x1"; then
6714 { 6261 {
6715 { echo "$as_me:$LINENO: checking if $LD supports link flag -Wl,-z,relro" >&5 6262 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,relro" >&5
6716echo $ECHO_N "checking if $LD supports link flag -Wl,-z,relro... $ECHO_C" >&6; } 6263$as_echo_n "checking if $LD supports link flag -Wl,-z,relro... " >&6; }
6717 saved_LDFLAGS="$LDFLAGS" 6264 saved_LDFLAGS="$LDFLAGS"
6718 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,relro" 6265 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,relro"
6719 _define_flag="" 6266 _define_flag=""
6720 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,relro" 6267 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,relro"
6721 cat >conftest.$ac_ext <<_ACEOF 6268 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6722/* confdefs.h. */
6723_ACEOF
6724cat confdefs.h >>conftest.$ac_ext
6725cat >>conftest.$ac_ext <<_ACEOF
6726/* end confdefs.h. */ 6269/* end confdefs.h. */
6727 6270
6728#include <stdlib.h> 6271#include <stdlib.h>
@@ -6733,57 +6276,33 @@ int main(int argc, char **argv) {
6733 float l = i * 2.1; 6276 float l = i * 2.1;
6734 double m = l / 0.5; 6277 double m = l / 0.5;
6735 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6278 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6736 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6279 long long p = n * o;
6280 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
6737 exit(0); 6281 exit(0);
6738} 6282}
6739 6283
6740_ACEOF 6284_ACEOF
6741rm -f conftest.$ac_objext conftest$ac_exeext 6285if ac_fn_c_try_link "$LINENO"; then :
6742if { (ac_try="$ac_link" 6286 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6743case "(($ac_try" in 6287$as_echo "yes" >&6; }
6744 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6745 *) ac_try_echo=$ac_try;;
6746esac
6747eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6748 (eval "$ac_link") 2>conftest.er1
6749 ac_status=$?
6750 grep -v '^ *+' conftest.er1 >conftest.err
6751 rm -f conftest.er1
6752 cat conftest.err >&5
6753 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6754 (exit $ac_status); } && {
6755 test -z "$ac_c_werror_flag" ||
6756 test ! -s conftest.err
6757 } && test -s conftest$ac_exeext &&
6758 $as_test_x conftest$ac_exeext; then
6759 { echo "$as_me:$LINENO: result: yes" >&5
6760echo "${ECHO_T}yes" >&6; }
6761 LDFLAGS="$saved_LDFLAGS $_define_flag" 6288 LDFLAGS="$saved_LDFLAGS $_define_flag"
6762else 6289else
6763 echo "$as_me: failed program was:" >&5 6290 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6764sed 's/^/| /' conftest.$ac_ext >&5 6291$as_echo "no" >&6; }
6765
6766 { echo "$as_me:$LINENO: result: no" >&5
6767echo "${ECHO_T}no" >&6; }
6768 LDFLAGS="$saved_LDFLAGS" 6292 LDFLAGS="$saved_LDFLAGS"
6769 6293
6770fi 6294fi
6771 6295rm -f core conftest.err conftest.$ac_objext \
6772rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6296 conftest$ac_exeext conftest.$ac_ext
6773 conftest$ac_exeext conftest.$ac_ext
6774} 6297}
6775 { 6298 {
6776 { echo "$as_me:$LINENO: checking if $LD supports link flag -Wl,-z,now" >&5 6299 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,now" >&5
6777echo $ECHO_N "checking if $LD supports link flag -Wl,-z,now... $ECHO_C" >&6; } 6300$as_echo_n "checking if $LD supports link flag -Wl,-z,now... " >&6; }
6778 saved_LDFLAGS="$LDFLAGS" 6301 saved_LDFLAGS="$LDFLAGS"
6779 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,now" 6302 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,now"
6780 _define_flag="" 6303 _define_flag=""
6781 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,now" 6304 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,now"
6782 cat >conftest.$ac_ext <<_ACEOF 6305 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6783/* confdefs.h. */
6784_ACEOF
6785cat confdefs.h >>conftest.$ac_ext
6786cat >>conftest.$ac_ext <<_ACEOF
6787/* end confdefs.h. */ 6306/* end confdefs.h. */
6788 6307
6789#include <stdlib.h> 6308#include <stdlib.h>
@@ -6794,57 +6313,33 @@ int main(int argc, char **argv) {
6794 float l = i * 2.1; 6313 float l = i * 2.1;
6795 double m = l / 0.5; 6314 double m = l / 0.5;
6796 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6315 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6797 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6316 long long p = n * o;
6317 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
6798 exit(0); 6318 exit(0);
6799} 6319}
6800 6320
6801_ACEOF 6321_ACEOF
6802rm -f conftest.$ac_objext conftest$ac_exeext 6322if ac_fn_c_try_link "$LINENO"; then :
6803if { (ac_try="$ac_link" 6323 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6804case "(($ac_try" in 6324$as_echo "yes" >&6; }
6805 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6806 *) ac_try_echo=$ac_try;;
6807esac
6808eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6809 (eval "$ac_link") 2>conftest.er1
6810 ac_status=$?
6811 grep -v '^ *+' conftest.er1 >conftest.err
6812 rm -f conftest.er1
6813 cat conftest.err >&5
6814 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6815 (exit $ac_status); } && {
6816 test -z "$ac_c_werror_flag" ||
6817 test ! -s conftest.err
6818 } && test -s conftest$ac_exeext &&
6819 $as_test_x conftest$ac_exeext; then
6820 { echo "$as_me:$LINENO: result: yes" >&5
6821echo "${ECHO_T}yes" >&6; }
6822 LDFLAGS="$saved_LDFLAGS $_define_flag" 6325 LDFLAGS="$saved_LDFLAGS $_define_flag"
6823else 6326else
6824 echo "$as_me: failed program was:" >&5 6327 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6825sed 's/^/| /' conftest.$ac_ext >&5 6328$as_echo "no" >&6; }
6826
6827 { echo "$as_me:$LINENO: result: no" >&5
6828echo "${ECHO_T}no" >&6; }
6829 LDFLAGS="$saved_LDFLAGS" 6329 LDFLAGS="$saved_LDFLAGS"
6830 6330
6831fi 6331fi
6832 6332rm -f core conftest.err conftest.$ac_objext \
6833rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6333 conftest$ac_exeext conftest.$ac_ext
6834 conftest$ac_exeext conftest.$ac_ext
6835} 6334}
6836 { 6335 {
6837 { echo "$as_me:$LINENO: checking if $LD supports link flag -Wl,-z,noexecstack" >&5 6336 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,noexecstack" >&5
6838echo $ECHO_N "checking if $LD supports link flag -Wl,-z,noexecstack... $ECHO_C" >&6; } 6337$as_echo_n "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; }
6839 saved_LDFLAGS="$LDFLAGS" 6338 saved_LDFLAGS="$LDFLAGS"
6840 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,noexecstack" 6339 LDFLAGS="$LDFLAGS $WERROR -Wl,-z,noexecstack"
6841 _define_flag="" 6340 _define_flag=""
6842 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,noexecstack" 6341 test "x$_define_flag" = "x" && _define_flag="-Wl,-z,noexecstack"
6843 cat >conftest.$ac_ext <<_ACEOF 6342 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6844/* confdefs.h. */
6845_ACEOF
6846cat confdefs.h >>conftest.$ac_ext
6847cat >>conftest.$ac_ext <<_ACEOF
6848/* end confdefs.h. */ 6343/* end confdefs.h. */
6849 6344
6850#include <stdlib.h> 6345#include <stdlib.h>
@@ -6855,44 +6350,24 @@ int main(int argc, char **argv) {
6855 float l = i * 2.1; 6350 float l = i * 2.1;
6856 double m = l / 0.5; 6351 double m = l / 0.5;
6857 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6352 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6858 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6353 long long p = n * o;
6354 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
6859 exit(0); 6355 exit(0);
6860} 6356}
6861 6357
6862_ACEOF 6358_ACEOF
6863rm -f conftest.$ac_objext conftest$ac_exeext 6359if ac_fn_c_try_link "$LINENO"; then :
6864if { (ac_try="$ac_link" 6360 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6865case "(($ac_try" in 6361$as_echo "yes" >&6; }
6866 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6867 *) ac_try_echo=$ac_try;;
6868esac
6869eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6870 (eval "$ac_link") 2>conftest.er1
6871 ac_status=$?
6872 grep -v '^ *+' conftest.er1 >conftest.err
6873 rm -f conftest.er1
6874 cat conftest.err >&5
6875 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6876 (exit $ac_status); } && {
6877 test -z "$ac_c_werror_flag" ||
6878 test ! -s conftest.err
6879 } && test -s conftest$ac_exeext &&
6880 $as_test_x conftest$ac_exeext; then
6881 { echo "$as_me:$LINENO: result: yes" >&5
6882echo "${ECHO_T}yes" >&6; }
6883 LDFLAGS="$saved_LDFLAGS $_define_flag" 6362 LDFLAGS="$saved_LDFLAGS $_define_flag"
6884else 6363else
6885 echo "$as_me: failed program was:" >&5 6364 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6886sed 's/^/| /' conftest.$ac_ext >&5 6365$as_echo "no" >&6; }
6887
6888 { echo "$as_me:$LINENO: result: no" >&5
6889echo "${ECHO_T}no" >&6; }
6890 LDFLAGS="$saved_LDFLAGS" 6366 LDFLAGS="$saved_LDFLAGS"
6891 6367
6892fi 6368fi
6893 6369rm -f core conftest.err conftest.$ac_objext \
6894rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6370 conftest$ac_exeext conftest.$ac_ext
6895 conftest$ac_exeext conftest.$ac_ext
6896} 6371}
6897 # NB. -ftrapv expects certain support functions to be present in 6372 # NB. -ftrapv expects certain support functions to be present in
6898 # the compiler library (libgcc or similar) to detect integer operations 6373 # the compiler library (libgcc or similar) to detect integer operations
@@ -6900,17 +6375,13 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
6900 # actually links. The test program compiled/linked includes a number 6375 # actually links. The test program compiled/linked includes a number
6901 # of integer operations that should exercise this. 6376 # of integer operations that should exercise this.
6902 { 6377 {
6903 { echo "$as_me:$LINENO: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5 6378 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5
6904echo $ECHO_N "checking if $CC supports compile flag -ftrapv and linking succeeds... $ECHO_C" >&6; } 6379$as_echo_n "checking if $CC supports compile flag -ftrapv and linking succeeds... " >&6; }
6905 saved_CFLAGS="$CFLAGS" 6380 saved_CFLAGS="$CFLAGS"
6906 CFLAGS="$CFLAGS $WERROR -ftrapv" 6381 CFLAGS="$CFLAGS $WERROR -ftrapv"
6907 _define_flag="" 6382 _define_flag=""
6908 test "x$_define_flag" = "x" && _define_flag="-ftrapv" 6383 test "x$_define_flag" = "x" && _define_flag="-ftrapv"
6909 cat >conftest.$ac_ext <<_ACEOF 6384 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6910/* confdefs.h. */
6911_ACEOF
6912cat confdefs.h >>conftest.$ac_ext
6913cat >>conftest.$ac_ext <<_ACEOF
6914/* end confdefs.h. */ 6385/* end confdefs.h. */
6915 6386
6916#include <stdlib.h> 6387#include <stdlib.h>
@@ -6921,56 +6392,36 @@ int main(int argc, char **argv) {
6921 float l = i * 2.1; 6392 float l = i * 2.1;
6922 double m = l / 0.5; 6393 double m = l / 0.5;
6923 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6394 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6924 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6395 long long int p = n * o;
6396 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
6925 exit(0); 6397 exit(0);
6926} 6398}
6927 6399
6928_ACEOF 6400_ACEOF
6929rm -f conftest.$ac_objext conftest$ac_exeext 6401if ac_fn_c_try_link "$LINENO"; then :
6930if { (ac_try="$ac_link"
6931case "(($ac_try" in
6932 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6933 *) ac_try_echo=$ac_try;;
6934esac
6935eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6936 (eval "$ac_link") 2>conftest.er1
6937 ac_status=$?
6938 grep -v '^ *+' conftest.er1 >conftest.err
6939 rm -f conftest.er1
6940 cat conftest.err >&5
6941 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6942 (exit $ac_status); } && {
6943 test -z "$ac_c_werror_flag" ||
6944 test ! -s conftest.err
6945 } && test -s conftest$ac_exeext &&
6946 $as_test_x conftest$ac_exeext; then
6947 6402
6948if `grep -i "unrecognized option" conftest.err >/dev/null` 6403if `grep -i "unrecognized option" conftest.err >/dev/null`
6949then 6404then
6950 { echo "$as_me:$LINENO: result: no" >&5 6405 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6951echo "${ECHO_T}no" >&6; } 6406$as_echo "no" >&6; }
6952 CFLAGS="$saved_CFLAGS" 6407 CFLAGS="$saved_CFLAGS"
6953else 6408else
6954 { echo "$as_me:$LINENO: result: yes" >&5 6409 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6955echo "${ECHO_T}yes" >&6; } 6410$as_echo "yes" >&6; }
6956 CFLAGS="$saved_CFLAGS $_define_flag" 6411 CFLAGS="$saved_CFLAGS $_define_flag"
6957fi 6412fi
6958else 6413else
6959 echo "$as_me: failed program was:" >&5 6414 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6960sed 's/^/| /' conftest.$ac_ext >&5 6415$as_echo "no" >&6; }
6961
6962 { echo "$as_me:$LINENO: result: no" >&5
6963echo "${ECHO_T}no" >&6; }
6964 CFLAGS="$saved_CFLAGS" 6416 CFLAGS="$saved_CFLAGS"
6965 6417
6966fi 6418fi
6967 6419rm -f core conftest.err conftest.$ac_objext \
6968rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6420 conftest$ac_exeext conftest.$ac_ext
6969 conftest$ac_exeext conftest.$ac_ext
6970} 6421}
6971 fi 6422 fi
6972 { echo "$as_me:$LINENO: checking gcc version" >&5 6423 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5
6973echo $ECHO_N "checking gcc version... $ECHO_C" >&6; } 6424$as_echo_n "checking gcc version... " >&6; }
6974 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'` 6425 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
6975 case $GCC_VER in 6426 case $GCC_VER in
6976 1.*) no_attrib_nonnull=1 ;; 6427 1.*) no_attrib_nonnull=1 ;;
@@ -6980,18 +6431,14 @@ echo $ECHO_N "checking gcc version... $ECHO_C" >&6; }
6980 2.*) no_attrib_nonnull=1 ;; 6431 2.*) no_attrib_nonnull=1 ;;
6981 *) ;; 6432 *) ;;
6982 esac 6433 esac
6983 { echo "$as_me:$LINENO: result: $GCC_VER" >&5 6434 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_VER" >&5
6984echo "${ECHO_T}$GCC_VER" >&6; } 6435$as_echo "$GCC_VER" >&6; }
6985 6436
6986 { echo "$as_me:$LINENO: checking if $CC accepts -fno-builtin-memset" >&5 6437 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-builtin-memset" >&5
6987echo $ECHO_N "checking if $CC accepts -fno-builtin-memset... $ECHO_C" >&6; } 6438$as_echo_n "checking if $CC accepts -fno-builtin-memset... " >&6; }
6988 saved_CFLAGS="$CFLAGS" 6439 saved_CFLAGS="$CFLAGS"
6989 CFLAGS="$CFLAGS -fno-builtin-memset" 6440 CFLAGS="$CFLAGS -fno-builtin-memset"
6990 cat >conftest.$ac_ext <<_ACEOF 6441 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6991/* confdefs.h. */
6992_ACEOF
6993cat confdefs.h >>conftest.$ac_ext
6994cat >>conftest.$ac_ext <<_ACEOF
6995/* end confdefs.h. */ 6442/* end confdefs.h. */
6996 #include <string.h> 6443 #include <string.h>
6997int 6444int
@@ -7002,38 +6449,17 @@ main ()
7002 return 0; 6449 return 0;
7003} 6450}
7004_ACEOF 6451_ACEOF
7005rm -f conftest.$ac_objext conftest$ac_exeext 6452if ac_fn_c_try_link "$LINENO"; then :
7006if { (ac_try="$ac_link" 6453 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7007case "(($ac_try" in 6454$as_echo "yes" >&6; }
7008 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7009 *) ac_try_echo=$ac_try;;
7010esac
7011eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7012 (eval "$ac_link") 2>conftest.er1
7013 ac_status=$?
7014 grep -v '^ *+' conftest.er1 >conftest.err
7015 rm -f conftest.er1
7016 cat conftest.err >&5
7017 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7018 (exit $ac_status); } && {
7019 test -z "$ac_c_werror_flag" ||
7020 test ! -s conftest.err
7021 } && test -s conftest$ac_exeext &&
7022 $as_test_x conftest$ac_exeext; then
7023 { echo "$as_me:$LINENO: result: yes" >&5
7024echo "${ECHO_T}yes" >&6; }
7025else 6455else
7026 echo "$as_me: failed program was:" >&5 6456 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7027sed 's/^/| /' conftest.$ac_ext >&5 6457$as_echo "no" >&6; }
7028
7029 { echo "$as_me:$LINENO: result: no" >&5
7030echo "${ECHO_T}no" >&6; }
7031 CFLAGS="$saved_CFLAGS" 6458 CFLAGS="$saved_CFLAGS"
7032 6459
7033fi 6460fi
7034 6461rm -f core conftest.err conftest.$ac_objext \
7035rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6462 conftest$ac_exeext conftest.$ac_ext
7036 conftest$ac_exeext conftest.$ac_ext
7037 6463
7038 # -fstack-protector-all doesn't always work for some GCC versions 6464 # -fstack-protector-all doesn't always work for some GCC versions
7039 # and/or platforms, so we test if we can. If it's not supported 6465 # and/or platforms, so we test if we can. If it's not supported
@@ -7041,17 +6467,13 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
7041 if test "x$use_stack_protector" = "x1"; then 6467 if test "x$use_stack_protector" = "x1"; then
7042 for t in -fstack-protector-strong -fstack-protector-all \ 6468 for t in -fstack-protector-strong -fstack-protector-all \
7043 -fstack-protector; do 6469 -fstack-protector; do
7044 { echo "$as_me:$LINENO: checking if $CC supports $t" >&5 6470 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports $t" >&5
7045echo $ECHO_N "checking if $CC supports $t... $ECHO_C" >&6; } 6471$as_echo_n "checking if $CC supports $t... " >&6; }
7046 saved_CFLAGS="$CFLAGS" 6472 saved_CFLAGS="$CFLAGS"
7047 saved_LDFLAGS="$LDFLAGS" 6473 saved_LDFLAGS="$LDFLAGS"
7048 CFLAGS="$CFLAGS $t -Werror" 6474 CFLAGS="$CFLAGS $t -Werror"
7049 LDFLAGS="$LDFLAGS $t -Werror" 6475 LDFLAGS="$LDFLAGS $t -Werror"
7050 cat >conftest.$ac_ext <<_ACEOF 6476 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7051/* confdefs.h. */
7052_ACEOF
7053cat confdefs.h >>conftest.$ac_ext
7054cat >>conftest.$ac_ext <<_ACEOF
7055/* end confdefs.h. */ 6477/* end confdefs.h. */
7056 #include <stdio.h> 6478 #include <stdio.h>
7057int 6479int
@@ -7065,41 +6487,20 @@ main ()
7065 return 0; 6487 return 0;
7066} 6488}
7067_ACEOF 6489_ACEOF
7068rm -f conftest.$ac_objext conftest$ac_exeext 6490if ac_fn_c_try_link "$LINENO"; then :
7069if { (ac_try="$ac_link" 6491 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7070case "(($ac_try" in 6492$as_echo "yes" >&6; }
7071 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7072 *) ac_try_echo=$ac_try;;
7073esac
7074eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7075 (eval "$ac_link") 2>conftest.er1
7076 ac_status=$?
7077 grep -v '^ *+' conftest.er1 >conftest.err
7078 rm -f conftest.er1
7079 cat conftest.err >&5
7080 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7081 (exit $ac_status); } && {
7082 test -z "$ac_c_werror_flag" ||
7083 test ! -s conftest.err
7084 } && test -s conftest$ac_exeext &&
7085 $as_test_x conftest$ac_exeext; then
7086 { echo "$as_me:$LINENO: result: yes" >&5
7087echo "${ECHO_T}yes" >&6; }
7088 CFLAGS="$saved_CFLAGS $t" 6493 CFLAGS="$saved_CFLAGS $t"
7089 LDFLAGS="$saved_LDFLAGS $t" 6494 LDFLAGS="$saved_LDFLAGS $t"
7090 { echo "$as_me:$LINENO: checking if $t works" >&5 6495 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $t works" >&5
7091echo $ECHO_N "checking if $t works... $ECHO_C" >&6; } 6496$as_echo_n "checking if $t works... " >&6; }
7092 if test "$cross_compiling" = yes; then 6497 if test "$cross_compiling" = yes; then :
7093 { echo "$as_me:$LINENO: WARNING: cross compiling: cannot test" >&5 6498 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: cannot test" >&5
7094echo "$as_me: WARNING: cross compiling: cannot test" >&2;} 6499$as_echo "$as_me: WARNING: cross compiling: cannot test" >&2;}
7095 break 6500 break
7096 6501
7097else 6502else
7098 cat >conftest.$ac_ext <<_ACEOF 6503 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7099/* confdefs.h. */
7100_ACEOF
7101cat confdefs.h >>conftest.$ac_ext
7102cat >>conftest.$ac_ext <<_ACEOF
7103/* end confdefs.h. */ 6504/* end confdefs.h. */
7104 #include <stdio.h> 6505 #include <stdio.h>
7105int 6506int
@@ -7113,54 +6514,26 @@ main ()
7113 return 0; 6514 return 0;
7114} 6515}
7115_ACEOF 6516_ACEOF
7116rm -f conftest$ac_exeext 6517if ac_fn_c_try_run "$LINENO"; then :
7117if { (ac_try="$ac_link" 6518 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7118case "(($ac_try" in 6519$as_echo "yes" >&6; }
7119 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7120 *) ac_try_echo=$ac_try;;
7121esac
7122eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7123 (eval "$ac_link") 2>&5
7124 ac_status=$?
7125 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7126 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
7127 { (case "(($ac_try" in
7128 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7129 *) ac_try_echo=$ac_try;;
7130esac
7131eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7132 (eval "$ac_try") 2>&5
7133 ac_status=$?
7134 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7135 (exit $ac_status); }; }; then
7136 { echo "$as_me:$LINENO: result: yes" >&5
7137echo "${ECHO_T}yes" >&6; }
7138 break 6520 break
7139else 6521else
7140 echo "$as_me: program exited with status $ac_status" >&5 6522 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7141echo "$as_me: failed program was:" >&5 6523$as_echo "no" >&6; }
7142sed 's/^/| /' conftest.$ac_ext >&5
7143
7144( exit $ac_status )
7145 { echo "$as_me:$LINENO: result: no" >&5
7146echo "${ECHO_T}no" >&6; }
7147fi 6524fi
7148rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 6525rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
6526 conftest.$ac_objext conftest.beam conftest.$ac_ext
7149fi 6527fi
7150 6528
7151 6529
7152
7153else 6530else
7154 echo "$as_me: failed program was:" >&5 6531 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7155sed 's/^/| /' conftest.$ac_ext >&5 6532$as_echo "no" >&6; }
7156
7157 { echo "$as_me:$LINENO: result: no" >&5
7158echo "${ECHO_T}no" >&6; }
7159 6533
7160fi 6534fi
7161 6535rm -f core conftest.err conftest.$ac_objext \
7162rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6536 conftest$ac_exeext conftest.$ac_ext
7163 conftest$ac_exeext conftest.$ac_ext
7164 CFLAGS="$saved_CFLAGS" 6537 CFLAGS="$saved_CFLAGS"
7165 LDFLAGS="$saved_LDFLAGS" 6538 LDFLAGS="$saved_LDFLAGS"
7166 done 6539 done
@@ -7171,61 +6544,10 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
7171 unset ac_cv_have_decl_LLONG_MAX 6544 unset ac_cv_have_decl_LLONG_MAX
7172 saved_CFLAGS="$CFLAGS" 6545 saved_CFLAGS="$CFLAGS"
7173 CFLAGS="$CFLAGS -std=gnu99" 6546 CFLAGS="$CFLAGS -std=gnu99"
7174 { echo "$as_me:$LINENO: checking whether LLONG_MAX is declared" >&5 6547 ac_fn_c_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
7175echo $ECHO_N "checking whether LLONG_MAX is declared... $ECHO_C" >&6; }
7176if test "${ac_cv_have_decl_LLONG_MAX+set}" = set; then
7177 echo $ECHO_N "(cached) $ECHO_C" >&6
7178else
7179 cat >conftest.$ac_ext <<_ACEOF
7180/* confdefs.h. */
7181_ACEOF
7182cat confdefs.h >>conftest.$ac_ext
7183cat >>conftest.$ac_ext <<_ACEOF
7184/* end confdefs.h. */
7185#include <limits.h>
7186
7187
7188int
7189main ()
7190{
7191#ifndef LLONG_MAX
7192 (void) LLONG_MAX;
7193#endif
7194
7195 ;
7196 return 0;
7197}
7198_ACEOF
7199rm -f conftest.$ac_objext
7200if { (ac_try="$ac_compile"
7201case "(($ac_try" in
7202 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7203 *) ac_try_echo=$ac_try;;
7204esac
7205eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7206 (eval "$ac_compile") 2>conftest.er1
7207 ac_status=$?
7208 grep -v '^ *+' conftest.er1 >conftest.err
7209 rm -f conftest.er1
7210 cat conftest.err >&5
7211 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7212 (exit $ac_status); } && {
7213 test -z "$ac_c_werror_flag" ||
7214 test ! -s conftest.err
7215 } && test -s conftest.$ac_objext; then
7216 ac_cv_have_decl_LLONG_MAX=yes
7217else
7218 echo "$as_me: failed program was:" >&5
7219sed 's/^/| /' conftest.$ac_ext >&5
7220
7221 ac_cv_have_decl_LLONG_MAX=no
7222fi
7223 6548
7224rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6549"
7225fi 6550if test "x$ac_cv_have_decl_LLONG_MAX" = xyes; then :
7226{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_LLONG_MAX" >&5
7227echo "${ECHO_T}$ac_cv_have_decl_LLONG_MAX" >&6; }
7228if test $ac_cv_have_decl_LLONG_MAX = yes; then
7229 have_llong_max=1 6551 have_llong_max=1
7230else 6552else
7231 CFLAGS="$saved_CFLAGS" 6553 CFLAGS="$saved_CFLAGS"
@@ -7234,13 +6556,9 @@ fi
7234 fi 6556 fi
7235fi 6557fi
7236 6558
7237{ echo "$as_me:$LINENO: checking if compiler allows __attribute__ on return types" >&5 6559{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ on return types" >&5
7238echo $ECHO_N "checking if compiler allows __attribute__ on return types... $ECHO_C" >&6; } 6560$as_echo_n "checking if compiler allows __attribute__ on return types... " >&6; }
7239cat >conftest.$ac_ext <<_ACEOF 6561cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7240/* confdefs.h. */
7241_ACEOF
7242cat confdefs.h >>conftest.$ac_ext
7243cat >>conftest.$ac_ext <<_ACEOF
7244/* end confdefs.h. */ 6562/* end confdefs.h. */
7245 6563
7246#include <stdlib.h> 6564#include <stdlib.h>
@@ -7253,52 +6571,28 @@ main ()
7253 return 0; 6571 return 0;
7254} 6572}
7255_ACEOF 6573_ACEOF
7256rm -f conftest.$ac_objext 6574if ac_fn_c_try_compile "$LINENO"; then :
7257if { (ac_try="$ac_compile" 6575 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7258case "(($ac_try" in 6576$as_echo "yes" >&6; }
7259 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7260 *) ac_try_echo=$ac_try;;
7261esac
7262eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7263 (eval "$ac_compile") 2>conftest.er1
7264 ac_status=$?
7265 grep -v '^ *+' conftest.er1 >conftest.err
7266 rm -f conftest.er1
7267 cat conftest.err >&5
7268 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7269 (exit $ac_status); } && {
7270 test -z "$ac_c_werror_flag" ||
7271 test ! -s conftest.err
7272 } && test -s conftest.$ac_objext; then
7273 { echo "$as_me:$LINENO: result: yes" >&5
7274echo "${ECHO_T}yes" >&6; }
7275else 6577else
7276 echo "$as_me: failed program was:" >&5 6578 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7277sed 's/^/| /' conftest.$ac_ext >&5 6579$as_echo "no" >&6; }
7278
7279 { echo "$as_me:$LINENO: result: no" >&5
7280echo "${ECHO_T}no" >&6; }
7281 6580
7282cat >>confdefs.h <<\_ACEOF 6581$as_echo "#define NO_ATTRIBUTE_ON_RETURN_TYPE 1" >>confdefs.h
7283#define NO_ATTRIBUTE_ON_RETURN_TYPE 1
7284_ACEOF
7285 6582
7286 6583
7287fi 6584fi
7288
7289rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6585rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7290 6586
7291if test "x$no_attrib_nonnull" != "x1" ; then 6587if test "x$no_attrib_nonnull" != "x1" ; then
7292 6588
7293cat >>confdefs.h <<\_ACEOF 6589$as_echo "#define HAVE_ATTRIBUTE__NONNULL__ 1" >>confdefs.h
7294#define HAVE_ATTRIBUTE__NONNULL__ 1
7295_ACEOF
7296 6590
7297fi 6591fi
7298 6592
7299 6593
7300# Check whether --with-rpath was given. 6594# Check whether --with-rpath was given.
7301if test "${with_rpath+set}" = set; then 6595if test "${with_rpath+set}" = set; then :
7302 withval=$with_rpath; 6596 withval=$with_rpath;
7303 if test "x$withval" = "xno" ; then 6597 if test "x$withval" = "xno" ; then
7304 need_dash_r="" 6598 need_dash_r=""
@@ -7314,7 +6608,7 @@ fi
7314# Allow user to specify flags 6608# Allow user to specify flags
7315 6609
7316# Check whether --with-cflags was given. 6610# Check whether --with-cflags was given.
7317if test "${with_cflags+set}" = set; then 6611if test "${with_cflags+set}" = set; then :
7318 withval=$with_cflags; 6612 withval=$with_cflags;
7319 if test -n "$withval" && test "x$withval" != "xno" && \ 6613 if test -n "$withval" && test "x$withval" != "xno" && \
7320 test "x${withval}" != "xyes"; then 6614 test "x${withval}" != "xyes"; then
@@ -7326,7 +6620,7 @@ fi
7326 6620
7327 6621
7328# Check whether --with-cppflags was given. 6622# Check whether --with-cppflags was given.
7329if test "${with_cppflags+set}" = set; then 6623if test "${with_cppflags+set}" = set; then :
7330 withval=$with_cppflags; 6624 withval=$with_cppflags;
7331 if test -n "$withval" && test "x$withval" != "xno" && \ 6625 if test -n "$withval" && test "x$withval" != "xno" && \
7332 test "x${withval}" != "xyes"; then 6626 test "x${withval}" != "xyes"; then
@@ -7338,7 +6632,7 @@ fi
7338 6632
7339 6633
7340# Check whether --with-ldflags was given. 6634# Check whether --with-ldflags was given.
7341if test "${with_ldflags+set}" = set; then 6635if test "${with_ldflags+set}" = set; then :
7342 withval=$with_ldflags; 6636 withval=$with_ldflags;
7343 if test -n "$withval" && test "x$withval" != "xno" && \ 6637 if test -n "$withval" && test "x$withval" != "xno" && \
7344 test "x${withval}" != "xyes"; then 6638 test "x${withval}" != "xyes"; then
@@ -7350,7 +6644,7 @@ fi
7350 6644
7351 6645
7352# Check whether --with-libs was given. 6646# Check whether --with-libs was given.
7353if test "${with_libs+set}" = set; then 6647if test "${with_libs+set}" = set; then :
7354 withval=$with_libs; 6648 withval=$with_libs;
7355 if test -n "$withval" && test "x$withval" != "xno" && \ 6649 if test -n "$withval" && test "x$withval" != "xno" && \
7356 test "x${withval}" != "xyes"; then 6650 test "x${withval}" != "xyes"; then
@@ -7362,7 +6656,7 @@ fi
7362 6656
7363 6657
7364# Check whether --with-Werror was given. 6658# Check whether --with-Werror was given.
7365if test "${with_Werror+set}" = set; then 6659if test "${with_Werror+set}" = set; then :
7366 withval=$with_Werror; 6660 withval=$with_Werror;
7367 if test -n "$withval" && test "x$withval" != "xno"; then 6661 if test -n "$withval" && test "x$withval" != "xno"; then
7368 werror_flags="-Werror" 6662 werror_flags="-Werror"
@@ -7375,76 +6669,6 @@ if test "${with_Werror+set}" = set; then
7375fi 6669fi
7376 6670
7377 6671
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448for ac_header in \ 6672for ac_header in \
7449 blf.h \ 6673 blf.h \
7450 bstring.h \ 6674 bstring.h \
@@ -7495,6 +6719,7 @@ for ac_header in \
7495 sys/poll.h \ 6719 sys/poll.h \
7496 sys/prctl.h \ 6720 sys/prctl.h \
7497 sys/pstat.h \ 6721 sys/pstat.h \
6722 sys/ptrace.h \
7498 sys/select.h \ 6723 sys/select.h \
7499 sys/stat.h \ 6724 sys/stat.h \
7500 sys/stream.h \ 6725 sys/stream.h \
@@ -7517,143 +6742,12 @@ for ac_header in \
7517 vis.h \ 6742 vis.h \
7518 wchar.h \ 6743 wchar.h \
7519 6744
7520do 6745do :
7521as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6746 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
7522if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then 6747ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
7523 { echo "$as_me:$LINENO: checking for $ac_header" >&5 6748if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
7524echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7525if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7526 echo $ECHO_N "(cached) $ECHO_C" >&6
7527fi
7528ac_res=`eval echo '${'$as_ac_Header'}'`
7529 { echo "$as_me:$LINENO: result: $ac_res" >&5
7530echo "${ECHO_T}$ac_res" >&6; }
7531else
7532 # Is the header compilable?
7533{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
7534echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
7535cat >conftest.$ac_ext <<_ACEOF
7536/* confdefs.h. */
7537_ACEOF
7538cat confdefs.h >>conftest.$ac_ext
7539cat >>conftest.$ac_ext <<_ACEOF
7540/* end confdefs.h. */
7541$ac_includes_default
7542#include <$ac_header>
7543_ACEOF
7544rm -f conftest.$ac_objext
7545if { (ac_try="$ac_compile"
7546case "(($ac_try" in
7547 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7548 *) ac_try_echo=$ac_try;;
7549esac
7550eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7551 (eval "$ac_compile") 2>conftest.er1
7552 ac_status=$?
7553 grep -v '^ *+' conftest.er1 >conftest.err
7554 rm -f conftest.er1
7555 cat conftest.err >&5
7556 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7557 (exit $ac_status); } && {
7558 test -z "$ac_c_werror_flag" ||
7559 test ! -s conftest.err
7560 } && test -s conftest.$ac_objext; then
7561 ac_header_compiler=yes
7562else
7563 echo "$as_me: failed program was:" >&5
7564sed 's/^/| /' conftest.$ac_ext >&5
7565
7566 ac_header_compiler=no
7567fi
7568
7569rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7570{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
7571echo "${ECHO_T}$ac_header_compiler" >&6; }
7572
7573# Is the header present?
7574{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
7575echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
7576cat >conftest.$ac_ext <<_ACEOF
7577/* confdefs.h. */
7578_ACEOF
7579cat confdefs.h >>conftest.$ac_ext
7580cat >>conftest.$ac_ext <<_ACEOF
7581/* end confdefs.h. */
7582#include <$ac_header>
7583_ACEOF
7584if { (ac_try="$ac_cpp conftest.$ac_ext"
7585case "(($ac_try" in
7586 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7587 *) ac_try_echo=$ac_try;;
7588esac
7589eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7590 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
7591 ac_status=$?
7592 grep -v '^ *+' conftest.er1 >conftest.err
7593 rm -f conftest.er1
7594 cat conftest.err >&5
7595 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7596 (exit $ac_status); } >/dev/null && {
7597 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
7598 test ! -s conftest.err
7599 }; then
7600 ac_header_preproc=yes
7601else
7602 echo "$as_me: failed program was:" >&5
7603sed 's/^/| /' conftest.$ac_ext >&5
7604
7605 ac_header_preproc=no
7606fi
7607
7608rm -f conftest.err conftest.$ac_ext
7609{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
7610echo "${ECHO_T}$ac_header_preproc" >&6; }
7611
7612# So? What about this header?
7613case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
7614 yes:no: )
7615 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
7616echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
7617 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
7618echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
7619 ac_header_preproc=yes
7620 ;;
7621 no:yes:* )
7622 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
7623echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
7624 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
7625echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
7626 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
7627echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
7628 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
7629echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
7630 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
7631echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
7632 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
7633echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
7634 ( cat <<\_ASBOX
7635## ------------------------------------------- ##
7636## Report this to openssh-unix-dev@mindrot.org ##
7637## ------------------------------------------- ##
7638_ASBOX
7639 ) | sed "s/^/$as_me: WARNING: /" >&2
7640 ;;
7641esac
7642{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7643echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7644if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7645 echo $ECHO_N "(cached) $ECHO_C" >&6
7646else
7647 eval "$as_ac_Header=\$ac_header_preproc"
7648fi
7649ac_res=`eval echo '${'$as_ac_Header'}'`
7650 { echo "$as_me:$LINENO: result: $ac_res" >&5
7651echo "${ECHO_T}$ac_res" >&6; }
7652
7653fi
7654if test `eval echo '${'$as_ac_Header'}'` = yes; then
7655 cat >>confdefs.h <<_ACEOF 6749 cat >>confdefs.h <<_ACEOF
7656#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6750#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
7657_ACEOF 6751_ACEOF
7658 6752
7659fi 6753fi
@@ -7662,62 +6756,17 @@ done
7662 6756
7663 6757
7664# lastlog.h requires sys/time.h to be included first on Solaris 6758# lastlog.h requires sys/time.h to be included first on Solaris
7665
7666for ac_header in lastlog.h 6759for ac_header in lastlog.h
7667do 6760do :
7668as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6761 ac_fn_c_check_header_compile "$LINENO" "lastlog.h" "ac_cv_header_lastlog_h" "
7669{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7670echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7671if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7672 echo $ECHO_N "(cached) $ECHO_C" >&6
7673else
7674 cat >conftest.$ac_ext <<_ACEOF
7675/* confdefs.h. */
7676_ACEOF
7677cat confdefs.h >>conftest.$ac_ext
7678cat >>conftest.$ac_ext <<_ACEOF
7679/* end confdefs.h. */
7680
7681#ifdef HAVE_SYS_TIME_H 6762#ifdef HAVE_SYS_TIME_H
7682# include <sys/time.h> 6763# include <sys/time.h>
7683#endif 6764#endif
7684 6765
7685 6766"
7686#include <$ac_header> 6767if test "x$ac_cv_header_lastlog_h" = xyes; then :
7687_ACEOF
7688rm -f conftest.$ac_objext
7689if { (ac_try="$ac_compile"
7690case "(($ac_try" in
7691 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7692 *) ac_try_echo=$ac_try;;
7693esac
7694eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7695 (eval "$ac_compile") 2>conftest.er1
7696 ac_status=$?
7697 grep -v '^ *+' conftest.er1 >conftest.err
7698 rm -f conftest.er1
7699 cat conftest.err >&5
7700 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7701 (exit $ac_status); } && {
7702 test -z "$ac_c_werror_flag" ||
7703 test ! -s conftest.err
7704 } && test -s conftest.$ac_objext; then
7705 eval "$as_ac_Header=yes"
7706else
7707 echo "$as_me: failed program was:" >&5
7708sed 's/^/| /' conftest.$ac_ext >&5
7709
7710 eval "$as_ac_Header=no"
7711fi
7712
7713rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7714fi
7715ac_res=`eval echo '${'$as_ac_Header'}'`
7716 { echo "$as_me:$LINENO: result: $ac_res" >&5
7717echo "${ECHO_T}$ac_res" >&6; }
7718if test `eval echo '${'$as_ac_Header'}'` = yes; then
7719 cat >>confdefs.h <<_ACEOF 6768 cat >>confdefs.h <<_ACEOF
7720#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6769#define HAVE_LASTLOG_H 1
7721_ACEOF 6770_ACEOF
7722 6771
7723fi 6772fi
@@ -7726,62 +6775,17 @@ done
7726 6775
7727 6776
7728# sys/ptms.h requires sys/stream.h to be included first on Solaris 6777# sys/ptms.h requires sys/stream.h to be included first on Solaris
7729
7730for ac_header in sys/ptms.h 6778for ac_header in sys/ptms.h
7731do 6779do :
7732as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6780 ac_fn_c_check_header_compile "$LINENO" "sys/ptms.h" "ac_cv_header_sys_ptms_h" "
7733{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7734echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7735if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7736 echo $ECHO_N "(cached) $ECHO_C" >&6
7737else
7738 cat >conftest.$ac_ext <<_ACEOF
7739/* confdefs.h. */
7740_ACEOF
7741cat confdefs.h >>conftest.$ac_ext
7742cat >>conftest.$ac_ext <<_ACEOF
7743/* end confdefs.h. */
7744
7745#ifdef HAVE_SYS_STREAM_H 6781#ifdef HAVE_SYS_STREAM_H
7746# include <sys/stream.h> 6782# include <sys/stream.h>
7747#endif 6783#endif
7748 6784
7749 6785"
7750#include <$ac_header> 6786if test "x$ac_cv_header_sys_ptms_h" = xyes; then :
7751_ACEOF
7752rm -f conftest.$ac_objext
7753if { (ac_try="$ac_compile"
7754case "(($ac_try" in
7755 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7756 *) ac_try_echo=$ac_try;;
7757esac
7758eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7759 (eval "$ac_compile") 2>conftest.er1
7760 ac_status=$?
7761 grep -v '^ *+' conftest.er1 >conftest.err
7762 rm -f conftest.er1
7763 cat conftest.err >&5
7764 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7765 (exit $ac_status); } && {
7766 test -z "$ac_c_werror_flag" ||
7767 test ! -s conftest.err
7768 } && test -s conftest.$ac_objext; then
7769 eval "$as_ac_Header=yes"
7770else
7771 echo "$as_me: failed program was:" >&5
7772sed 's/^/| /' conftest.$ac_ext >&5
7773
7774 eval "$as_ac_Header=no"
7775fi
7776
7777rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7778fi
7779ac_res=`eval echo '${'$as_ac_Header'}'`
7780 { echo "$as_me:$LINENO: result: $ac_res" >&5
7781echo "${ECHO_T}$ac_res" >&6; }
7782if test `eval echo '${'$as_ac_Header'}'` = yes; then
7783 cat >>confdefs.h <<_ACEOF 6787 cat >>confdefs.h <<_ACEOF
7784#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6788#define HAVE_SYS_PTMS_H 1
7785_ACEOF 6789_ACEOF
7786 6790
7787fi 6791fi
@@ -7790,60 +6794,15 @@ done
7790 6794
7791 6795
7792# login_cap.h requires sys/types.h on NetBSD 6796# login_cap.h requires sys/types.h on NetBSD
7793
7794for ac_header in login_cap.h 6797for ac_header in login_cap.h
7795do 6798do :
7796as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6799 ac_fn_c_check_header_compile "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "
7797{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7798echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7799if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7800 echo $ECHO_N "(cached) $ECHO_C" >&6
7801else
7802 cat >conftest.$ac_ext <<_ACEOF
7803/* confdefs.h. */
7804_ACEOF
7805cat confdefs.h >>conftest.$ac_ext
7806cat >>conftest.$ac_ext <<_ACEOF
7807/* end confdefs.h. */
7808
7809#include <sys/types.h> 6800#include <sys/types.h>
7810 6801
7811 6802"
7812#include <$ac_header> 6803if test "x$ac_cv_header_login_cap_h" = xyes; then :
7813_ACEOF
7814rm -f conftest.$ac_objext
7815if { (ac_try="$ac_compile"
7816case "(($ac_try" in
7817 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7818 *) ac_try_echo=$ac_try;;
7819esac
7820eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7821 (eval "$ac_compile") 2>conftest.er1
7822 ac_status=$?
7823 grep -v '^ *+' conftest.er1 >conftest.err
7824 rm -f conftest.er1
7825 cat conftest.err >&5
7826 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7827 (exit $ac_status); } && {
7828 test -z "$ac_c_werror_flag" ||
7829 test ! -s conftest.err
7830 } && test -s conftest.$ac_objext; then
7831 eval "$as_ac_Header=yes"
7832else
7833 echo "$as_me: failed program was:" >&5
7834sed 's/^/| /' conftest.$ac_ext >&5
7835
7836 eval "$as_ac_Header=no"
7837fi
7838
7839rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7840fi
7841ac_res=`eval echo '${'$as_ac_Header'}'`
7842 { echo "$as_me:$LINENO: result: $ac_res" >&5
7843echo "${ECHO_T}$ac_res" >&6; }
7844if test `eval echo '${'$as_ac_Header'}'` = yes; then
7845 cat >>confdefs.h <<_ACEOF 6804 cat >>confdefs.h <<_ACEOF
7846#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6805#define HAVE_LOGIN_CAP_H 1
7847_ACEOF 6806_ACEOF
7848 6807
7849fi 6808fi
@@ -7852,60 +6811,15 @@ done
7852 6811
7853 6812
7854# older BSDs need sys/param.h before sys/mount.h 6813# older BSDs need sys/param.h before sys/mount.h
7855
7856for ac_header in sys/mount.h 6814for ac_header in sys/mount.h
7857do 6815do :
7858as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6816 ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "
7859{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7860echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7861if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7862 echo $ECHO_N "(cached) $ECHO_C" >&6
7863else
7864 cat >conftest.$ac_ext <<_ACEOF
7865/* confdefs.h. */
7866_ACEOF
7867cat confdefs.h >>conftest.$ac_ext
7868cat >>conftest.$ac_ext <<_ACEOF
7869/* end confdefs.h. */
7870
7871#include <sys/param.h> 6817#include <sys/param.h>
7872 6818
7873 6819"
7874#include <$ac_header> 6820if test "x$ac_cv_header_sys_mount_h" = xyes; then :
7875_ACEOF
7876rm -f conftest.$ac_objext
7877if { (ac_try="$ac_compile"
7878case "(($ac_try" in
7879 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7880 *) ac_try_echo=$ac_try;;
7881esac
7882eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7883 (eval "$ac_compile") 2>conftest.er1
7884 ac_status=$?
7885 grep -v '^ *+' conftest.er1 >conftest.err
7886 rm -f conftest.er1
7887 cat conftest.err >&5
7888 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7889 (exit $ac_status); } && {
7890 test -z "$ac_c_werror_flag" ||
7891 test ! -s conftest.err
7892 } && test -s conftest.$ac_objext; then
7893 eval "$as_ac_Header=yes"
7894else
7895 echo "$as_me: failed program was:" >&5
7896sed 's/^/| /' conftest.$ac_ext >&5
7897
7898 eval "$as_ac_Header=no"
7899fi
7900
7901rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7902fi
7903ac_res=`eval echo '${'$as_ac_Header'}'`
7904 { echo "$as_me:$LINENO: result: $ac_res" >&5
7905echo "${ECHO_T}$ac_res" >&6; }
7906if test `eval echo '${'$as_ac_Header'}'` = yes; then
7907 cat >>confdefs.h <<_ACEOF 6821 cat >>confdefs.h <<_ACEOF
7908#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6822#define HAVE_SYS_MOUNT_H 1
7909_ACEOF 6823_ACEOF
7910 6824
7911fi 6825fi
@@ -7914,61 +6828,16 @@ done
7914 6828
7915 6829
7916# Android requires sys/socket.h to be included before sys/un.h 6830# Android requires sys/socket.h to be included before sys/un.h
7917
7918for ac_header in sys/un.h 6831for ac_header in sys/un.h
7919do 6832do :
7920as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 6833 ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "
7921{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7922echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7923if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7924 echo $ECHO_N "(cached) $ECHO_C" >&6
7925else
7926 cat >conftest.$ac_ext <<_ACEOF
7927/* confdefs.h. */
7928_ACEOF
7929cat confdefs.h >>conftest.$ac_ext
7930cat >>conftest.$ac_ext <<_ACEOF
7931/* end confdefs.h. */
7932
7933#include <sys/types.h> 6834#include <sys/types.h>
7934#include <sys/socket.h> 6835#include <sys/socket.h>
7935 6836
7936 6837"
7937#include <$ac_header> 6838if test "x$ac_cv_header_sys_un_h" = xyes; then :
7938_ACEOF
7939rm -f conftest.$ac_objext
7940if { (ac_try="$ac_compile"
7941case "(($ac_try" in
7942 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7943 *) ac_try_echo=$ac_try;;
7944esac
7945eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7946 (eval "$ac_compile") 2>conftest.er1
7947 ac_status=$?
7948 grep -v '^ *+' conftest.er1 >conftest.err
7949 rm -f conftest.er1
7950 cat conftest.err >&5
7951 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7952 (exit $ac_status); } && {
7953 test -z "$ac_c_werror_flag" ||
7954 test ! -s conftest.err
7955 } && test -s conftest.$ac_objext; then
7956 eval "$as_ac_Header=yes"
7957else
7958 echo "$as_me: failed program was:" >&5
7959sed 's/^/| /' conftest.$ac_ext >&5
7960
7961 eval "$as_ac_Header=no"
7962fi
7963
7964rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7965fi
7966ac_res=`eval echo '${'$as_ac_Header'}'`
7967 { echo "$as_me:$LINENO: result: $ac_res" >&5
7968echo "${ECHO_T}$ac_res" >&6; }
7969if test `eval echo '${'$as_ac_Header'}'` = yes; then
7970 cat >>confdefs.h <<_ACEOF 6839 cat >>confdefs.h <<_ACEOF
7971#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 6840#define HAVE_SYS_UN_H 1
7972_ACEOF 6841_ACEOF
7973 6842
7974fi 6843fi
@@ -7994,13 +6863,9 @@ case "$host" in
7994 # particularly with older versions of vac or xlc. 6863 # particularly with older versions of vac or xlc.
7995 # It also throws errors about null macro argments, but these are 6864 # It also throws errors about null macro argments, but these are
7996 # not fatal. 6865 # not fatal.
7997 { echo "$as_me:$LINENO: checking if compiler allows macro redefinitions" >&5 6866 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows macro redefinitions" >&5
7998echo $ECHO_N "checking if compiler allows macro redefinitions... $ECHO_C" >&6; } 6867$as_echo_n "checking if compiler allows macro redefinitions... " >&6; }
7999 cat >conftest.$ac_ext <<_ACEOF 6868 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8000/* confdefs.h. */
8001_ACEOF
8002cat confdefs.h >>conftest.$ac_ext
8003cat >>conftest.$ac_ext <<_ACEOF
8004/* end confdefs.h. */ 6869/* end confdefs.h. */
8005 6870
8006#define testmacro foo 6871#define testmacro foo
@@ -8013,31 +6878,12 @@ main ()
8013 return 0; 6878 return 0;
8014} 6879}
8015_ACEOF 6880_ACEOF
8016rm -f conftest.$ac_objext 6881if ac_fn_c_try_compile "$LINENO"; then :
8017if { (ac_try="$ac_compile" 6882 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
8018case "(($ac_try" in 6883$as_echo "yes" >&6; }
8019 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8020 *) ac_try_echo=$ac_try;;
8021esac
8022eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8023 (eval "$ac_compile") 2>conftest.er1
8024 ac_status=$?
8025 grep -v '^ *+' conftest.er1 >conftest.err
8026 rm -f conftest.er1
8027 cat conftest.err >&5
8028 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8029 (exit $ac_status); } && {
8030 test -z "$ac_c_werror_flag" ||
8031 test ! -s conftest.err
8032 } && test -s conftest.$ac_objext; then
8033 { echo "$as_me:$LINENO: result: yes" >&5
8034echo "${ECHO_T}yes" >&6; }
8035else 6884else
8036 echo "$as_me: failed program was:" >&5 6885 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
8037sed 's/^/| /' conftest.$ac_ext >&5 6886$as_echo "no" >&6; }
8038
8039 { echo "$as_me:$LINENO: result: no" >&5
8040echo "${ECHO_T}no" >&6; }
8041 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`" 6887 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
8042 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`" 6888 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
8043 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`" 6889 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
@@ -8045,11 +6891,10 @@ echo "${ECHO_T}no" >&6; }
8045 6891
8046 6892
8047fi 6893fi
8048
8049rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 6894rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8050 6895
8051 { echo "$as_me:$LINENO: checking how to specify blibpath for linker ($LD)" >&5 6896 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to specify blibpath for linker ($LD)" >&5
8052echo $ECHO_N "checking how to specify blibpath for linker ($LD)... $ECHO_C" >&6; } 6897$as_echo_n "checking how to specify blibpath for linker ($LD)... " >&6; }
8053 if (test -z "$blibpath"); then 6898 if (test -z "$blibpath"); then
8054 blibpath="/usr/lib:/lib" 6899 blibpath="/usr/lib:/lib"
8055 fi 6900 fi
@@ -8062,11 +6907,7 @@ echo $ECHO_N "checking how to specify blibpath for linker ($LD)... $ECHO_C" >&6;
8062 for tryflags in $flags ;do 6907 for tryflags in $flags ;do
8063 if (test -z "$blibflags"); then 6908 if (test -z "$blibflags"); then
8064 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath" 6909 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
8065 cat >conftest.$ac_ext <<_ACEOF 6910 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8066/* confdefs.h. */
8067_ACEOF
8068cat confdefs.h >>conftest.$ac_ext
8069cat >>conftest.$ac_ext <<_ACEOF
8070/* end confdefs.h. */ 6911/* end confdefs.h. */
8071 6912
8072int 6913int
@@ -8077,147 +6918,36 @@ main ()
8077 return 0; 6918 return 0;
8078} 6919}
8079_ACEOF 6920_ACEOF
8080rm -f conftest.$ac_objext conftest$ac_exeext 6921if ac_fn_c_try_link "$LINENO"; then :
8081if { (ac_try="$ac_link"
8082case "(($ac_try" in
8083 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8084 *) ac_try_echo=$ac_try;;
8085esac
8086eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8087 (eval "$ac_link") 2>conftest.er1
8088 ac_status=$?
8089 grep -v '^ *+' conftest.er1 >conftest.err
8090 rm -f conftest.er1
8091 cat conftest.err >&5
8092 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8093 (exit $ac_status); } && {
8094 test -z "$ac_c_werror_flag" ||
8095 test ! -s conftest.err
8096 } && test -s conftest$ac_exeext &&
8097 $as_test_x conftest$ac_exeext; then
8098 blibflags=$tryflags 6922 blibflags=$tryflags
8099else
8100 echo "$as_me: failed program was:" >&5
8101sed 's/^/| /' conftest.$ac_ext >&5
8102
8103
8104fi 6923fi
8105 6924rm -f core conftest.err conftest.$ac_objext \
8106rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6925 conftest$ac_exeext conftest.$ac_ext
8107 conftest$ac_exeext conftest.$ac_ext
8108 fi 6926 fi
8109 done 6927 done
8110 if (test -z "$blibflags"); then 6928 if (test -z "$blibflags"); then
8111 { echo "$as_me:$LINENO: result: not found" >&5 6929 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
8112echo "${ECHO_T}not found" >&6; } 6930$as_echo "not found" >&6; }
8113 { { echo "$as_me:$LINENO: error: *** must be able to specify blibpath on AIX - check config.log" >&5 6931 as_fn_error $? "*** must be able to specify blibpath on AIX - check config.log" "$LINENO" 5
8114echo "$as_me: error: *** must be able to specify blibpath on AIX - check config.log" >&2;}
8115 { (exit 1); exit 1; }; }
8116 else 6932 else
8117 { echo "$as_me:$LINENO: result: $blibflags" >&5 6933 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $blibflags" >&5
8118echo "${ECHO_T}$blibflags" >&6; } 6934$as_echo "$blibflags" >&6; }
8119 fi 6935 fi
8120 LDFLAGS="$saved_LDFLAGS" 6936 LDFLAGS="$saved_LDFLAGS"
8121 { echo "$as_me:$LINENO: checking for authenticate" >&5 6937 ac_fn_c_check_func "$LINENO" "authenticate" "ac_cv_func_authenticate"
8122echo $ECHO_N "checking for authenticate... $ECHO_C" >&6; } 6938if test "x$ac_cv_func_authenticate" = xyes; then :
8123if test "${ac_cv_func_authenticate+set}" = set; then
8124 echo $ECHO_N "(cached) $ECHO_C" >&6
8125else
8126 cat >conftest.$ac_ext <<_ACEOF
8127/* confdefs.h. */
8128_ACEOF
8129cat confdefs.h >>conftest.$ac_ext
8130cat >>conftest.$ac_ext <<_ACEOF
8131/* end confdefs.h. */
8132/* Define authenticate to an innocuous variant, in case <limits.h> declares authenticate.
8133 For example, HP-UX 11i <limits.h> declares gettimeofday. */
8134#define authenticate innocuous_authenticate
8135
8136/* System header to define __stub macros and hopefully few prototypes,
8137 which can conflict with char authenticate (); below.
8138 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
8139 <limits.h> exists even on freestanding compilers. */
8140 6939
8141#ifdef __STDC__ 6940$as_echo "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
8142# include <limits.h>
8143#else
8144# include <assert.h>
8145#endif
8146
8147#undef authenticate
8148
8149/* Override any GCC internal prototype to avoid an error.
8150 Use char because int might match the return type of a GCC
8151 builtin and then its argument prototype would still apply. */
8152#ifdef __cplusplus
8153extern "C"
8154#endif
8155char authenticate ();
8156/* The GNU C library defines this for functions which it implements
8157 to always fail with ENOSYS. Some functions are actually named
8158 something starting with __ and the normal name is an alias. */
8159#if defined __stub_authenticate || defined __stub___authenticate
8160choke me
8161#endif
8162
8163int
8164main ()
8165{
8166return authenticate ();
8167 ;
8168 return 0;
8169}
8170_ACEOF
8171rm -f conftest.$ac_objext conftest$ac_exeext
8172if { (ac_try="$ac_link"
8173case "(($ac_try" in
8174 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8175 *) ac_try_echo=$ac_try;;
8176esac
8177eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8178 (eval "$ac_link") 2>conftest.er1
8179 ac_status=$?
8180 grep -v '^ *+' conftest.er1 >conftest.err
8181 rm -f conftest.er1
8182 cat conftest.err >&5
8183 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8184 (exit $ac_status); } && {
8185 test -z "$ac_c_werror_flag" ||
8186 test ! -s conftest.err
8187 } && test -s conftest$ac_exeext &&
8188 $as_test_x conftest$ac_exeext; then
8189 ac_cv_func_authenticate=yes
8190else
8191 echo "$as_me: failed program was:" >&5
8192sed 's/^/| /' conftest.$ac_ext >&5
8193
8194 ac_cv_func_authenticate=no
8195fi
8196
8197rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
8198 conftest$ac_exeext conftest.$ac_ext
8199fi
8200{ echo "$as_me:$LINENO: result: $ac_cv_func_authenticate" >&5
8201echo "${ECHO_T}$ac_cv_func_authenticate" >&6; }
8202if test $ac_cv_func_authenticate = yes; then
8203
8204cat >>confdefs.h <<\_ACEOF
8205#define WITH_AIXAUTHENTICATE 1
8206_ACEOF
8207 6941
8208else 6942else
8209 { echo "$as_me:$LINENO: checking for authenticate in -ls" >&5 6943 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for authenticate in -ls" >&5
8210echo $ECHO_N "checking for authenticate in -ls... $ECHO_C" >&6; } 6944$as_echo_n "checking for authenticate in -ls... " >&6; }
8211if test "${ac_cv_lib_s_authenticate+set}" = set; then 6945if ${ac_cv_lib_s_authenticate+:} false; then :
8212 echo $ECHO_N "(cached) $ECHO_C" >&6 6946 $as_echo_n "(cached) " >&6
8213else 6947else
8214 ac_check_lib_save_LIBS=$LIBS 6948 ac_check_lib_save_LIBS=$LIBS
8215LIBS="-ls $LIBS" 6949LIBS="-ls $LIBS"
8216cat >conftest.$ac_ext <<_ACEOF 6950cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8217/* confdefs.h. */
8218_ACEOF
8219cat confdefs.h >>conftest.$ac_ext
8220cat >>conftest.$ac_ext <<_ACEOF
8221/* end confdefs.h. */ 6951/* end confdefs.h. */
8222 6952
8223/* Override any GCC internal prototype to avoid an error. 6953/* Override any GCC internal prototype to avoid an error.
@@ -8235,42 +6965,19 @@ return authenticate ();
8235 return 0; 6965 return 0;
8236} 6966}
8237_ACEOF 6967_ACEOF
8238rm -f conftest.$ac_objext conftest$ac_exeext 6968if ac_fn_c_try_link "$LINENO"; then :
8239if { (ac_try="$ac_link"
8240case "(($ac_try" in
8241 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8242 *) ac_try_echo=$ac_try;;
8243esac
8244eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8245 (eval "$ac_link") 2>conftest.er1
8246 ac_status=$?
8247 grep -v '^ *+' conftest.er1 >conftest.err
8248 rm -f conftest.er1
8249 cat conftest.err >&5
8250 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8251 (exit $ac_status); } && {
8252 test -z "$ac_c_werror_flag" ||
8253 test ! -s conftest.err
8254 } && test -s conftest$ac_exeext &&
8255 $as_test_x conftest$ac_exeext; then
8256 ac_cv_lib_s_authenticate=yes 6969 ac_cv_lib_s_authenticate=yes
8257else 6970else
8258 echo "$as_me: failed program was:" >&5 6971 ac_cv_lib_s_authenticate=no
8259sed 's/^/| /' conftest.$ac_ext >&5
8260
8261 ac_cv_lib_s_authenticate=no
8262fi 6972fi
8263 6973rm -f core conftest.err conftest.$ac_objext \
8264rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 6974 conftest$ac_exeext conftest.$ac_ext
8265 conftest$ac_exeext conftest.$ac_ext
8266LIBS=$ac_check_lib_save_LIBS 6975LIBS=$ac_check_lib_save_LIBS
8267fi 6976fi
8268{ echo "$as_me:$LINENO: result: $ac_cv_lib_s_authenticate" >&5 6977{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_s_authenticate" >&5
8269echo "${ECHO_T}$ac_cv_lib_s_authenticate" >&6; } 6978$as_echo "$ac_cv_lib_s_authenticate" >&6; }
8270if test $ac_cv_lib_s_authenticate = yes; then 6979if test "x$ac_cv_lib_s_authenticate" = xyes; then :
8271 cat >>confdefs.h <<\_ACEOF 6980 $as_echo "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
8272#define WITH_AIXAUTHENTICATE 1
8273_ACEOF
8274 6981
8275 LIBS="$LIBS -ls" 6982 LIBS="$LIBS -ls"
8276 6983
@@ -8279,410 +6986,78 @@ fi
8279 6986
8280fi 6987fi
8281 6988
8282 { echo "$as_me:$LINENO: checking whether authenticate is declared" >&5 6989 ac_fn_c_check_decl "$LINENO" "authenticate" "ac_cv_have_decl_authenticate" "#include <usersec.h>
8283echo $ECHO_N "checking whether authenticate is declared... $ECHO_C" >&6; } 6990"
8284if test "${ac_cv_have_decl_authenticate+set}" = set; then 6991if test "x$ac_cv_have_decl_authenticate" = xyes; then :
8285 echo $ECHO_N "(cached) $ECHO_C" >&6 6992 ac_have_decl=1
8286else
8287 cat >conftest.$ac_ext <<_ACEOF
8288/* confdefs.h. */
8289_ACEOF
8290cat confdefs.h >>conftest.$ac_ext
8291cat >>conftest.$ac_ext <<_ACEOF
8292/* end confdefs.h. */
8293#include <usersec.h>
8294
8295int
8296main ()
8297{
8298#ifndef authenticate
8299 (void) authenticate;
8300#endif
8301
8302 ;
8303 return 0;
8304}
8305_ACEOF
8306rm -f conftest.$ac_objext
8307if { (ac_try="$ac_compile"
8308case "(($ac_try" in
8309 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8310 *) ac_try_echo=$ac_try;;
8311esac
8312eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8313 (eval "$ac_compile") 2>conftest.er1
8314 ac_status=$?
8315 grep -v '^ *+' conftest.er1 >conftest.err
8316 rm -f conftest.er1
8317 cat conftest.err >&5
8318 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8319 (exit $ac_status); } && {
8320 test -z "$ac_c_werror_flag" ||
8321 test ! -s conftest.err
8322 } && test -s conftest.$ac_objext; then
8323 ac_cv_have_decl_authenticate=yes
8324else 6993else
8325 echo "$as_me: failed program was:" >&5 6994 ac_have_decl=0
8326sed 's/^/| /' conftest.$ac_ext >&5
8327
8328 ac_cv_have_decl_authenticate=no
8329fi
8330
8331rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8332fi 6995fi
8333{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_authenticate" >&5
8334echo "${ECHO_T}$ac_cv_have_decl_authenticate" >&6; }
8335if test $ac_cv_have_decl_authenticate = yes; then
8336 6996
8337cat >>confdefs.h <<_ACEOF 6997cat >>confdefs.h <<_ACEOF
8338#define HAVE_DECL_AUTHENTICATE 1 6998#define HAVE_DECL_AUTHENTICATE $ac_have_decl
8339_ACEOF
8340
8341
8342else
8343 cat >>confdefs.h <<_ACEOF
8344#define HAVE_DECL_AUTHENTICATE 0
8345_ACEOF 6999_ACEOF
8346 7000ac_fn_c_check_decl "$LINENO" "loginrestrictions" "ac_cv_have_decl_loginrestrictions" "#include <usersec.h>
8347 7001"
8348fi 7002if test "x$ac_cv_have_decl_loginrestrictions" = xyes; then :
8349{ echo "$as_me:$LINENO: checking whether loginrestrictions is declared" >&5 7003 ac_have_decl=1
8350echo $ECHO_N "checking whether loginrestrictions is declared... $ECHO_C" >&6; }
8351if test "${ac_cv_have_decl_loginrestrictions+set}" = set; then
8352 echo $ECHO_N "(cached) $ECHO_C" >&6
8353else
8354 cat >conftest.$ac_ext <<_ACEOF
8355/* confdefs.h. */
8356_ACEOF
8357cat confdefs.h >>conftest.$ac_ext
8358cat >>conftest.$ac_ext <<_ACEOF
8359/* end confdefs.h. */
8360#include <usersec.h>
8361
8362int
8363main ()
8364{
8365#ifndef loginrestrictions
8366 (void) loginrestrictions;
8367#endif
8368
8369 ;
8370 return 0;
8371}
8372_ACEOF
8373rm -f conftest.$ac_objext
8374if { (ac_try="$ac_compile"
8375case "(($ac_try" in
8376 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8377 *) ac_try_echo=$ac_try;;
8378esac
8379eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8380 (eval "$ac_compile") 2>conftest.er1
8381 ac_status=$?
8382 grep -v '^ *+' conftest.er1 >conftest.err
8383 rm -f conftest.er1
8384 cat conftest.err >&5
8385 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8386 (exit $ac_status); } && {
8387 test -z "$ac_c_werror_flag" ||
8388 test ! -s conftest.err
8389 } && test -s conftest.$ac_objext; then
8390 ac_cv_have_decl_loginrestrictions=yes
8391else 7004else
8392 echo "$as_me: failed program was:" >&5 7005 ac_have_decl=0
8393sed 's/^/| /' conftest.$ac_ext >&5
8394
8395 ac_cv_have_decl_loginrestrictions=no
8396fi 7006fi
8397 7007
8398rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8399fi
8400{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_loginrestrictions" >&5
8401echo "${ECHO_T}$ac_cv_have_decl_loginrestrictions" >&6; }
8402if test $ac_cv_have_decl_loginrestrictions = yes; then
8403
8404cat >>confdefs.h <<_ACEOF 7008cat >>confdefs.h <<_ACEOF
8405#define HAVE_DECL_LOGINRESTRICTIONS 1 7009#define HAVE_DECL_LOGINRESTRICTIONS $ac_have_decl
8406_ACEOF
8407
8408
8409else
8410 cat >>confdefs.h <<_ACEOF
8411#define HAVE_DECL_LOGINRESTRICTIONS 0
8412_ACEOF
8413
8414
8415fi
8416{ echo "$as_me:$LINENO: checking whether loginsuccess is declared" >&5
8417echo $ECHO_N "checking whether loginsuccess is declared... $ECHO_C" >&6; }
8418if test "${ac_cv_have_decl_loginsuccess+set}" = set; then
8419 echo $ECHO_N "(cached) $ECHO_C" >&6
8420else
8421 cat >conftest.$ac_ext <<_ACEOF
8422/* confdefs.h. */
8423_ACEOF
8424cat confdefs.h >>conftest.$ac_ext
8425cat >>conftest.$ac_ext <<_ACEOF
8426/* end confdefs.h. */
8427#include <usersec.h>
8428
8429int
8430main ()
8431{
8432#ifndef loginsuccess
8433 (void) loginsuccess;
8434#endif
8435
8436 ;
8437 return 0;
8438}
8439_ACEOF 7010_ACEOF
8440rm -f conftest.$ac_objext 7011ac_fn_c_check_decl "$LINENO" "loginsuccess" "ac_cv_have_decl_loginsuccess" "#include <usersec.h>
8441if { (ac_try="$ac_compile" 7012"
8442case "(($ac_try" in 7013if test "x$ac_cv_have_decl_loginsuccess" = xyes; then :
8443 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 7014 ac_have_decl=1
8444 *) ac_try_echo=$ac_try;;
8445esac
8446eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8447 (eval "$ac_compile") 2>conftest.er1
8448 ac_status=$?
8449 grep -v '^ *+' conftest.er1 >conftest.err
8450 rm -f conftest.er1
8451 cat conftest.err >&5
8452 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8453 (exit $ac_status); } && {
8454 test -z "$ac_c_werror_flag" ||
8455 test ! -s conftest.err
8456 } && test -s conftest.$ac_objext; then
8457 ac_cv_have_decl_loginsuccess=yes
8458else 7015else
8459 echo "$as_me: failed program was:" >&5 7016 ac_have_decl=0
8460sed 's/^/| /' conftest.$ac_ext >&5
8461
8462 ac_cv_have_decl_loginsuccess=no
8463fi 7017fi
8464 7018
8465rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8466fi
8467{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_loginsuccess" >&5
8468echo "${ECHO_T}$ac_cv_have_decl_loginsuccess" >&6; }
8469if test $ac_cv_have_decl_loginsuccess = yes; then
8470
8471cat >>confdefs.h <<_ACEOF 7019cat >>confdefs.h <<_ACEOF
8472#define HAVE_DECL_LOGINSUCCESS 1 7020#define HAVE_DECL_LOGINSUCCESS $ac_have_decl
8473_ACEOF
8474
8475
8476else
8477 cat >>confdefs.h <<_ACEOF
8478#define HAVE_DECL_LOGINSUCCESS 0
8479_ACEOF
8480
8481
8482fi
8483{ echo "$as_me:$LINENO: checking whether passwdexpired is declared" >&5
8484echo $ECHO_N "checking whether passwdexpired is declared... $ECHO_C" >&6; }
8485if test "${ac_cv_have_decl_passwdexpired+set}" = set; then
8486 echo $ECHO_N "(cached) $ECHO_C" >&6
8487else
8488 cat >conftest.$ac_ext <<_ACEOF
8489/* confdefs.h. */
8490_ACEOF
8491cat confdefs.h >>conftest.$ac_ext
8492cat >>conftest.$ac_ext <<_ACEOF
8493/* end confdefs.h. */
8494#include <usersec.h>
8495
8496int
8497main ()
8498{
8499#ifndef passwdexpired
8500 (void) passwdexpired;
8501#endif
8502
8503 ;
8504 return 0;
8505}
8506_ACEOF 7021_ACEOF
8507rm -f conftest.$ac_objext 7022ac_fn_c_check_decl "$LINENO" "passwdexpired" "ac_cv_have_decl_passwdexpired" "#include <usersec.h>
8508if { (ac_try="$ac_compile" 7023"
8509case "(($ac_try" in 7024if test "x$ac_cv_have_decl_passwdexpired" = xyes; then :
8510 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 7025 ac_have_decl=1
8511 *) ac_try_echo=$ac_try;;
8512esac
8513eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8514 (eval "$ac_compile") 2>conftest.er1
8515 ac_status=$?
8516 grep -v '^ *+' conftest.er1 >conftest.err
8517 rm -f conftest.er1
8518 cat conftest.err >&5
8519 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8520 (exit $ac_status); } && {
8521 test -z "$ac_c_werror_flag" ||
8522 test ! -s conftest.err
8523 } && test -s conftest.$ac_objext; then
8524 ac_cv_have_decl_passwdexpired=yes
8525else 7026else
8526 echo "$as_me: failed program was:" >&5 7027 ac_have_decl=0
8527sed 's/^/| /' conftest.$ac_ext >&5
8528
8529 ac_cv_have_decl_passwdexpired=no
8530fi 7028fi
8531 7029
8532rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8533fi
8534{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_passwdexpired" >&5
8535echo "${ECHO_T}$ac_cv_have_decl_passwdexpired" >&6; }
8536if test $ac_cv_have_decl_passwdexpired = yes; then
8537
8538cat >>confdefs.h <<_ACEOF 7030cat >>confdefs.h <<_ACEOF
8539#define HAVE_DECL_PASSWDEXPIRED 1 7031#define HAVE_DECL_PASSWDEXPIRED $ac_have_decl
8540_ACEOF
8541
8542
8543else
8544 cat >>confdefs.h <<_ACEOF
8545#define HAVE_DECL_PASSWDEXPIRED 0
8546_ACEOF
8547
8548
8549fi
8550{ echo "$as_me:$LINENO: checking whether setauthdb is declared" >&5
8551echo $ECHO_N "checking whether setauthdb is declared... $ECHO_C" >&6; }
8552if test "${ac_cv_have_decl_setauthdb+set}" = set; then
8553 echo $ECHO_N "(cached) $ECHO_C" >&6
8554else
8555 cat >conftest.$ac_ext <<_ACEOF
8556/* confdefs.h. */
8557_ACEOF
8558cat confdefs.h >>conftest.$ac_ext
8559cat >>conftest.$ac_ext <<_ACEOF
8560/* end confdefs.h. */
8561#include <usersec.h>
8562
8563int
8564main ()
8565{
8566#ifndef setauthdb
8567 (void) setauthdb;
8568#endif
8569
8570 ;
8571 return 0;
8572}
8573_ACEOF 7032_ACEOF
8574rm -f conftest.$ac_objext 7033ac_fn_c_check_decl "$LINENO" "setauthdb" "ac_cv_have_decl_setauthdb" "#include <usersec.h>
8575if { (ac_try="$ac_compile" 7034"
8576case "(($ac_try" in 7035if test "x$ac_cv_have_decl_setauthdb" = xyes; then :
8577 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 7036 ac_have_decl=1
8578 *) ac_try_echo=$ac_try;;
8579esac
8580eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8581 (eval "$ac_compile") 2>conftest.er1
8582 ac_status=$?
8583 grep -v '^ *+' conftest.er1 >conftest.err
8584 rm -f conftest.er1
8585 cat conftest.err >&5
8586 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8587 (exit $ac_status); } && {
8588 test -z "$ac_c_werror_flag" ||
8589 test ! -s conftest.err
8590 } && test -s conftest.$ac_objext; then
8591 ac_cv_have_decl_setauthdb=yes
8592else 7037else
8593 echo "$as_me: failed program was:" >&5 7038 ac_have_decl=0
8594sed 's/^/| /' conftest.$ac_ext >&5
8595
8596 ac_cv_have_decl_setauthdb=no
8597fi 7039fi
8598 7040
8599rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8600fi
8601{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_setauthdb" >&5
8602echo "${ECHO_T}$ac_cv_have_decl_setauthdb" >&6; }
8603if test $ac_cv_have_decl_setauthdb = yes; then
8604
8605cat >>confdefs.h <<_ACEOF 7041cat >>confdefs.h <<_ACEOF
8606#define HAVE_DECL_SETAUTHDB 1 7042#define HAVE_DECL_SETAUTHDB $ac_have_decl
8607_ACEOF
8608
8609
8610else
8611 cat >>confdefs.h <<_ACEOF
8612#define HAVE_DECL_SETAUTHDB 0
8613_ACEOF
8614
8615
8616fi
8617
8618
8619 { echo "$as_me:$LINENO: checking whether loginfailed is declared" >&5
8620echo $ECHO_N "checking whether loginfailed is declared... $ECHO_C" >&6; }
8621if test "${ac_cv_have_decl_loginfailed+set}" = set; then
8622 echo $ECHO_N "(cached) $ECHO_C" >&6
8623else
8624 cat >conftest.$ac_ext <<_ACEOF
8625/* confdefs.h. */
8626_ACEOF 7043_ACEOF
8627cat confdefs.h >>conftest.$ac_ext
8628cat >>conftest.$ac_ext <<_ACEOF
8629/* end confdefs.h. */
8630#include <usersec.h>
8631
8632 7044
8633int 7045 ac_fn_c_check_decl "$LINENO" "loginfailed" "ac_cv_have_decl_loginfailed" "#include <usersec.h>
8634main ()
8635{
8636#ifndef loginfailed
8637 (void) loginfailed;
8638#endif
8639 7046
8640 ; 7047"
8641 return 0; 7048if test "x$ac_cv_have_decl_loginfailed" = xyes; then :
8642} 7049 ac_have_decl=1
8643_ACEOF
8644rm -f conftest.$ac_objext
8645if { (ac_try="$ac_compile"
8646case "(($ac_try" in
8647 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8648 *) ac_try_echo=$ac_try;;
8649esac
8650eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8651 (eval "$ac_compile") 2>conftest.er1
8652 ac_status=$?
8653 grep -v '^ *+' conftest.er1 >conftest.err
8654 rm -f conftest.er1
8655 cat conftest.err >&5
8656 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8657 (exit $ac_status); } && {
8658 test -z "$ac_c_werror_flag" ||
8659 test ! -s conftest.err
8660 } && test -s conftest.$ac_objext; then
8661 ac_cv_have_decl_loginfailed=yes
8662else 7050else
8663 echo "$as_me: failed program was:" >&5 7051 ac_have_decl=0
8664sed 's/^/| /' conftest.$ac_ext >&5
8665
8666 ac_cv_have_decl_loginfailed=no
8667fi
8668
8669rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8670fi 7052fi
8671{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_loginfailed" >&5
8672echo "${ECHO_T}$ac_cv_have_decl_loginfailed" >&6; }
8673if test $ac_cv_have_decl_loginfailed = yes; then
8674 7053
8675cat >>confdefs.h <<_ACEOF 7054cat >>confdefs.h <<_ACEOF
8676#define HAVE_DECL_LOGINFAILED 1 7055#define HAVE_DECL_LOGINFAILED $ac_have_decl
8677_ACEOF
8678
8679{ echo "$as_me:$LINENO: checking if loginfailed takes 4 arguments" >&5
8680echo $ECHO_N "checking if loginfailed takes 4 arguments... $ECHO_C" >&6; }
8681 cat >conftest.$ac_ext <<_ACEOF
8682/* confdefs.h. */
8683_ACEOF 7056_ACEOF
8684cat confdefs.h >>conftest.$ac_ext 7057if test $ac_have_decl = 1; then :
8685cat >>conftest.$ac_ext <<_ACEOF 7058 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if loginfailed takes 4 arguments" >&5
7059$as_echo_n "checking if loginfailed takes 4 arguments... " >&6; }
7060 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8686/* end confdefs.h. */ 7061/* end confdefs.h. */
8687 #include <usersec.h> 7062 #include <usersec.h>
8688int 7063int
@@ -8693,328 +7068,119 @@ main ()
8693 return 0; 7068 return 0;
8694} 7069}
8695_ACEOF 7070_ACEOF
8696rm -f conftest.$ac_objext 7071if ac_fn_c_try_compile "$LINENO"; then :
8697if { (ac_try="$ac_compile" 7072 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
8698case "(($ac_try" in 7073$as_echo "yes" >&6; }
8699 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8700 *) ac_try_echo=$ac_try;;
8701esac
8702eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8703 (eval "$ac_compile") 2>conftest.er1
8704 ac_status=$?
8705 grep -v '^ *+' conftest.er1 >conftest.err
8706 rm -f conftest.er1
8707 cat conftest.err >&5
8708 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8709 (exit $ac_status); } && {
8710 test -z "$ac_c_werror_flag" ||
8711 test ! -s conftest.err
8712 } && test -s conftest.$ac_objext; then
8713 { echo "$as_me:$LINENO: result: yes" >&5
8714echo "${ECHO_T}yes" >&6; }
8715 7074
8716cat >>confdefs.h <<\_ACEOF 7075$as_echo "#define AIX_LOGINFAILED_4ARG 1" >>confdefs.h
8717#define AIX_LOGINFAILED_4ARG 1
8718_ACEOF
8719 7076
8720else 7077else
8721 echo "$as_me: failed program was:" >&5 7078 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
8722sed 's/^/| /' conftest.$ac_ext >&5 7079$as_echo "no" >&6; }
8723
8724 { echo "$as_me:$LINENO: result: no" >&5
8725echo "${ECHO_T}no" >&6; }
8726 7080
8727fi 7081fi
8728
8729rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 7082rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8730else
8731 cat >>confdefs.h <<_ACEOF
8732#define HAVE_DECL_LOGINFAILED 0
8733_ACEOF
8734
8735
8736fi
8737
8738
8739
8740
8741for ac_func in getgrset setauthdb
8742do
8743as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
8744{ echo "$as_me:$LINENO: checking for $ac_func" >&5
8745echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
8746if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
8747 echo $ECHO_N "(cached) $ECHO_C" >&6
8748else
8749 cat >conftest.$ac_ext <<_ACEOF
8750/* confdefs.h. */
8751_ACEOF
8752cat confdefs.h >>conftest.$ac_ext
8753cat >>conftest.$ac_ext <<_ACEOF
8754/* end confdefs.h. */
8755/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
8756 For example, HP-UX 11i <limits.h> declares gettimeofday. */
8757#define $ac_func innocuous_$ac_func
8758
8759/* System header to define __stub macros and hopefully few prototypes,
8760 which can conflict with char $ac_func (); below.
8761 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
8762 <limits.h> exists even on freestanding compilers. */
8763
8764#ifdef __STDC__
8765# include <limits.h>
8766#else
8767# include <assert.h>
8768#endif
8769
8770#undef $ac_func
8771
8772/* Override any GCC internal prototype to avoid an error.
8773 Use char because int might match the return type of a GCC
8774 builtin and then its argument prototype would still apply. */
8775#ifdef __cplusplus
8776extern "C"
8777#endif
8778char $ac_func ();
8779/* The GNU C library defines this for functions which it implements
8780 to always fail with ENOSYS. Some functions are actually named
8781 something starting with __ and the normal name is an alias. */
8782#if defined __stub_$ac_func || defined __stub___$ac_func
8783choke me
8784#endif
8785
8786int
8787main ()
8788{
8789return $ac_func ();
8790 ;
8791 return 0;
8792}
8793_ACEOF
8794rm -f conftest.$ac_objext conftest$ac_exeext
8795if { (ac_try="$ac_link"
8796case "(($ac_try" in
8797 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8798 *) ac_try_echo=$ac_try;;
8799esac
8800eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8801 (eval "$ac_link") 2>conftest.er1
8802 ac_status=$?
8803 grep -v '^ *+' conftest.er1 >conftest.err
8804 rm -f conftest.er1
8805 cat conftest.err >&5
8806 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8807 (exit $ac_status); } && {
8808 test -z "$ac_c_werror_flag" ||
8809 test ! -s conftest.err
8810 } && test -s conftest$ac_exeext &&
8811 $as_test_x conftest$ac_exeext; then
8812 eval "$as_ac_var=yes"
8813else
8814 echo "$as_me: failed program was:" >&5
8815sed 's/^/| /' conftest.$ac_ext >&5
8816
8817 eval "$as_ac_var=no"
8818fi 7083fi
8819 7084
8820rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7085 for ac_func in getgrset setauthdb
8821 conftest$ac_exeext conftest.$ac_ext 7086do :
8822fi 7087 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
8823ac_res=`eval echo '${'$as_ac_var'}'` 7088ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
8824 { echo "$as_me:$LINENO: result: $ac_res" >&5 7089if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
8825echo "${ECHO_T}$ac_res" >&6; }
8826if test `eval echo '${'$as_ac_var'}'` = yes; then
8827 cat >>confdefs.h <<_ACEOF 7090 cat >>confdefs.h <<_ACEOF
8828#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 7091#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
8829_ACEOF 7092_ACEOF
8830 7093
8831fi 7094fi
8832done 7095done
8833 7096
8834 { echo "$as_me:$LINENO: checking whether F_CLOSEM is declared" >&5 7097 ac_fn_c_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" " #include <limits.h>
8835echo $ECHO_N "checking whether F_CLOSEM is declared... $ECHO_C" >&6; }
8836if test "${ac_cv_have_decl_F_CLOSEM+set}" = set; then
8837 echo $ECHO_N "(cached) $ECHO_C" >&6
8838else
8839 cat >conftest.$ac_ext <<_ACEOF
8840/* confdefs.h. */
8841_ACEOF
8842cat confdefs.h >>conftest.$ac_ext
8843cat >>conftest.$ac_ext <<_ACEOF
8844/* end confdefs.h. */
8845 #include <limits.h>
8846 #include <fcntl.h> 7098 #include <fcntl.h>
8847 7099
7100"
7101if test "x$ac_cv_have_decl_F_CLOSEM" = xyes; then :
8848 7102
8849int 7103$as_echo "#define HAVE_FCNTL_CLOSEM 1" >>confdefs.h
8850main ()
8851{
8852#ifndef F_CLOSEM
8853 (void) F_CLOSEM;
8854#endif
8855
8856 ;
8857 return 0;
8858}
8859_ACEOF
8860rm -f conftest.$ac_objext
8861if { (ac_try="$ac_compile"
8862case "(($ac_try" in
8863 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8864 *) ac_try_echo=$ac_try;;
8865esac
8866eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8867 (eval "$ac_compile") 2>conftest.er1
8868 ac_status=$?
8869 grep -v '^ *+' conftest.er1 >conftest.err
8870 rm -f conftest.er1
8871 cat conftest.err >&5
8872 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8873 (exit $ac_status); } && {
8874 test -z "$ac_c_werror_flag" ||
8875 test ! -s conftest.err
8876 } && test -s conftest.$ac_objext; then
8877 ac_cv_have_decl_F_CLOSEM=yes
8878else
8879 echo "$as_me: failed program was:" >&5
8880sed 's/^/| /' conftest.$ac_ext >&5
8881
8882 ac_cv_have_decl_F_CLOSEM=no
8883fi
8884
8885rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8886fi
8887{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_F_CLOSEM" >&5
8888echo "${ECHO_T}$ac_cv_have_decl_F_CLOSEM" >&6; }
8889if test $ac_cv_have_decl_F_CLOSEM = yes; then
8890
8891cat >>confdefs.h <<\_ACEOF
8892#define HAVE_FCNTL_CLOSEM 1
8893_ACEOF
8894 7104
8895fi 7105fi
8896 7106
8897 check_for_aix_broken_getaddrinfo=1 7107 check_for_aix_broken_getaddrinfo=1
8898 7108
8899cat >>confdefs.h <<\_ACEOF 7109$as_echo "#define BROKEN_REALPATH 1" >>confdefs.h
8900#define BROKEN_REALPATH 1
8901_ACEOF
8902 7110
8903 7111
8904cat >>confdefs.h <<\_ACEOF 7112$as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
8905#define SETEUID_BREAKS_SETUID 1
8906_ACEOF
8907 7113
8908 7114
8909cat >>confdefs.h <<\_ACEOF 7115$as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
8910#define BROKEN_SETREUID 1
8911_ACEOF
8912 7116
8913 7117
8914cat >>confdefs.h <<\_ACEOF 7118$as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
8915#define BROKEN_SETREGID 1
8916_ACEOF
8917 7119
8918 7120
8919cat >>confdefs.h <<\_ACEOF 7121$as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
8920#define DISABLE_LASTLOG 1
8921_ACEOF
8922 7122
8923 7123
8924cat >>confdefs.h <<\_ACEOF 7124$as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
8925#define LOGIN_NEEDS_UTMPX 1
8926_ACEOF
8927 7125
8928 7126
8929cat >>confdefs.h <<\_ACEOF 7127$as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
8930#define SPT_TYPE SPT_REUSEARGV
8931_ACEOF
8932 7128
8933 7129
8934cat >>confdefs.h <<\_ACEOF 7130$as_echo "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
8935#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1
8936_ACEOF
8937 7131
8938 7132
8939cat >>confdefs.h <<\_ACEOF 7133$as_echo "#define PTY_ZEROREAD 1" >>confdefs.h
8940#define PTY_ZEROREAD 1
8941_ACEOF
8942 7134
8943 7135
8944cat >>confdefs.h <<\_ACEOF 7136$as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
8945#define PLATFORM_SYS_DIR_UID 2
8946_ACEOF
8947 7137
8948 ;; 7138 ;;
8949*-*-android*) 7139*-*-android*)
8950 7140
8951cat >>confdefs.h <<\_ACEOF 7141$as_echo "#define DISABLE_UTMP 1" >>confdefs.h
8952#define DISABLE_UTMP 1
8953_ACEOF
8954 7142
8955 7143
8956cat >>confdefs.h <<\_ACEOF 7144$as_echo "#define DISABLE_WTMP 1" >>confdefs.h
8957#define DISABLE_WTMP 1
8958_ACEOF
8959 7145
8960 ;; 7146 ;;
8961*-*-cygwin*) 7147*-*-cygwin*)
8962 check_for_libcrypt_later=1 7148 check_for_libcrypt_later=1
8963 LIBS="$LIBS /usr/lib/textreadmode.o" 7149 LIBS="$LIBS /usr/lib/textreadmode.o"
8964 7150
8965cat >>confdefs.h <<\_ACEOF 7151$as_echo "#define HAVE_CYGWIN 1" >>confdefs.h
8966#define HAVE_CYGWIN 1
8967_ACEOF
8968 7152
8969 7153
8970cat >>confdefs.h <<\_ACEOF 7154$as_echo "#define USE_PIPES 1" >>confdefs.h
8971#define USE_PIPES 1
8972_ACEOF
8973 7155
8974 7156
8975cat >>confdefs.h <<\_ACEOF 7157$as_echo "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
8976#define NO_UID_RESTORATION_TEST 1
8977_ACEOF
8978 7158
8979 7159
8980cat >>confdefs.h <<\_ACEOF 7160$as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
8981#define DISABLE_SHADOW 1
8982_ACEOF
8983 7161
8984 7162
8985cat >>confdefs.h <<\_ACEOF 7163$as_echo "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
8986#define NO_X11_UNIX_SOCKETS 1
8987_ACEOF
8988 7164
8989 7165
8990cat >>confdefs.h <<\_ACEOF 7166$as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
8991#define DISABLE_FD_PASSING 1
8992_ACEOF
8993 7167
8994 7168
8995cat >>confdefs.h <<\_ACEOF 7169$as_echo "#define SSH_IOBUFSZ 65535" >>confdefs.h
8996#define SSH_IOBUFSZ 65535
8997_ACEOF
8998 7170
8999 7171
9000cat >>confdefs.h <<\_ACEOF 7172$as_echo "#define FILESYSTEM_NO_BACKSLASH 1" >>confdefs.h
9001#define FILESYSTEM_NO_BACKSLASH 1
9002_ACEOF
9003 7173
9004 # Cygwin defines optargs, optargs as declspec(dllimport) for historical 7174 # Cygwin defines optargs, optargs as declspec(dllimport) for historical
9005 # reasons which cause compile warnings, so we disable those warnings. 7175 # reasons which cause compile warnings, so we disable those warnings.
9006 { 7176 {
9007 { echo "$as_me:$LINENO: checking if $CC supports compile flag -Wno-attributes" >&5 7177 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wno-attributes" >&5
9008echo $ECHO_N "checking if $CC supports compile flag -Wno-attributes... $ECHO_C" >&6; } 7178$as_echo_n "checking if $CC supports compile flag -Wno-attributes... " >&6; }
9009 saved_CFLAGS="$CFLAGS" 7179 saved_CFLAGS="$CFLAGS"
9010 CFLAGS="$CFLAGS $WERROR -Wno-attributes" 7180 CFLAGS="$CFLAGS $WERROR -Wno-attributes"
9011 _define_flag="" 7181 _define_flag=""
9012 test "x$_define_flag" = "x" && _define_flag="-Wno-attributes" 7182 test "x$_define_flag" = "x" && _define_flag="-Wno-attributes"
9013 cat >conftest.$ac_ext <<_ACEOF 7183 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9014/* confdefs.h. */
9015_ACEOF
9016cat confdefs.h >>conftest.$ac_ext
9017cat >>conftest.$ac_ext <<_ACEOF
9018/* end confdefs.h. */ 7184/* end confdefs.h. */
9019 7185
9020#include <stdlib.h> 7186#include <stdlib.h>
@@ -9030,79 +7196,47 @@ int main(int argc, char **argv) {
9030} 7196}
9031 7197
9032_ACEOF 7198_ACEOF
9033rm -f conftest.$ac_objext 7199if ac_fn_c_try_compile "$LINENO"; then :
9034if { (ac_try="$ac_compile"
9035case "(($ac_try" in
9036 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9037 *) ac_try_echo=$ac_try;;
9038esac
9039eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9040 (eval "$ac_compile") 2>conftest.er1
9041 ac_status=$?
9042 grep -v '^ *+' conftest.er1 >conftest.err
9043 rm -f conftest.er1
9044 cat conftest.err >&5
9045 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9046 (exit $ac_status); } && {
9047 test -z "$ac_c_werror_flag" ||
9048 test ! -s conftest.err
9049 } && test -s conftest.$ac_objext; then
9050 7200
9051if `grep -i "unrecognized option" conftest.err >/dev/null` 7201if `grep -i "unrecognized option" conftest.err >/dev/null`
9052then 7202then
9053 { echo "$as_me:$LINENO: result: no" >&5 7203 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
9054echo "${ECHO_T}no" >&6; } 7204$as_echo "no" >&6; }
9055 CFLAGS="$saved_CFLAGS" 7205 CFLAGS="$saved_CFLAGS"
9056else 7206else
9057 { echo "$as_me:$LINENO: result: yes" >&5 7207 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
9058echo "${ECHO_T}yes" >&6; } 7208$as_echo "yes" >&6; }
9059 CFLAGS="$saved_CFLAGS $_define_flag" 7209 CFLAGS="$saved_CFLAGS $_define_flag"
9060fi 7210fi
9061else 7211else
9062 echo "$as_me: failed program was:" >&5 7212 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
9063sed 's/^/| /' conftest.$ac_ext >&5 7213$as_echo "no" >&6; }
9064
9065 { echo "$as_me:$LINENO: result: no" >&5
9066echo "${ECHO_T}no" >&6; }
9067 CFLAGS="$saved_CFLAGS" 7214 CFLAGS="$saved_CFLAGS"
9068 7215
9069fi 7216fi
9070
9071rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 7217rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9072} 7218}
9073 ;; 7219 ;;
9074*-*-dgux*) 7220*-*-dgux*)
9075 7221
9076cat >>confdefs.h <<\_ACEOF 7222$as_echo "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
9077#define IP_TOS_IS_BROKEN 1
9078_ACEOF
9079 7223
9080 cat >>confdefs.h <<\_ACEOF 7224 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
9081#define SETEUID_BREAKS_SETUID 1
9082_ACEOF
9083 7225
9084 cat >>confdefs.h <<\_ACEOF 7226 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
9085#define BROKEN_SETREUID 1
9086_ACEOF
9087 7227
9088 cat >>confdefs.h <<\_ACEOF 7228 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
9089#define BROKEN_SETREGID 1
9090_ACEOF
9091 7229
9092 ;; 7230 ;;
9093*-*-darwin*) 7231*-*-darwin*)
9094 use_pie=auto 7232 use_pie=auto
9095 { echo "$as_me:$LINENO: checking if we have working getaddrinfo" >&5 7233 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have working getaddrinfo" >&5
9096echo $ECHO_N "checking if we have working getaddrinfo... $ECHO_C" >&6; } 7234$as_echo_n "checking if we have working getaddrinfo... " >&6; }
9097 if test "$cross_compiling" = yes; then 7235 if test "$cross_compiling" = yes; then :
9098 { echo "$as_me:$LINENO: result: assume it is working" >&5 7236 { $as_echo "$as_me:${as_lineno-$LINENO}: result: assume it is working" >&5
9099echo "${ECHO_T}assume it is working" >&6; } 7237$as_echo "assume it is working" >&6; }
9100else 7238else
9101 cat >conftest.$ac_ext <<_ACEOF 7239 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9102/* confdefs.h. */
9103_ACEOF
9104cat confdefs.h >>conftest.$ac_ext
9105cat >>conftest.$ac_ext <<_ACEOF
9106/* end confdefs.h. */ 7240/* end confdefs.h. */
9107 #include <mach-o/dyld.h> 7241 #include <mach-o/dyld.h>
9108main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 7242main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
@@ -9112,63 +7246,29 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
9112} 7246}
9113 7247
9114_ACEOF 7248_ACEOF
9115rm -f conftest$ac_exeext 7249if ac_fn_c_try_run "$LINENO"; then :
9116if { (ac_try="$ac_link" 7250 { $as_echo "$as_me:${as_lineno-$LINENO}: result: working" >&5
9117case "(($ac_try" in 7251$as_echo "working" >&6; }
9118 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9119 *) ac_try_echo=$ac_try;;
9120esac
9121eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9122 (eval "$ac_link") 2>&5
9123 ac_status=$?
9124 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9125 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
9126 { (case "(($ac_try" in
9127 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9128 *) ac_try_echo=$ac_try;;
9129esac
9130eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9131 (eval "$ac_try") 2>&5
9132 ac_status=$?
9133 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9134 (exit $ac_status); }; }; then
9135 { echo "$as_me:$LINENO: result: working" >&5
9136echo "${ECHO_T}working" >&6; }
9137else 7252else
9138 echo "$as_me: program exited with status $ac_status" >&5 7253 { $as_echo "$as_me:${as_lineno-$LINENO}: result: buggy" >&5
9139echo "$as_me: failed program was:" >&5 7254$as_echo "buggy" >&6; }
9140sed 's/^/| /' conftest.$ac_ext >&5
9141
9142( exit $ac_status )
9143{ echo "$as_me:$LINENO: result: buggy" >&5
9144echo "${ECHO_T}buggy" >&6; }
9145 7255
9146cat >>confdefs.h <<\_ACEOF 7256$as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
9147#define BROKEN_GETADDRINFO 1
9148_ACEOF
9149 7257
9150 7258
9151fi 7259fi
9152rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 7260rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
7261 conftest.$ac_objext conftest.beam conftest.$ac_ext
9153fi 7262fi
9154 7263
7264 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
9155 7265
9156 cat >>confdefs.h <<\_ACEOF 7266 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
9157#define SETEUID_BREAKS_SETUID 1
9158_ACEOF
9159 7267
9160 cat >>confdefs.h <<\_ACEOF 7268 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
9161#define BROKEN_SETREUID 1
9162_ACEOF
9163 7269
9164 cat >>confdefs.h <<\_ACEOF
9165#define BROKEN_SETREGID 1
9166_ACEOF
9167 7270
9168 7271$as_echo "#define BROKEN_GLOB 1" >>confdefs.h
9169cat >>confdefs.h <<\_ACEOF
9170#define BROKEN_GLOB 1
9171_ACEOF
9172 7272
9173 7273
9174cat >>confdefs.h <<_ACEOF 7274cat >>confdefs.h <<_ACEOF
@@ -9176,346 +7276,63 @@ cat >>confdefs.h <<_ACEOF
9176_ACEOF 7276_ACEOF
9177 7277
9178 7278
9179cat >>confdefs.h <<\_ACEOF 7279$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
9180#define SSH_TUN_FREEBSD 1
9181_ACEOF
9182
9183
9184cat >>confdefs.h <<\_ACEOF
9185#define SSH_TUN_COMPAT_AF 1
9186_ACEOF
9187 7280
9188 7281
9189cat >>confdefs.h <<\_ACEOF 7282$as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
9190#define SSH_TUN_PREPEND_AF 1
9191_ACEOF
9192 7283
9193 7284
9194 { echo "$as_me:$LINENO: checking whether AU_IPv4 is declared" >&5 7285$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
9195echo $ECHO_N "checking whether AU_IPv4 is declared... $ECHO_C" >&6; }
9196if test "${ac_cv_have_decl_AU_IPv4+set}" = set; then
9197 echo $ECHO_N "(cached) $ECHO_C" >&6
9198else
9199 cat >conftest.$ac_ext <<_ACEOF
9200/* confdefs.h. */
9201_ACEOF
9202cat confdefs.h >>conftest.$ac_ext
9203cat >>conftest.$ac_ext <<_ACEOF
9204/* end confdefs.h. */
9205$ac_includes_default
9206int
9207main ()
9208{
9209#ifndef AU_IPv4
9210 (void) AU_IPv4;
9211#endif
9212 7286
9213 ;
9214 return 0;
9215}
9216_ACEOF
9217rm -f conftest.$ac_objext
9218if { (ac_try="$ac_compile"
9219case "(($ac_try" in
9220 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9221 *) ac_try_echo=$ac_try;;
9222esac
9223eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9224 (eval "$ac_compile") 2>conftest.er1
9225 ac_status=$?
9226 grep -v '^ *+' conftest.er1 >conftest.err
9227 rm -f conftest.er1
9228 cat conftest.err >&5
9229 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9230 (exit $ac_status); } && {
9231 test -z "$ac_c_werror_flag" ||
9232 test ! -s conftest.err
9233 } && test -s conftest.$ac_objext; then
9234 ac_cv_have_decl_AU_IPv4=yes
9235else
9236 echo "$as_me: failed program was:" >&5
9237sed 's/^/| /' conftest.$ac_ext >&5
9238 7287
9239 ac_cv_have_decl_AU_IPv4=no 7288 ac_fn_c_check_decl "$LINENO" "AU_IPv4" "ac_cv_have_decl_AU_IPv4" "$ac_includes_default"
9240fi 7289if test "x$ac_cv_have_decl_AU_IPv4" = xyes; then :
9241 7290
9242rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9243fi
9244{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_AU_IPv4" >&5
9245echo "${ECHO_T}$ac_cv_have_decl_AU_IPv4" >&6; }
9246if test $ac_cv_have_decl_AU_IPv4 = yes; then
9247 :
9248else 7291else
9249 7292
9250cat >>confdefs.h <<\_ACEOF 7293$as_echo "#define AU_IPv4 0" >>confdefs.h
9251#define AU_IPv4 0
9252_ACEOF
9253 7294
9254 #include <bsm/audit.h> 7295 #include <bsm/audit.h>
9255 7296
9256cat >>confdefs.h <<\_ACEOF 7297$as_echo "#define LASTLOG_WRITE_PUTUTXLINE 1" >>confdefs.h
9257#define LASTLOG_WRITE_PUTUTXLINE 1
9258_ACEOF
9259 7298
9260 7299
9261fi 7300fi
9262 7301
9263 7302
9264cat >>confdefs.h <<\_ACEOF 7303$as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
9265#define SPT_TYPE SPT_REUSEARGV
9266_ACEOF
9267
9268
9269for ac_func in sandbox_init
9270do
9271as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
9272{ echo "$as_me:$LINENO: checking for $ac_func" >&5
9273echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
9274if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
9275 echo $ECHO_N "(cached) $ECHO_C" >&6
9276else
9277 cat >conftest.$ac_ext <<_ACEOF
9278/* confdefs.h. */
9279_ACEOF
9280cat confdefs.h >>conftest.$ac_ext
9281cat >>conftest.$ac_ext <<_ACEOF
9282/* end confdefs.h. */
9283/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
9284 For example, HP-UX 11i <limits.h> declares gettimeofday. */
9285#define $ac_func innocuous_$ac_func
9286
9287/* System header to define __stub macros and hopefully few prototypes,
9288 which can conflict with char $ac_func (); below.
9289 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
9290 <limits.h> exists even on freestanding compilers. */
9291 7304
9292#ifdef __STDC__ 7305 for ac_func in sandbox_init
9293# include <limits.h> 7306do :
9294#else 7307 ac_fn_c_check_func "$LINENO" "sandbox_init" "ac_cv_func_sandbox_init"
9295# include <assert.h> 7308if test "x$ac_cv_func_sandbox_init" = xyes; then :
9296#endif
9297
9298#undef $ac_func
9299
9300/* Override any GCC internal prototype to avoid an error.
9301 Use char because int might match the return type of a GCC
9302 builtin and then its argument prototype would still apply. */
9303#ifdef __cplusplus
9304extern "C"
9305#endif
9306char $ac_func ();
9307/* The GNU C library defines this for functions which it implements
9308 to always fail with ENOSYS. Some functions are actually named
9309 something starting with __ and the normal name is an alias. */
9310#if defined __stub_$ac_func || defined __stub___$ac_func
9311choke me
9312#endif
9313
9314int
9315main ()
9316{
9317return $ac_func ();
9318 ;
9319 return 0;
9320}
9321_ACEOF
9322rm -f conftest.$ac_objext conftest$ac_exeext
9323if { (ac_try="$ac_link"
9324case "(($ac_try" in
9325 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9326 *) ac_try_echo=$ac_try;;
9327esac
9328eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9329 (eval "$ac_link") 2>conftest.er1
9330 ac_status=$?
9331 grep -v '^ *+' conftest.er1 >conftest.err
9332 rm -f conftest.er1
9333 cat conftest.err >&5
9334 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9335 (exit $ac_status); } && {
9336 test -z "$ac_c_werror_flag" ||
9337 test ! -s conftest.err
9338 } && test -s conftest$ac_exeext &&
9339 $as_test_x conftest$ac_exeext; then
9340 eval "$as_ac_var=yes"
9341else
9342 echo "$as_me: failed program was:" >&5
9343sed 's/^/| /' conftest.$ac_ext >&5
9344
9345 eval "$as_ac_var=no"
9346fi
9347
9348rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
9349 conftest$ac_exeext conftest.$ac_ext
9350fi
9351ac_res=`eval echo '${'$as_ac_var'}'`
9352 { echo "$as_me:$LINENO: result: $ac_res" >&5
9353echo "${ECHO_T}$ac_res" >&6; }
9354if test `eval echo '${'$as_ac_var'}'` = yes; then
9355 cat >>confdefs.h <<_ACEOF 7309 cat >>confdefs.h <<_ACEOF
9356#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 7310#define HAVE_SANDBOX_INIT 1
9357_ACEOF 7311_ACEOF
9358 7312
9359fi 7313fi
9360done 7314done
9361 7315
9362 7316 for ac_header in sandbox.h
9363for ac_header in sandbox.h 7317do :
9364do 7318 ac_fn_c_check_header_mongrel "$LINENO" "sandbox.h" "ac_cv_header_sandbox_h" "$ac_includes_default"
9365as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 7319if test "x$ac_cv_header_sandbox_h" = xyes; then :
9366if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9367 { echo "$as_me:$LINENO: checking for $ac_header" >&5
9368echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9369if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9370 echo $ECHO_N "(cached) $ECHO_C" >&6
9371fi
9372ac_res=`eval echo '${'$as_ac_Header'}'`
9373 { echo "$as_me:$LINENO: result: $ac_res" >&5
9374echo "${ECHO_T}$ac_res" >&6; }
9375else
9376 # Is the header compilable?
9377{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
9378echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
9379cat >conftest.$ac_ext <<_ACEOF
9380/* confdefs.h. */
9381_ACEOF
9382cat confdefs.h >>conftest.$ac_ext
9383cat >>conftest.$ac_ext <<_ACEOF
9384/* end confdefs.h. */
9385$ac_includes_default
9386#include <$ac_header>
9387_ACEOF
9388rm -f conftest.$ac_objext
9389if { (ac_try="$ac_compile"
9390case "(($ac_try" in
9391 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9392 *) ac_try_echo=$ac_try;;
9393esac
9394eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9395 (eval "$ac_compile") 2>conftest.er1
9396 ac_status=$?
9397 grep -v '^ *+' conftest.er1 >conftest.err
9398 rm -f conftest.er1
9399 cat conftest.err >&5
9400 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9401 (exit $ac_status); } && {
9402 test -z "$ac_c_werror_flag" ||
9403 test ! -s conftest.err
9404 } && test -s conftest.$ac_objext; then
9405 ac_header_compiler=yes
9406else
9407 echo "$as_me: failed program was:" >&5
9408sed 's/^/| /' conftest.$ac_ext >&5
9409
9410 ac_header_compiler=no
9411fi
9412
9413rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9414{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
9415echo "${ECHO_T}$ac_header_compiler" >&6; }
9416
9417# Is the header present?
9418{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
9419echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
9420cat >conftest.$ac_ext <<_ACEOF
9421/* confdefs.h. */
9422_ACEOF
9423cat confdefs.h >>conftest.$ac_ext
9424cat >>conftest.$ac_ext <<_ACEOF
9425/* end confdefs.h. */
9426#include <$ac_header>
9427_ACEOF
9428if { (ac_try="$ac_cpp conftest.$ac_ext"
9429case "(($ac_try" in
9430 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9431 *) ac_try_echo=$ac_try;;
9432esac
9433eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9434 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
9435 ac_status=$?
9436 grep -v '^ *+' conftest.er1 >conftest.err
9437 rm -f conftest.er1
9438 cat conftest.err >&5
9439 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9440 (exit $ac_status); } >/dev/null && {
9441 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
9442 test ! -s conftest.err
9443 }; then
9444 ac_header_preproc=yes
9445else
9446 echo "$as_me: failed program was:" >&5
9447sed 's/^/| /' conftest.$ac_ext >&5
9448
9449 ac_header_preproc=no
9450fi
9451
9452rm -f conftest.err conftest.$ac_ext
9453{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
9454echo "${ECHO_T}$ac_header_preproc" >&6; }
9455
9456# So? What about this header?
9457case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
9458 yes:no: )
9459 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
9460echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
9461 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
9462echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
9463 ac_header_preproc=yes
9464 ;;
9465 no:yes:* )
9466 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
9467echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
9468 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
9469echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
9470 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
9471echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
9472 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
9473echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
9474 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
9475echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
9476 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
9477echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
9478 ( cat <<\_ASBOX
9479## ------------------------------------------- ##
9480## Report this to openssh-unix-dev@mindrot.org ##
9481## ------------------------------------------- ##
9482_ASBOX
9483 ) | sed "s/^/$as_me: WARNING: /" >&2
9484 ;;
9485esac
9486{ echo "$as_me:$LINENO: checking for $ac_header" >&5
9487echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9488if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9489 echo $ECHO_N "(cached) $ECHO_C" >&6
9490else
9491 eval "$as_ac_Header=\$ac_header_preproc"
9492fi
9493ac_res=`eval echo '${'$as_ac_Header'}'`
9494 { echo "$as_me:$LINENO: result: $ac_res" >&5
9495echo "${ECHO_T}$ac_res" >&6; }
9496
9497fi
9498if test `eval echo '${'$as_ac_Header'}'` = yes; then
9499 cat >>confdefs.h <<_ACEOF 7320 cat >>confdefs.h <<_ACEOF
9500#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 7321#define HAVE_SANDBOX_H 1
9501_ACEOF 7322_ACEOF
9502 7323
9503fi 7324fi
9504 7325
9505done 7326done
9506 7327
9507 { echo "$as_me:$LINENO: checking for sandbox_apply in -lsandbox" >&5 7328 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sandbox_apply in -lsandbox" >&5
9508echo $ECHO_N "checking for sandbox_apply in -lsandbox... $ECHO_C" >&6; } 7329$as_echo_n "checking for sandbox_apply in -lsandbox... " >&6; }
9509if test "${ac_cv_lib_sandbox_sandbox_apply+set}" = set; then 7330if ${ac_cv_lib_sandbox_sandbox_apply+:} false; then :
9510 echo $ECHO_N "(cached) $ECHO_C" >&6 7331 $as_echo_n "(cached) " >&6
9511else 7332else
9512 ac_check_lib_save_LIBS=$LIBS 7333 ac_check_lib_save_LIBS=$LIBS
9513LIBS="-lsandbox $LIBS" 7334LIBS="-lsandbox $LIBS"
9514cat >conftest.$ac_ext <<_ACEOF 7335cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9515/* confdefs.h. */
9516_ACEOF
9517cat confdefs.h >>conftest.$ac_ext
9518cat >>conftest.$ac_ext <<_ACEOF
9519/* end confdefs.h. */ 7336/* end confdefs.h. */
9520 7337
9521/* Override any GCC internal prototype to avoid an error. 7338/* Override any GCC internal prototype to avoid an error.
@@ -9533,39 +7350,18 @@ return sandbox_apply ();
9533 return 0; 7350 return 0;
9534} 7351}
9535_ACEOF 7352_ACEOF
9536rm -f conftest.$ac_objext conftest$ac_exeext 7353if ac_fn_c_try_link "$LINENO"; then :
9537if { (ac_try="$ac_link"
9538case "(($ac_try" in
9539 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9540 *) ac_try_echo=$ac_try;;
9541esac
9542eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9543 (eval "$ac_link") 2>conftest.er1
9544 ac_status=$?
9545 grep -v '^ *+' conftest.er1 >conftest.err
9546 rm -f conftest.er1
9547 cat conftest.err >&5
9548 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9549 (exit $ac_status); } && {
9550 test -z "$ac_c_werror_flag" ||
9551 test ! -s conftest.err
9552 } && test -s conftest$ac_exeext &&
9553 $as_test_x conftest$ac_exeext; then
9554 ac_cv_lib_sandbox_sandbox_apply=yes 7354 ac_cv_lib_sandbox_sandbox_apply=yes
9555else 7355else
9556 echo "$as_me: failed program was:" >&5 7356 ac_cv_lib_sandbox_sandbox_apply=no
9557sed 's/^/| /' conftest.$ac_ext >&5
9558
9559 ac_cv_lib_sandbox_sandbox_apply=no
9560fi 7357fi
9561 7358rm -f core conftest.err conftest.$ac_objext \
9562rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7359 conftest$ac_exeext conftest.$ac_ext
9563 conftest$ac_exeext conftest.$ac_ext
9564LIBS=$ac_check_lib_save_LIBS 7360LIBS=$ac_check_lib_save_LIBS
9565fi 7361fi
9566{ echo "$as_me:$LINENO: result: $ac_cv_lib_sandbox_sandbox_apply" >&5 7362{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sandbox_sandbox_apply" >&5
9567echo "${ECHO_T}$ac_cv_lib_sandbox_sandbox_apply" >&6; } 7363$as_echo "$ac_cv_lib_sandbox_sandbox_apply" >&6; }
9568if test $ac_cv_lib_sandbox_sandbox_apply = yes; then 7364if test "x$ac_cv_lib_sandbox_sandbox_apply" = xyes; then :
9569 7365
9570 SSHDLIBS="$SSHDLIBS -lsandbox" 7366 SSHDLIBS="$SSHDLIBS -lsandbox"
9571 7367
@@ -9577,20 +7373,15 @@ fi
9577 TEST_MALLOC_OPTIONS="AFGJPRX" 7373 TEST_MALLOC_OPTIONS="AFGJPRX"
9578 ;; 7374 ;;
9579*-*-haiku*) 7375*-*-haiku*)
9580 LIBS="$LIBS -lbsd " 7376 LIBS="$LIBS -lbsd "
9581 7377 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
9582{ echo "$as_me:$LINENO: checking for socket in -lnetwork" >&5 7378$as_echo_n "checking for socket in -lnetwork... " >&6; }
9583echo $ECHO_N "checking for socket in -lnetwork... $ECHO_C" >&6; } 7379if ${ac_cv_lib_network_socket+:} false; then :
9584if test "${ac_cv_lib_network_socket+set}" = set; then 7380 $as_echo_n "(cached) " >&6
9585 echo $ECHO_N "(cached) $ECHO_C" >&6
9586else 7381else
9587 ac_check_lib_save_LIBS=$LIBS 7382 ac_check_lib_save_LIBS=$LIBS
9588LIBS="-lnetwork $LIBS" 7383LIBS="-lnetwork $LIBS"
9589cat >conftest.$ac_ext <<_ACEOF 7384cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9590/* confdefs.h. */
9591_ACEOF
9592cat confdefs.h >>conftest.$ac_ext
9593cat >>conftest.$ac_ext <<_ACEOF
9594/* end confdefs.h. */ 7385/* end confdefs.h. */
9595 7386
9596/* Override any GCC internal prototype to avoid an error. 7387/* Override any GCC internal prototype to avoid an error.
@@ -9608,39 +7399,18 @@ return socket ();
9608 return 0; 7399 return 0;
9609} 7400}
9610_ACEOF 7401_ACEOF
9611rm -f conftest.$ac_objext conftest$ac_exeext 7402if ac_fn_c_try_link "$LINENO"; then :
9612if { (ac_try="$ac_link"
9613case "(($ac_try" in
9614 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9615 *) ac_try_echo=$ac_try;;
9616esac
9617eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9618 (eval "$ac_link") 2>conftest.er1
9619 ac_status=$?
9620 grep -v '^ *+' conftest.er1 >conftest.err
9621 rm -f conftest.er1
9622 cat conftest.err >&5
9623 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9624 (exit $ac_status); } && {
9625 test -z "$ac_c_werror_flag" ||
9626 test ! -s conftest.err
9627 } && test -s conftest$ac_exeext &&
9628 $as_test_x conftest$ac_exeext; then
9629 ac_cv_lib_network_socket=yes 7403 ac_cv_lib_network_socket=yes
9630else 7404else
9631 echo "$as_me: failed program was:" >&5 7405 ac_cv_lib_network_socket=no
9632sed 's/^/| /' conftest.$ac_ext >&5
9633
9634 ac_cv_lib_network_socket=no
9635fi 7406fi
9636 7407rm -f core conftest.err conftest.$ac_objext \
9637rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7408 conftest$ac_exeext conftest.$ac_ext
9638 conftest$ac_exeext conftest.$ac_ext
9639LIBS=$ac_check_lib_save_LIBS 7409LIBS=$ac_check_lib_save_LIBS
9640fi 7410fi
9641{ echo "$as_me:$LINENO: result: $ac_cv_lib_network_socket" >&5 7411{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
9642echo "${ECHO_T}$ac_cv_lib_network_socket" >&6; } 7412$as_echo "$ac_cv_lib_network_socket" >&6; }
9643if test $ac_cv_lib_network_socket = yes; then 7413if test "x$ac_cv_lib_network_socket" = xyes; then :
9644 cat >>confdefs.h <<_ACEOF 7414 cat >>confdefs.h <<_ACEOF
9645#define HAVE_LIBNETWORK 1 7415#define HAVE_LIBNETWORK 1
9646_ACEOF 7416_ACEOF
@@ -9649,58 +7419,36 @@ _ACEOF
9649 7419
9650fi 7420fi
9651 7421
9652 cat >>confdefs.h <<\_ACEOF 7422 $as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
9653#define HAVE_U_INT64_T 1
9654_ACEOF
9655 7423
9656 MANTYPE=man 7424 MANTYPE=man
9657 ;; 7425 ;;
9658*-*-hpux*) 7426*-*-hpux*)
9659 # first we define all of the options common to all HP-UX releases 7427 # first we define all of the options common to all HP-UX releases
9660 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" 7428 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
9661 IPADDR_IN_DISPLAY=yes 7429 IPADDR_IN_DISPLAY=yes
9662 cat >>confdefs.h <<\_ACEOF 7430 $as_echo "#define USE_PIPES 1" >>confdefs.h
9663#define USE_PIPES 1
9664_ACEOF
9665 7431
7432 $as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
9666 7433
9667cat >>confdefs.h <<\_ACEOF
9668#define LOGIN_NO_ENDOPT 1
9669_ACEOF
9670 7434
9671 cat >>confdefs.h <<\_ACEOF 7435$as_echo "#define LOCKED_PASSWD_STRING \"*\"" >>confdefs.h
9672#define LOGIN_NEEDS_UTMPX 1
9673_ACEOF
9674 7436
7437 $as_echo "#define SPT_TYPE SPT_PSTAT" >>confdefs.h
9675 7438
9676cat >>confdefs.h <<\_ACEOF
9677#define LOCKED_PASSWD_STRING "*"
9678_ACEOF
9679 7439
9680 cat >>confdefs.h <<\_ACEOF 7440$as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
9681#define SPT_TYPE SPT_PSTAT
9682_ACEOF
9683
9684
9685cat >>confdefs.h <<\_ACEOF
9686#define PLATFORM_SYS_DIR_UID 2
9687_ACEOF
9688 7441
9689 maildir="/var/mail" 7442 maildir="/var/mail"
9690 LIBS="$LIBS -lsec" 7443 LIBS="$LIBS -lsec"
9691 7444 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_error in -lxnet" >&5
9692{ echo "$as_me:$LINENO: checking for t_error in -lxnet" >&5 7445$as_echo_n "checking for t_error in -lxnet... " >&6; }
9693echo $ECHO_N "checking for t_error in -lxnet... $ECHO_C" >&6; } 7446if ${ac_cv_lib_xnet_t_error+:} false; then :
9694if test "${ac_cv_lib_xnet_t_error+set}" = set; then 7447 $as_echo_n "(cached) " >&6
9695 echo $ECHO_N "(cached) $ECHO_C" >&6
9696else 7448else
9697 ac_check_lib_save_LIBS=$LIBS 7449 ac_check_lib_save_LIBS=$LIBS
9698LIBS="-lxnet $LIBS" 7450LIBS="-lxnet $LIBS"
9699cat >conftest.$ac_ext <<_ACEOF 7451cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9700/* confdefs.h. */
9701_ACEOF
9702cat confdefs.h >>conftest.$ac_ext
9703cat >>conftest.$ac_ext <<_ACEOF
9704/* end confdefs.h. */ 7452/* end confdefs.h. */
9705 7453
9706/* Override any GCC internal prototype to avoid an error. 7454/* Override any GCC internal prototype to avoid an error.
@@ -9718,39 +7466,18 @@ return t_error ();
9718 return 0; 7466 return 0;
9719} 7467}
9720_ACEOF 7468_ACEOF
9721rm -f conftest.$ac_objext conftest$ac_exeext 7469if ac_fn_c_try_link "$LINENO"; then :
9722if { (ac_try="$ac_link"
9723case "(($ac_try" in
9724 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9725 *) ac_try_echo=$ac_try;;
9726esac
9727eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9728 (eval "$ac_link") 2>conftest.er1
9729 ac_status=$?
9730 grep -v '^ *+' conftest.er1 >conftest.err
9731 rm -f conftest.er1
9732 cat conftest.err >&5
9733 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9734 (exit $ac_status); } && {
9735 test -z "$ac_c_werror_flag" ||
9736 test ! -s conftest.err
9737 } && test -s conftest$ac_exeext &&
9738 $as_test_x conftest$ac_exeext; then
9739 ac_cv_lib_xnet_t_error=yes 7470 ac_cv_lib_xnet_t_error=yes
9740else 7471else
9741 echo "$as_me: failed program was:" >&5 7472 ac_cv_lib_xnet_t_error=no
9742sed 's/^/| /' conftest.$ac_ext >&5
9743
9744 ac_cv_lib_xnet_t_error=no
9745fi 7473fi
9746 7474rm -f core conftest.err conftest.$ac_objext \
9747rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7475 conftest$ac_exeext conftest.$ac_ext
9748 conftest$ac_exeext conftest.$ac_ext
9749LIBS=$ac_check_lib_save_LIBS 7476LIBS=$ac_check_lib_save_LIBS
9750fi 7477fi
9751{ echo "$as_me:$LINENO: result: $ac_cv_lib_xnet_t_error" >&5 7478{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xnet_t_error" >&5
9752echo "${ECHO_T}$ac_cv_lib_xnet_t_error" >&6; } 7479$as_echo "$ac_cv_lib_xnet_t_error" >&6; }
9753if test $ac_cv_lib_xnet_t_error = yes; then 7480if test "x$ac_cv_lib_xnet_t_error" = xyes; then :
9754 cat >>confdefs.h <<_ACEOF 7481 cat >>confdefs.h <<_ACEOF
9755#define HAVE_LIBXNET 1 7482#define HAVE_LIBXNET 1
9756_ACEOF 7483_ACEOF
@@ -9758,9 +7485,7 @@ _ACEOF
9758 LIBS="-lxnet $LIBS" 7485 LIBS="-lxnet $LIBS"
9759 7486
9760else 7487else
9761 { { echo "$as_me:$LINENO: error: *** -lxnet needed on HP-UX - check config.log ***" >&5 7488 as_fn_error $? "*** -lxnet needed on HP-UX - check config.log ***" "$LINENO" 5
9762echo "$as_me: error: *** -lxnet needed on HP-UX - check config.log ***" >&2;}
9763 { (exit 1); exit 1; }; }
9764fi 7489fi
9765 7490
9766 7491
@@ -9773,19 +7498,13 @@ fi
9773 ;; 7498 ;;
9774 *-*-hpux11*) 7499 *-*-hpux11*)
9775 7500
9776cat >>confdefs.h <<\_ACEOF 7501$as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
9777#define PAM_SUN_CODEBASE 1
9778_ACEOF
9779 7502
9780 7503
9781cat >>confdefs.h <<\_ACEOF 7504$as_echo "#define DISABLE_UTMP 1" >>confdefs.h
9782#define DISABLE_UTMP 1
9783_ACEOF
9784 7505
9785 7506
9786cat >>confdefs.h <<\_ACEOF 7507$as_echo "#define USE_BTMP 1" >>confdefs.h
9787#define USE_BTMP 1
9788_ACEOF
9789 7508
9790 check_for_hpux_broken_getaddrinfo=1 7509 check_for_hpux_broken_getaddrinfo=1
9791 check_for_conflicting_getspnam=1 7510 check_for_conflicting_getspnam=1
@@ -9796,9 +7515,7 @@ _ACEOF
9796 case "$host" in 7515 case "$host" in
9797 *-*-hpux10.26) 7516 *-*-hpux10.26)
9798 7517
9799cat >>confdefs.h <<\_ACEOF 7518$as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
9800#define HAVE_SECUREWARE 1
9801_ACEOF
9802 7519
9803 disable_ptmx_check=yes 7520 disable_ptmx_check=yes
9804 LIBS="$LIBS -lsecpw" 7521 LIBS="$LIBS -lsecpw"
@@ -9808,191 +7525,67 @@ _ACEOF
9808*-*-irix5*) 7525*-*-irix5*)
9809 PATH="$PATH:/usr/etc" 7526 PATH="$PATH:/usr/etc"
9810 7527
9811cat >>confdefs.h <<\_ACEOF 7528$as_echo "#define BROKEN_INET_NTOA 1" >>confdefs.h
9812#define BROKEN_INET_NTOA 1
9813_ACEOF
9814 7529
9815 cat >>confdefs.h <<\_ACEOF 7530 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
9816#define SETEUID_BREAKS_SETUID 1
9817_ACEOF
9818 7531
9819 cat >>confdefs.h <<\_ACEOF 7532 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
9820#define BROKEN_SETREUID 1
9821_ACEOF
9822 7533
9823 cat >>confdefs.h <<\_ACEOF 7534 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
9824#define BROKEN_SETREGID 1
9825_ACEOF
9826 7535
9827 7536
9828cat >>confdefs.h <<\_ACEOF 7537$as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
9829#define WITH_ABBREV_NO_TTY 1
9830_ACEOF
9831 7538
9832 cat >>confdefs.h <<\_ACEOF 7539 $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
9833#define LOCKED_PASSWD_STRING "*LK*"
9834_ACEOF
9835 7540
9836 ;; 7541 ;;
9837*-*-irix6*) 7542*-*-irix6*)
9838 PATH="$PATH:/usr/etc" 7543 PATH="$PATH:/usr/etc"
9839 7544
9840cat >>confdefs.h <<\_ACEOF 7545$as_echo "#define WITH_IRIX_ARRAY 1" >>confdefs.h
9841#define WITH_IRIX_ARRAY 1
9842_ACEOF
9843
9844 7546
9845cat >>confdefs.h <<\_ACEOF
9846#define WITH_IRIX_PROJECT 1
9847_ACEOF
9848
9849
9850cat >>confdefs.h <<\_ACEOF
9851#define WITH_IRIX_AUDIT 1
9852_ACEOF
9853
9854 { echo "$as_me:$LINENO: checking for jlimit_startjob" >&5
9855echo $ECHO_N "checking for jlimit_startjob... $ECHO_C" >&6; }
9856if test "${ac_cv_func_jlimit_startjob+set}" = set; then
9857 echo $ECHO_N "(cached) $ECHO_C" >&6
9858else
9859 cat >conftest.$ac_ext <<_ACEOF
9860/* confdefs.h. */
9861_ACEOF
9862cat confdefs.h >>conftest.$ac_ext
9863cat >>conftest.$ac_ext <<_ACEOF
9864/* end confdefs.h. */
9865/* Define jlimit_startjob to an innocuous variant, in case <limits.h> declares jlimit_startjob.
9866 For example, HP-UX 11i <limits.h> declares gettimeofday. */
9867#define jlimit_startjob innocuous_jlimit_startjob
9868
9869/* System header to define __stub macros and hopefully few prototypes,
9870 which can conflict with char jlimit_startjob (); below.
9871 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
9872 <limits.h> exists even on freestanding compilers. */
9873 7547
9874#ifdef __STDC__ 7548$as_echo "#define WITH_IRIX_PROJECT 1" >>confdefs.h
9875# include <limits.h>
9876#else
9877# include <assert.h>
9878#endif
9879
9880#undef jlimit_startjob
9881
9882/* Override any GCC internal prototype to avoid an error.
9883 Use char because int might match the return type of a GCC
9884 builtin and then its argument prototype would still apply. */
9885#ifdef __cplusplus
9886extern "C"
9887#endif
9888char jlimit_startjob ();
9889/* The GNU C library defines this for functions which it implements
9890 to always fail with ENOSYS. Some functions are actually named
9891 something starting with __ and the normal name is an alias. */
9892#if defined __stub_jlimit_startjob || defined __stub___jlimit_startjob
9893choke me
9894#endif
9895 7549
9896int
9897main ()
9898{
9899return jlimit_startjob ();
9900 ;
9901 return 0;
9902}
9903_ACEOF
9904rm -f conftest.$ac_objext conftest$ac_exeext
9905if { (ac_try="$ac_link"
9906case "(($ac_try" in
9907 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9908 *) ac_try_echo=$ac_try;;
9909esac
9910eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9911 (eval "$ac_link") 2>conftest.er1
9912 ac_status=$?
9913 grep -v '^ *+' conftest.er1 >conftest.err
9914 rm -f conftest.er1
9915 cat conftest.err >&5
9916 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9917 (exit $ac_status); } && {
9918 test -z "$ac_c_werror_flag" ||
9919 test ! -s conftest.err
9920 } && test -s conftest$ac_exeext &&
9921 $as_test_x conftest$ac_exeext; then
9922 ac_cv_func_jlimit_startjob=yes
9923else
9924 echo "$as_me: failed program was:" >&5
9925sed 's/^/| /' conftest.$ac_ext >&5
9926 7550
9927 ac_cv_func_jlimit_startjob=no 7551$as_echo "#define WITH_IRIX_AUDIT 1" >>confdefs.h
9928fi
9929 7552
9930rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7553 ac_fn_c_check_func "$LINENO" "jlimit_startjob" "ac_cv_func_jlimit_startjob"
9931 conftest$ac_exeext conftest.$ac_ext 7554if test "x$ac_cv_func_jlimit_startjob" = xyes; then :
9932fi
9933{ echo "$as_me:$LINENO: result: $ac_cv_func_jlimit_startjob" >&5
9934echo "${ECHO_T}$ac_cv_func_jlimit_startjob" >&6; }
9935if test $ac_cv_func_jlimit_startjob = yes; then
9936 7555
9937cat >>confdefs.h <<\_ACEOF 7556$as_echo "#define WITH_IRIX_JOBS 1" >>confdefs.h
9938#define WITH_IRIX_JOBS 1
9939_ACEOF
9940 7557
9941fi 7558fi
9942 7559
9943 cat >>confdefs.h <<\_ACEOF 7560 $as_echo "#define BROKEN_INET_NTOA 1" >>confdefs.h
9944#define BROKEN_INET_NTOA 1
9945_ACEOF
9946 7561
9947 cat >>confdefs.h <<\_ACEOF 7562 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
9948#define SETEUID_BREAKS_SETUID 1
9949_ACEOF
9950 7563
9951 cat >>confdefs.h <<\_ACEOF 7564 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
9952#define BROKEN_SETREUID 1
9953_ACEOF
9954 7565
9955 cat >>confdefs.h <<\_ACEOF 7566 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
9956#define BROKEN_SETREGID 1
9957_ACEOF
9958 7567
9959 7568
9960cat >>confdefs.h <<\_ACEOF 7569$as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
9961#define BROKEN_UPDWTMPX 1
9962_ACEOF
9963 7570
9964 cat >>confdefs.h <<\_ACEOF 7571 $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
9965#define WITH_ABBREV_NO_TTY 1
9966_ACEOF
9967 7572
9968 cat >>confdefs.h <<\_ACEOF 7573 $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
9969#define LOCKED_PASSWD_STRING "*LK*"
9970_ACEOF
9971 7574
9972 ;; 7575 ;;
9973*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) 7576*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
9974 check_for_libcrypt_later=1 7577 check_for_libcrypt_later=1
9975 cat >>confdefs.h <<\_ACEOF 7578 $as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
9976#define PAM_TTY_KLUDGE 1
9977_ACEOF
9978 7579
9979 cat >>confdefs.h <<\_ACEOF 7580 $as_echo "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
9980#define LOCKED_PASSWD_PREFIX "!"
9981_ACEOF
9982 7581
9983 cat >>confdefs.h <<\_ACEOF 7582 $as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
9984#define SPT_TYPE SPT_REUSEARGV
9985_ACEOF
9986 7583
9987 7584
9988cat >>confdefs.h <<\_ACEOF 7585$as_echo "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
9989#define _PATH_BTMP "/var/log/btmp"
9990_ACEOF
9991 7586
9992 7587
9993cat >>confdefs.h <<\_ACEOF 7588$as_echo "#define USE_BTMP 1" >>confdefs.h
9994#define USE_BTMP 1
9995_ACEOF
9996 7589
9997 ;; 7590 ;;
9998*-*-linux*) 7591*-*-linux*)
@@ -10001,188 +7594,39 @@ _ACEOF
10001 check_for_libcrypt_later=1 7594 check_for_libcrypt_later=1
10002 check_for_openpty_ctty_bug=1 7595 check_for_openpty_ctty_bug=1
10003 7596
10004cat >>confdefs.h <<\_ACEOF 7597$as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
10005#define PAM_TTY_KLUDGE 1
10006_ACEOF
10007 7598
10008 7599
10009cat >>confdefs.h <<\_ACEOF 7600$as_echo "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
10010#define LOCKED_PASSWD_PREFIX "!"
10011_ACEOF
10012 7601
10013 cat >>confdefs.h <<\_ACEOF 7602 $as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
10014#define SPT_TYPE SPT_REUSEARGV
10015_ACEOF
10016 7603
10017 7604
10018cat >>confdefs.h <<\_ACEOF 7605$as_echo "#define LINK_OPNOTSUPP_ERRNO EPERM" >>confdefs.h
10019#define LINK_OPNOTSUPP_ERRNO EPERM
10020_ACEOF
10021 7606
10022 7607
10023cat >>confdefs.h <<\_ACEOF 7608$as_echo "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
10024#define _PATH_BTMP "/var/log/btmp"
10025_ACEOF
10026 7609
10027 cat >>confdefs.h <<\_ACEOF 7610 $as_echo "#define USE_BTMP 1" >>confdefs.h
10028#define USE_BTMP 1
10029_ACEOF
10030 7611
10031 7612
10032cat >>confdefs.h <<\_ACEOF 7613$as_echo "#define LINUX_OOM_ADJUST 1" >>confdefs.h
10033#define LINUX_OOM_ADJUST 1
10034_ACEOF
10035 7614
10036 inet6_default_4in6=yes 7615 inet6_default_4in6=yes
10037 case `uname -r` in 7616 case `uname -r` in
10038 1.*|2.0.*) 7617 1.*|2.0.*)
10039 7618
10040cat >>confdefs.h <<\_ACEOF 7619$as_echo "#define BROKEN_CMSG_TYPE 1" >>confdefs.h
10041#define BROKEN_CMSG_TYPE 1
10042_ACEOF
10043 7620
10044 ;; 7621 ;;
10045 esac 7622 esac
10046 # tun(4) forwarding compat code 7623 # tun(4) forwarding compat code
10047 7624 for ac_header in linux/if_tun.h
10048for ac_header in linux/if_tun.h 7625do :
10049do 7626 ac_fn_c_check_header_mongrel "$LINENO" "linux/if_tun.h" "ac_cv_header_linux_if_tun_h" "$ac_includes_default"
10050as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 7627if test "x$ac_cv_header_linux_if_tun_h" = xyes; then :
10051if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10052 { echo "$as_me:$LINENO: checking for $ac_header" >&5
10053echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10054if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10055 echo $ECHO_N "(cached) $ECHO_C" >&6
10056fi
10057ac_res=`eval echo '${'$as_ac_Header'}'`
10058 { echo "$as_me:$LINENO: result: $ac_res" >&5
10059echo "${ECHO_T}$ac_res" >&6; }
10060else
10061 # Is the header compilable?
10062{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
10063echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
10064cat >conftest.$ac_ext <<_ACEOF
10065/* confdefs.h. */
10066_ACEOF
10067cat confdefs.h >>conftest.$ac_ext
10068cat >>conftest.$ac_ext <<_ACEOF
10069/* end confdefs.h. */
10070$ac_includes_default
10071#include <$ac_header>
10072_ACEOF
10073rm -f conftest.$ac_objext
10074if { (ac_try="$ac_compile"
10075case "(($ac_try" in
10076 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10077 *) ac_try_echo=$ac_try;;
10078esac
10079eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10080 (eval "$ac_compile") 2>conftest.er1
10081 ac_status=$?
10082 grep -v '^ *+' conftest.er1 >conftest.err
10083 rm -f conftest.er1
10084 cat conftest.err >&5
10085 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10086 (exit $ac_status); } && {
10087 test -z "$ac_c_werror_flag" ||
10088 test ! -s conftest.err
10089 } && test -s conftest.$ac_objext; then
10090 ac_header_compiler=yes
10091else
10092 echo "$as_me: failed program was:" >&5
10093sed 's/^/| /' conftest.$ac_ext >&5
10094
10095 ac_header_compiler=no
10096fi
10097
10098rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10099{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10100echo "${ECHO_T}$ac_header_compiler" >&6; }
10101
10102# Is the header present?
10103{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
10104echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
10105cat >conftest.$ac_ext <<_ACEOF
10106/* confdefs.h. */
10107_ACEOF
10108cat confdefs.h >>conftest.$ac_ext
10109cat >>conftest.$ac_ext <<_ACEOF
10110/* end confdefs.h. */
10111#include <$ac_header>
10112_ACEOF
10113if { (ac_try="$ac_cpp conftest.$ac_ext"
10114case "(($ac_try" in
10115 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10116 *) ac_try_echo=$ac_try;;
10117esac
10118eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10119 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10120 ac_status=$?
10121 grep -v '^ *+' conftest.er1 >conftest.err
10122 rm -f conftest.er1
10123 cat conftest.err >&5
10124 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10125 (exit $ac_status); } >/dev/null && {
10126 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
10127 test ! -s conftest.err
10128 }; then
10129 ac_header_preproc=yes
10130else
10131 echo "$as_me: failed program was:" >&5
10132sed 's/^/| /' conftest.$ac_ext >&5
10133
10134 ac_header_preproc=no
10135fi
10136
10137rm -f conftest.err conftest.$ac_ext
10138{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10139echo "${ECHO_T}$ac_header_preproc" >&6; }
10140
10141# So? What about this header?
10142case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
10143 yes:no: )
10144 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
10145echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
10146 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
10147echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
10148 ac_header_preproc=yes
10149 ;;
10150 no:yes:* )
10151 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
10152echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
10153 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
10154echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
10155 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
10156echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
10157 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
10158echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
10159 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10160echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
10161 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
10162echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
10163 ( cat <<\_ASBOX
10164## ------------------------------------------- ##
10165## Report this to openssh-unix-dev@mindrot.org ##
10166## ------------------------------------------- ##
10167_ASBOX
10168 ) | sed "s/^/$as_me: WARNING: /" >&2
10169 ;;
10170esac
10171{ echo "$as_me:$LINENO: checking for $ac_header" >&5
10172echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10173if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10174 echo $ECHO_N "(cached) $ECHO_C" >&6
10175else
10176 eval "$as_ac_Header=\$ac_header_preproc"
10177fi
10178ac_res=`eval echo '${'$as_ac_Header'}'`
10179 { echo "$as_me:$LINENO: result: $ac_res" >&5
10180echo "${ECHO_T}$ac_res" >&6; }
10181
10182fi
10183if test `eval echo '${'$as_ac_Header'}'` = yes; then
10184 cat >>confdefs.h <<_ACEOF 7628 cat >>confdefs.h <<_ACEOF
10185#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 7629#define HAVE_LINUX_IF_TUN_H 1
10186_ACEOF 7630_ACEOF
10187 7631
10188fi 7632fi
@@ -10191,177 +7635,31 @@ done
10191 7635
10192 if test "x$ac_cv_header_linux_if_tun_h" = "xyes" ; then 7636 if test "x$ac_cv_header_linux_if_tun_h" = "xyes" ; then
10193 7637
10194cat >>confdefs.h <<\_ACEOF 7638$as_echo "#define SSH_TUN_LINUX 1" >>confdefs.h
10195#define SSH_TUN_LINUX 1
10196_ACEOF
10197 7639
10198 7640
10199cat >>confdefs.h <<\_ACEOF 7641$as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
10200#define SSH_TUN_COMPAT_AF 1
10201_ACEOF
10202 7642
10203 7643
10204cat >>confdefs.h <<\_ACEOF 7644$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
10205#define SSH_TUN_PREPEND_AF 1
10206_ACEOF
10207 7645
10208 fi 7646 fi
10209 7647 for ac_header in linux/seccomp.h linux/filter.h linux/audit.h
10210 7648do :
10211 7649 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
10212for ac_header in linux/seccomp.h linux/filter.h linux/audit.h 7650ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <linux/types.h>
10213do 7651"
10214as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 7652if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
10215{ echo "$as_me:$LINENO: checking for $ac_header" >&5
10216echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10217if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10218 echo $ECHO_N "(cached) $ECHO_C" >&6
10219else
10220 cat >conftest.$ac_ext <<_ACEOF
10221/* confdefs.h. */
10222_ACEOF
10223cat confdefs.h >>conftest.$ac_ext
10224cat >>conftest.$ac_ext <<_ACEOF
10225/* end confdefs.h. */
10226#include <linux/types.h>
10227
10228#include <$ac_header>
10229_ACEOF
10230rm -f conftest.$ac_objext
10231if { (ac_try="$ac_compile"
10232case "(($ac_try" in
10233 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10234 *) ac_try_echo=$ac_try;;
10235esac
10236eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10237 (eval "$ac_compile") 2>conftest.er1
10238 ac_status=$?
10239 grep -v '^ *+' conftest.er1 >conftest.err
10240 rm -f conftest.er1
10241 cat conftest.err >&5
10242 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10243 (exit $ac_status); } && {
10244 test -z "$ac_c_werror_flag" ||
10245 test ! -s conftest.err
10246 } && test -s conftest.$ac_objext; then
10247 eval "$as_ac_Header=yes"
10248else
10249 echo "$as_me: failed program was:" >&5
10250sed 's/^/| /' conftest.$ac_ext >&5
10251
10252 eval "$as_ac_Header=no"
10253fi
10254
10255rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10256fi
10257ac_res=`eval echo '${'$as_ac_Header'}'`
10258 { echo "$as_me:$LINENO: result: $ac_res" >&5
10259echo "${ECHO_T}$ac_res" >&6; }
10260if test `eval echo '${'$as_ac_Header'}'` = yes; then
10261 cat >>confdefs.h <<_ACEOF 7653 cat >>confdefs.h <<_ACEOF
10262#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 7654#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
10263_ACEOF 7655_ACEOF
10264 7656
10265fi 7657fi
10266 7658
10267done 7659done
10268 7660
10269 7661 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for seccomp architecture" >&5
10270for ac_func in prctl 7662$as_echo_n "checking for seccomp architecture... " >&6; }
10271do
10272as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
10273{ echo "$as_me:$LINENO: checking for $ac_func" >&5
10274echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
10275if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
10276 echo $ECHO_N "(cached) $ECHO_C" >&6
10277else
10278 cat >conftest.$ac_ext <<_ACEOF
10279/* confdefs.h. */
10280_ACEOF
10281cat confdefs.h >>conftest.$ac_ext
10282cat >>conftest.$ac_ext <<_ACEOF
10283/* end confdefs.h. */
10284/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
10285 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10286#define $ac_func innocuous_$ac_func
10287
10288/* System header to define __stub macros and hopefully few prototypes,
10289 which can conflict with char $ac_func (); below.
10290 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10291 <limits.h> exists even on freestanding compilers. */
10292
10293#ifdef __STDC__
10294# include <limits.h>
10295#else
10296# include <assert.h>
10297#endif
10298
10299#undef $ac_func
10300
10301/* Override any GCC internal prototype to avoid an error.
10302 Use char because int might match the return type of a GCC
10303 builtin and then its argument prototype would still apply. */
10304#ifdef __cplusplus
10305extern "C"
10306#endif
10307char $ac_func ();
10308/* The GNU C library defines this for functions which it implements
10309 to always fail with ENOSYS. Some functions are actually named
10310 something starting with __ and the normal name is an alias. */
10311#if defined __stub_$ac_func || defined __stub___$ac_func
10312choke me
10313#endif
10314
10315int
10316main ()
10317{
10318return $ac_func ();
10319 ;
10320 return 0;
10321}
10322_ACEOF
10323rm -f conftest.$ac_objext conftest$ac_exeext
10324if { (ac_try="$ac_link"
10325case "(($ac_try" in
10326 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10327 *) ac_try_echo=$ac_try;;
10328esac
10329eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10330 (eval "$ac_link") 2>conftest.er1
10331 ac_status=$?
10332 grep -v '^ *+' conftest.er1 >conftest.err
10333 rm -f conftest.er1
10334 cat conftest.err >&5
10335 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10336 (exit $ac_status); } && {
10337 test -z "$ac_c_werror_flag" ||
10338 test ! -s conftest.err
10339 } && test -s conftest$ac_exeext &&
10340 $as_test_x conftest$ac_exeext; then
10341 eval "$as_ac_var=yes"
10342else
10343 echo "$as_me: failed program was:" >&5
10344sed 's/^/| /' conftest.$ac_ext >&5
10345
10346 eval "$as_ac_var=no"
10347fi
10348
10349rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10350 conftest$ac_exeext conftest.$ac_ext
10351fi
10352ac_res=`eval echo '${'$as_ac_var'}'`
10353 { echo "$as_me:$LINENO: result: $ac_res" >&5
10354echo "${ECHO_T}$ac_res" >&6; }
10355if test `eval echo '${'$as_ac_var'}'` = yes; then
10356 cat >>confdefs.h <<_ACEOF
10357#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
10358_ACEOF
10359
10360fi
10361done
10362
10363 { echo "$as_me:$LINENO: checking for seccomp architecture" >&5
10364echo $ECHO_N "checking for seccomp architecture... $ECHO_C" >&6; }
10365 seccomp_audit_arch= 7663 seccomp_audit_arch=
10366 case "$host" in 7664 case "$host" in
10367 x86_64-*) 7665 x86_64-*)
@@ -10402,23 +7700,21 @@ echo $ECHO_N "checking for seccomp architecture... $ECHO_C" >&6; }
10402 ;; 7700 ;;
10403 esac 7701 esac
10404 if test "x$seccomp_audit_arch" != "x" ; then 7702 if test "x$seccomp_audit_arch" != "x" ; then
10405 { echo "$as_me:$LINENO: result: \"$seccomp_audit_arch\"" >&5 7703 { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$seccomp_audit_arch\"" >&5
10406echo "${ECHO_T}\"$seccomp_audit_arch\"" >&6; } 7704$as_echo "\"$seccomp_audit_arch\"" >&6; }
10407 7705
10408cat >>confdefs.h <<_ACEOF 7706cat >>confdefs.h <<_ACEOF
10409#define SECCOMP_AUDIT_ARCH $seccomp_audit_arch 7707#define SECCOMP_AUDIT_ARCH $seccomp_audit_arch
10410_ACEOF 7708_ACEOF
10411 7709
10412 else 7710 else
10413 { echo "$as_me:$LINENO: result: architecture not supported" >&5 7711 { $as_echo "$as_me:${as_lineno-$LINENO}: result: architecture not supported" >&5
10414echo "${ECHO_T}architecture not supported" >&6; } 7712$as_echo "architecture not supported" >&6; }
10415 fi 7713 fi
10416 ;; 7714 ;;
10417mips-sony-bsd|mips-sony-newsos4) 7715mips-sony-bsd|mips-sony-newsos4)
10418 7716
10419cat >>confdefs.h <<\_ACEOF 7717$as_echo "#define NEED_SETPGRP 1" >>confdefs.h
10420#define NEED_SETPGRP 1
10421_ACEOF
10422 7718
10423 SONY=1 7719 SONY=1
10424 ;; 7720 ;;
@@ -10429,352 +7725,60 @@ _ACEOF
10429 fi 7725 fi
10430 CPPFLAGS="$CPPFLAGS -D_OPENBSD_SOURCE" 7726 CPPFLAGS="$CPPFLAGS -D_OPENBSD_SOURCE"
10431 7727
10432cat >>confdefs.h <<\_ACEOF 7728$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
10433#define SSH_TUN_FREEBSD 1
10434_ACEOF
10435
10436 if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10437 { echo "$as_me:$LINENO: checking for net/if_tap.h" >&5
10438echo $ECHO_N "checking for net/if_tap.h... $ECHO_C" >&6; }
10439if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10440 echo $ECHO_N "(cached) $ECHO_C" >&6
10441fi
10442{ echo "$as_me:$LINENO: result: $ac_cv_header_net_if_tap_h" >&5
10443echo "${ECHO_T}$ac_cv_header_net_if_tap_h" >&6; }
10444else
10445 # Is the header compilable?
10446{ echo "$as_me:$LINENO: checking net/if_tap.h usability" >&5
10447echo $ECHO_N "checking net/if_tap.h usability... $ECHO_C" >&6; }
10448cat >conftest.$ac_ext <<_ACEOF
10449/* confdefs.h. */
10450_ACEOF
10451cat confdefs.h >>conftest.$ac_ext
10452cat >>conftest.$ac_ext <<_ACEOF
10453/* end confdefs.h. */
10454$ac_includes_default
10455#include <net/if_tap.h>
10456_ACEOF
10457rm -f conftest.$ac_objext
10458if { (ac_try="$ac_compile"
10459case "(($ac_try" in
10460 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10461 *) ac_try_echo=$ac_try;;
10462esac
10463eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10464 (eval "$ac_compile") 2>conftest.er1
10465 ac_status=$?
10466 grep -v '^ *+' conftest.er1 >conftest.err
10467 rm -f conftest.er1
10468 cat conftest.err >&5
10469 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10470 (exit $ac_status); } && {
10471 test -z "$ac_c_werror_flag" ||
10472 test ! -s conftest.err
10473 } && test -s conftest.$ac_objext; then
10474 ac_header_compiler=yes
10475else
10476 echo "$as_me: failed program was:" >&5
10477sed 's/^/| /' conftest.$ac_ext >&5
10478
10479 ac_header_compiler=no
10480fi
10481
10482rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10483{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10484echo "${ECHO_T}$ac_header_compiler" >&6; }
10485
10486# Is the header present?
10487{ echo "$as_me:$LINENO: checking net/if_tap.h presence" >&5
10488echo $ECHO_N "checking net/if_tap.h presence... $ECHO_C" >&6; }
10489cat >conftest.$ac_ext <<_ACEOF
10490/* confdefs.h. */
10491_ACEOF
10492cat confdefs.h >>conftest.$ac_ext
10493cat >>conftest.$ac_ext <<_ACEOF
10494/* end confdefs.h. */
10495#include <net/if_tap.h>
10496_ACEOF
10497if { (ac_try="$ac_cpp conftest.$ac_ext"
10498case "(($ac_try" in
10499 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10500 *) ac_try_echo=$ac_try;;
10501esac
10502eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10503 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10504 ac_status=$?
10505 grep -v '^ *+' conftest.er1 >conftest.err
10506 rm -f conftest.er1
10507 cat conftest.err >&5
10508 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10509 (exit $ac_status); } >/dev/null && {
10510 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
10511 test ! -s conftest.err
10512 }; then
10513 ac_header_preproc=yes
10514else
10515 echo "$as_me: failed program was:" >&5
10516sed 's/^/| /' conftest.$ac_ext >&5
10517
10518 ac_header_preproc=no
10519fi
10520
10521rm -f conftest.err conftest.$ac_ext
10522{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10523echo "${ECHO_T}$ac_header_preproc" >&6; }
10524 7729
10525# So? What about this header? 7730 ac_fn_c_check_header_mongrel "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
10526case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in 7731if test "x$ac_cv_header_net_if_tap_h" = xyes; then :
10527 yes:no: )
10528 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: accepted by the compiler, rejected by the preprocessor!" >&5
10529echo "$as_me: WARNING: net/if_tap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
10530 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: proceeding with the compiler's result" >&5
10531echo "$as_me: WARNING: net/if_tap.h: proceeding with the compiler's result" >&2;}
10532 ac_header_preproc=yes
10533 ;;
10534 no:yes:* )
10535 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: present but cannot be compiled" >&5
10536echo "$as_me: WARNING: net/if_tap.h: present but cannot be compiled" >&2;}
10537 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: check for missing prerequisite headers?" >&5
10538echo "$as_me: WARNING: net/if_tap.h: check for missing prerequisite headers?" >&2;}
10539 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: see the Autoconf documentation" >&5
10540echo "$as_me: WARNING: net/if_tap.h: see the Autoconf documentation" >&2;}
10541 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: section \"Present But Cannot Be Compiled\"" >&5
10542echo "$as_me: WARNING: net/if_tap.h: section \"Present But Cannot Be Compiled\"" >&2;}
10543 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: proceeding with the preprocessor's result" >&5
10544echo "$as_me: WARNING: net/if_tap.h: proceeding with the preprocessor's result" >&2;}
10545 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: in the future, the compiler will take precedence" >&5
10546echo "$as_me: WARNING: net/if_tap.h: in the future, the compiler will take precedence" >&2;}
10547 ( cat <<\_ASBOX
10548## ------------------------------------------- ##
10549## Report this to openssh-unix-dev@mindrot.org ##
10550## ------------------------------------------- ##
10551_ASBOX
10552 ) | sed "s/^/$as_me: WARNING: /" >&2
10553 ;;
10554esac
10555{ echo "$as_me:$LINENO: checking for net/if_tap.h" >&5
10556echo $ECHO_N "checking for net/if_tap.h... $ECHO_C" >&6; }
10557if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10558 echo $ECHO_N "(cached) $ECHO_C" >&6
10559else
10560 ac_cv_header_net_if_tap_h=$ac_header_preproc
10561fi
10562{ echo "$as_me:$LINENO: result: $ac_cv_header_net_if_tap_h" >&5
10563echo "${ECHO_T}$ac_cv_header_net_if_tap_h" >&6; }
10564 7732
10565fi
10566if test $ac_cv_header_net_if_tap_h = yes; then
10567 :
10568else 7733else
10569 7734
10570cat >>confdefs.h <<\_ACEOF 7735$as_echo "#define SSH_TUN_NO_L2 1" >>confdefs.h
10571#define SSH_TUN_NO_L2 1
10572_ACEOF
10573 7736
10574fi 7737fi
10575 7738
10576 7739
10577 7740
10578cat >>confdefs.h <<\_ACEOF 7741$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
10579#define SSH_TUN_PREPEND_AF 1
10580_ACEOF
10581 7742
10582 TEST_MALLOC_OPTIONS="AJRX" 7743 TEST_MALLOC_OPTIONS="AJRX"
10583 7744
10584cat >>confdefs.h <<\_ACEOF 7745$as_echo "#define BROKEN_READ_COMPARISON 1" >>confdefs.h
10585#define BROKEN_STRNVIS 1
10586_ACEOF
10587
10588
10589cat >>confdefs.h <<\_ACEOF
10590#define BROKEN_READ_COMPARISON 1
10591_ACEOF
10592 7746
10593 ;; 7747 ;;
10594*-*-freebsd*) 7748*-*-freebsd*)
10595 check_for_libcrypt_later=1 7749 check_for_libcrypt_later=1
10596 7750
10597cat >>confdefs.h <<\_ACEOF 7751$as_echo "#define LOCKED_PASSWD_PREFIX \"*LOCKED*\"" >>confdefs.h
10598#define LOCKED_PASSWD_PREFIX "*LOCKED*"
10599_ACEOF
10600
10601
10602cat >>confdefs.h <<\_ACEOF
10603#define SSH_TUN_FREEBSD 1
10604_ACEOF
10605
10606 if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10607 { echo "$as_me:$LINENO: checking for net/if_tap.h" >&5
10608echo $ECHO_N "checking for net/if_tap.h... $ECHO_C" >&6; }
10609if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10610 echo $ECHO_N "(cached) $ECHO_C" >&6
10611fi
10612{ echo "$as_me:$LINENO: result: $ac_cv_header_net_if_tap_h" >&5
10613echo "${ECHO_T}$ac_cv_header_net_if_tap_h" >&6; }
10614else
10615 # Is the header compilable?
10616{ echo "$as_me:$LINENO: checking net/if_tap.h usability" >&5
10617echo $ECHO_N "checking net/if_tap.h usability... $ECHO_C" >&6; }
10618cat >conftest.$ac_ext <<_ACEOF
10619/* confdefs.h. */
10620_ACEOF
10621cat confdefs.h >>conftest.$ac_ext
10622cat >>conftest.$ac_ext <<_ACEOF
10623/* end confdefs.h. */
10624$ac_includes_default
10625#include <net/if_tap.h>
10626_ACEOF
10627rm -f conftest.$ac_objext
10628if { (ac_try="$ac_compile"
10629case "(($ac_try" in
10630 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10631 *) ac_try_echo=$ac_try;;
10632esac
10633eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10634 (eval "$ac_compile") 2>conftest.er1
10635 ac_status=$?
10636 grep -v '^ *+' conftest.er1 >conftest.err
10637 rm -f conftest.er1
10638 cat conftest.err >&5
10639 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10640 (exit $ac_status); } && {
10641 test -z "$ac_c_werror_flag" ||
10642 test ! -s conftest.err
10643 } && test -s conftest.$ac_objext; then
10644 ac_header_compiler=yes
10645else
10646 echo "$as_me: failed program was:" >&5
10647sed 's/^/| /' conftest.$ac_ext >&5
10648
10649 ac_header_compiler=no
10650fi
10651
10652rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10653{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10654echo "${ECHO_T}$ac_header_compiler" >&6; }
10655
10656# Is the header present?
10657{ echo "$as_me:$LINENO: checking net/if_tap.h presence" >&5
10658echo $ECHO_N "checking net/if_tap.h presence... $ECHO_C" >&6; }
10659cat >conftest.$ac_ext <<_ACEOF
10660/* confdefs.h. */
10661_ACEOF
10662cat confdefs.h >>conftest.$ac_ext
10663cat >>conftest.$ac_ext <<_ACEOF
10664/* end confdefs.h. */
10665#include <net/if_tap.h>
10666_ACEOF
10667if { (ac_try="$ac_cpp conftest.$ac_ext"
10668case "(($ac_try" in
10669 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10670 *) ac_try_echo=$ac_try;;
10671esac
10672eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10673 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10674 ac_status=$?
10675 grep -v '^ *+' conftest.er1 >conftest.err
10676 rm -f conftest.er1
10677 cat conftest.err >&5
10678 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10679 (exit $ac_status); } >/dev/null && {
10680 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
10681 test ! -s conftest.err
10682 }; then
10683 ac_header_preproc=yes
10684else
10685 echo "$as_me: failed program was:" >&5
10686sed 's/^/| /' conftest.$ac_ext >&5
10687 7752
10688 ac_header_preproc=no
10689fi
10690 7753
10691rm -f conftest.err conftest.$ac_ext 7754$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
10692{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10693echo "${ECHO_T}$ac_header_preproc" >&6; }
10694 7755
10695# So? What about this header? 7756 ac_fn_c_check_header_mongrel "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
10696case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in 7757if test "x$ac_cv_header_net_if_tap_h" = xyes; then :
10697 yes:no: )
10698 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: accepted by the compiler, rejected by the preprocessor!" >&5
10699echo "$as_me: WARNING: net/if_tap.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
10700 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: proceeding with the compiler's result" >&5
10701echo "$as_me: WARNING: net/if_tap.h: proceeding with the compiler's result" >&2;}
10702 ac_header_preproc=yes
10703 ;;
10704 no:yes:* )
10705 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: present but cannot be compiled" >&5
10706echo "$as_me: WARNING: net/if_tap.h: present but cannot be compiled" >&2;}
10707 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: check for missing prerequisite headers?" >&5
10708echo "$as_me: WARNING: net/if_tap.h: check for missing prerequisite headers?" >&2;}
10709 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: see the Autoconf documentation" >&5
10710echo "$as_me: WARNING: net/if_tap.h: see the Autoconf documentation" >&2;}
10711 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: section \"Present But Cannot Be Compiled\"" >&5
10712echo "$as_me: WARNING: net/if_tap.h: section \"Present But Cannot Be Compiled\"" >&2;}
10713 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: proceeding with the preprocessor's result" >&5
10714echo "$as_me: WARNING: net/if_tap.h: proceeding with the preprocessor's result" >&2;}
10715 { echo "$as_me:$LINENO: WARNING: net/if_tap.h: in the future, the compiler will take precedence" >&5
10716echo "$as_me: WARNING: net/if_tap.h: in the future, the compiler will take precedence" >&2;}
10717 ( cat <<\_ASBOX
10718## ------------------------------------------- ##
10719## Report this to openssh-unix-dev@mindrot.org ##
10720## ------------------------------------------- ##
10721_ASBOX
10722 ) | sed "s/^/$as_me: WARNING: /" >&2
10723 ;;
10724esac
10725{ echo "$as_me:$LINENO: checking for net/if_tap.h" >&5
10726echo $ECHO_N "checking for net/if_tap.h... $ECHO_C" >&6; }
10727if test "${ac_cv_header_net_if_tap_h+set}" = set; then
10728 echo $ECHO_N "(cached) $ECHO_C" >&6
10729else
10730 ac_cv_header_net_if_tap_h=$ac_header_preproc
10731fi
10732{ echo "$as_me:$LINENO: result: $ac_cv_header_net_if_tap_h" >&5
10733echo "${ECHO_T}$ac_cv_header_net_if_tap_h" >&6; }
10734 7758
10735fi
10736if test $ac_cv_header_net_if_tap_h = yes; then
10737 :
10738else 7759else
10739 7760
10740cat >>confdefs.h <<\_ACEOF 7761$as_echo "#define SSH_TUN_NO_L2 1" >>confdefs.h
10741#define SSH_TUN_NO_L2 1
10742_ACEOF
10743 7762
10744fi 7763fi
10745 7764
10746 7765
10747 7766
10748cat >>confdefs.h <<\_ACEOF 7767$as_echo "#define BROKEN_GLOB 1" >>confdefs.h
10749#define BROKEN_GLOB 1
10750_ACEOF
10751
10752
10753cat >>confdefs.h <<\_ACEOF
10754#define BROKEN_STRNVIS 1
10755_ACEOF
10756 7768
10757 TEST_MALLOC_OPTIONS="AJRX" 7769 TEST_MALLOC_OPTIONS="AJRX"
10758 # Preauth crypto occasionally uses file descriptors for crypto offload 7770 # Preauth crypto occasionally uses file descriptors for crypto offload
10759 # and will crash if they cannot be opened. 7771 # and will crash if they cannot be opened.
10760 7772
10761cat >>confdefs.h <<\_ACEOF 7773$as_echo "#define SANDBOX_SKIP_RLIMIT_NOFILE 1" >>confdefs.h
10762#define SANDBOX_SKIP_RLIMIT_NOFILE 1
10763_ACEOF
10764 7774
10765 ;; 7775 ;;
10766*-*-bsdi*) 7776*-*-bsdi*)
10767 cat >>confdefs.h <<\_ACEOF 7777 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
10768#define SETEUID_BREAKS_SETUID 1
10769_ACEOF
10770 7778
10771 cat >>confdefs.h <<\_ACEOF 7779 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
10772#define BROKEN_SETREUID 1
10773_ACEOF
10774 7780
10775 cat >>confdefs.h <<\_ACEOF 7781 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
10776#define BROKEN_SETREGID 1
10777_ACEOF
10778 7782
10779 ;; 7783 ;;
10780*-next-*) 7784*-next-*)
@@ -10783,45 +7787,29 @@ _ACEOF
10783 conf_wtmp_location=/usr/adm/wtmp 7787 conf_wtmp_location=/usr/adm/wtmp
10784 maildir=/usr/spool/mail 7788 maildir=/usr/spool/mail
10785 7789
10786cat >>confdefs.h <<\_ACEOF 7790$as_echo "#define HAVE_NEXT 1" >>confdefs.h
10787#define HAVE_NEXT 1
10788_ACEOF
10789 7791
10790 cat >>confdefs.h <<\_ACEOF 7792 $as_echo "#define BROKEN_REALPATH 1" >>confdefs.h
10791#define BROKEN_REALPATH 1
10792_ACEOF
10793 7793
10794 cat >>confdefs.h <<\_ACEOF 7794 $as_echo "#define USE_PIPES 1" >>confdefs.h
10795#define USE_PIPES 1
10796_ACEOF
10797 7795
10798 7796
10799cat >>confdefs.h <<\_ACEOF 7797$as_echo "#define BROKEN_SAVED_UIDS 1" >>confdefs.h
10800#define BROKEN_SAVED_UIDS 1
10801_ACEOF
10802 7798
10803 ;; 7799 ;;
10804*-*-openbsd*) 7800*-*-openbsd*)
10805 use_pie=auto 7801 use_pie=auto
10806 7802
10807cat >>confdefs.h <<\_ACEOF 7803$as_echo "#define HAVE_ATTRIBUTE__SENTINEL__ 1" >>confdefs.h
10808#define HAVE_ATTRIBUTE__SENTINEL__ 1
10809_ACEOF
10810 7804
10811 7805
10812cat >>confdefs.h <<\_ACEOF 7806$as_echo "#define HAVE_ATTRIBUTE__BOUNDED__ 1" >>confdefs.h
10813#define HAVE_ATTRIBUTE__BOUNDED__ 1
10814_ACEOF
10815 7807
10816 7808
10817cat >>confdefs.h <<\_ACEOF 7809$as_echo "#define SSH_TUN_OPENBSD 1" >>confdefs.h
10818#define SSH_TUN_OPENBSD 1
10819_ACEOF
10820 7810
10821 7811
10822cat >>confdefs.h <<\_ACEOF 7812$as_echo "#define SYSLOG_R_SAFE_IN_SIGHAND 1" >>confdefs.h
10823#define SYSLOG_R_SAFE_IN_SIGHAND 1
10824_ACEOF
10825 7813
10826 TEST_MALLOC_OPTIONS="AFGJPRX" 7814 TEST_MALLOC_OPTIONS="AFGJPRX"
10827 ;; 7815 ;;
@@ -10829,491 +7817,84 @@ _ACEOF
10829 if test "x$withval" != "xno" ; then 7817 if test "x$withval" != "xno" ; then
10830 need_dash_r=1 7818 need_dash_r=1
10831 fi 7819 fi
10832 cat >>confdefs.h <<\_ACEOF 7820 $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
10833#define PAM_SUN_CODEBASE 1
10834_ACEOF
10835 7821
10836 cat >>confdefs.h <<\_ACEOF 7822 $as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
10837#define LOGIN_NEEDS_UTMPX 1
10838_ACEOF
10839 7823
7824 $as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
10840 7825
10841cat >>confdefs.h <<\_ACEOF
10842#define LOGIN_NEEDS_TERM 1
10843_ACEOF
10844 7826
10845 cat >>confdefs.h <<\_ACEOF 7827$as_echo "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
10846#define PAM_TTY_KLUDGE 1
10847_ACEOF
10848 7828
10849 7829 $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
10850cat >>confdefs.h <<\_ACEOF
10851#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1
10852_ACEOF
10853
10854 cat >>confdefs.h <<\_ACEOF
10855#define LOCKED_PASSWD_STRING "*LK*"
10856_ACEOF
10857 7830
10858 # Pushing STREAMS modules will cause sshd to acquire a controlling tty. 7831 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
10859 7832
10860cat >>confdefs.h <<\_ACEOF 7833$as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
10861#define SSHD_ACQUIRES_CTTY 1
10862_ACEOF
10863 7834
10864 7835
10865cat >>confdefs.h <<\_ACEOF 7836$as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
10866#define PASSWD_NEEDS_USERNAME 1
10867_ACEOF
10868 7837
10869 7838
10870cat >>confdefs.h <<\_ACEOF 7839$as_echo "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h
10871#define BROKEN_TCGETATTR_ICANON 1
10872_ACEOF
10873 7840
10874 external_path_file=/etc/default/login 7841 external_path_file=/etc/default/login
10875 # hardwire lastlog location (can't detect it on some versions) 7842 # hardwire lastlog location (can't detect it on some versions)
10876 conf_lastlog_location="/var/adm/lastlog" 7843 conf_lastlog_location="/var/adm/lastlog"
10877 { echo "$as_me:$LINENO: checking for obsolete utmp and wtmp in solaris2.x" >&5 7844 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for obsolete utmp and wtmp in solaris2.x" >&5
10878echo $ECHO_N "checking for obsolete utmp and wtmp in solaris2.x... $ECHO_C" >&6; } 7845$as_echo_n "checking for obsolete utmp and wtmp in solaris2.x... " >&6; }
10879 sol2ver=`echo "$host"| sed -e 's/.*[0-9]\.//'` 7846 sol2ver=`echo "$host"| sed -e 's/.*[0-9]\.//'`
10880 if test "$sol2ver" -ge 8; then 7847 if test "$sol2ver" -ge 8; then
10881 { echo "$as_me:$LINENO: result: yes" >&5 7848 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
10882echo "${ECHO_T}yes" >&6; } 7849$as_echo "yes" >&6; }
10883 cat >>confdefs.h <<\_ACEOF 7850 $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
10884#define DISABLE_UTMP 1
10885_ACEOF
10886 7851
10887 7852
10888cat >>confdefs.h <<\_ACEOF 7853$as_echo "#define DISABLE_WTMP 1" >>confdefs.h
10889#define DISABLE_WTMP 1
10890_ACEOF
10891 7854
10892 else 7855 else
10893 { echo "$as_me:$LINENO: result: no" >&5 7856 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
10894echo "${ECHO_T}no" >&6; } 7857$as_echo "no" >&6; }
10895 fi 7858 fi
10896 7859 for ac_func in setpflags
10897for ac_func in setpflags 7860do :
10898do 7861 ac_fn_c_check_func "$LINENO" "setpflags" "ac_cv_func_setpflags"
10899as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 7862if test "x$ac_cv_func_setpflags" = xyes; then :
10900{ echo "$as_me:$LINENO: checking for $ac_func" >&5
10901echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
10902if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
10903 echo $ECHO_N "(cached) $ECHO_C" >&6
10904else
10905 cat >conftest.$ac_ext <<_ACEOF
10906/* confdefs.h. */
10907_ACEOF
10908cat confdefs.h >>conftest.$ac_ext
10909cat >>conftest.$ac_ext <<_ACEOF
10910/* end confdefs.h. */
10911/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
10912 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10913#define $ac_func innocuous_$ac_func
10914
10915/* System header to define __stub macros and hopefully few prototypes,
10916 which can conflict with char $ac_func (); below.
10917 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10918 <limits.h> exists even on freestanding compilers. */
10919
10920#ifdef __STDC__
10921# include <limits.h>
10922#else
10923# include <assert.h>
10924#endif
10925
10926#undef $ac_func
10927
10928/* Override any GCC internal prototype to avoid an error.
10929 Use char because int might match the return type of a GCC
10930 builtin and then its argument prototype would still apply. */
10931#ifdef __cplusplus
10932extern "C"
10933#endif
10934char $ac_func ();
10935/* The GNU C library defines this for functions which it implements
10936 to always fail with ENOSYS. Some functions are actually named
10937 something starting with __ and the normal name is an alias. */
10938#if defined __stub_$ac_func || defined __stub___$ac_func
10939choke me
10940#endif
10941
10942int
10943main ()
10944{
10945return $ac_func ();
10946 ;
10947 return 0;
10948}
10949_ACEOF
10950rm -f conftest.$ac_objext conftest$ac_exeext
10951if { (ac_try="$ac_link"
10952case "(($ac_try" in
10953 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10954 *) ac_try_echo=$ac_try;;
10955esac
10956eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10957 (eval "$ac_link") 2>conftest.er1
10958 ac_status=$?
10959 grep -v '^ *+' conftest.er1 >conftest.err
10960 rm -f conftest.er1
10961 cat conftest.err >&5
10962 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10963 (exit $ac_status); } && {
10964 test -z "$ac_c_werror_flag" ||
10965 test ! -s conftest.err
10966 } && test -s conftest$ac_exeext &&
10967 $as_test_x conftest$ac_exeext; then
10968 eval "$as_ac_var=yes"
10969else
10970 echo "$as_me: failed program was:" >&5
10971sed 's/^/| /' conftest.$ac_ext >&5
10972
10973 eval "$as_ac_var=no"
10974fi
10975
10976rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10977 conftest$ac_exeext conftest.$ac_ext
10978fi
10979ac_res=`eval echo '${'$as_ac_var'}'`
10980 { echo "$as_me:$LINENO: result: $ac_res" >&5
10981echo "${ECHO_T}$ac_res" >&6; }
10982if test `eval echo '${'$as_ac_var'}'` = yes; then
10983 cat >>confdefs.h <<_ACEOF 7863 cat >>confdefs.h <<_ACEOF
10984#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 7864#define HAVE_SETPFLAGS 1
10985_ACEOF 7865_ACEOF
10986 7866
10987fi 7867fi
10988done 7868done
10989 7869
10990 7870 for ac_func in setppriv
10991for ac_func in setppriv 7871do :
10992do 7872 ac_fn_c_check_func "$LINENO" "setppriv" "ac_cv_func_setppriv"
10993as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 7873if test "x$ac_cv_func_setppriv" = xyes; then :
10994{ echo "$as_me:$LINENO: checking for $ac_func" >&5
10995echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
10996if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
10997 echo $ECHO_N "(cached) $ECHO_C" >&6
10998else
10999 cat >conftest.$ac_ext <<_ACEOF
11000/* confdefs.h. */
11001_ACEOF
11002cat confdefs.h >>conftest.$ac_ext
11003cat >>conftest.$ac_ext <<_ACEOF
11004/* end confdefs.h. */
11005/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
11006 For example, HP-UX 11i <limits.h> declares gettimeofday. */
11007#define $ac_func innocuous_$ac_func
11008
11009/* System header to define __stub macros and hopefully few prototypes,
11010 which can conflict with char $ac_func (); below.
11011 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
11012 <limits.h> exists even on freestanding compilers. */
11013
11014#ifdef __STDC__
11015# include <limits.h>
11016#else
11017# include <assert.h>
11018#endif
11019
11020#undef $ac_func
11021
11022/* Override any GCC internal prototype to avoid an error.
11023 Use char because int might match the return type of a GCC
11024 builtin and then its argument prototype would still apply. */
11025#ifdef __cplusplus
11026extern "C"
11027#endif
11028char $ac_func ();
11029/* The GNU C library defines this for functions which it implements
11030 to always fail with ENOSYS. Some functions are actually named
11031 something starting with __ and the normal name is an alias. */
11032#if defined __stub_$ac_func || defined __stub___$ac_func
11033choke me
11034#endif
11035
11036int
11037main ()
11038{
11039return $ac_func ();
11040 ;
11041 return 0;
11042}
11043_ACEOF
11044rm -f conftest.$ac_objext conftest$ac_exeext
11045if { (ac_try="$ac_link"
11046case "(($ac_try" in
11047 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11048 *) ac_try_echo=$ac_try;;
11049esac
11050eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11051 (eval "$ac_link") 2>conftest.er1
11052 ac_status=$?
11053 grep -v '^ *+' conftest.er1 >conftest.err
11054 rm -f conftest.er1
11055 cat conftest.err >&5
11056 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11057 (exit $ac_status); } && {
11058 test -z "$ac_c_werror_flag" ||
11059 test ! -s conftest.err
11060 } && test -s conftest$ac_exeext &&
11061 $as_test_x conftest$ac_exeext; then
11062 eval "$as_ac_var=yes"
11063else
11064 echo "$as_me: failed program was:" >&5
11065sed 's/^/| /' conftest.$ac_ext >&5
11066
11067 eval "$as_ac_var=no"
11068fi
11069
11070rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11071 conftest$ac_exeext conftest.$ac_ext
11072fi
11073ac_res=`eval echo '${'$as_ac_var'}'`
11074 { echo "$as_me:$LINENO: result: $ac_res" >&5
11075echo "${ECHO_T}$ac_res" >&6; }
11076if test `eval echo '${'$as_ac_var'}'` = yes; then
11077 cat >>confdefs.h <<_ACEOF 7874 cat >>confdefs.h <<_ACEOF
11078#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 7875#define HAVE_SETPPRIV 1
11079_ACEOF 7876_ACEOF
11080 7877
11081fi 7878fi
11082done 7879done
11083 7880
11084 7881 for ac_func in priv_basicset
11085for ac_func in priv_basicset 7882do :
11086do 7883 ac_fn_c_check_func "$LINENO" "priv_basicset" "ac_cv_func_priv_basicset"
11087as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 7884if test "x$ac_cv_func_priv_basicset" = xyes; then :
11088{ echo "$as_me:$LINENO: checking for $ac_func" >&5
11089echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
11090if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
11091 echo $ECHO_N "(cached) $ECHO_C" >&6
11092else
11093 cat >conftest.$ac_ext <<_ACEOF
11094/* confdefs.h. */
11095_ACEOF
11096cat confdefs.h >>conftest.$ac_ext
11097cat >>conftest.$ac_ext <<_ACEOF
11098/* end confdefs.h. */
11099/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
11100 For example, HP-UX 11i <limits.h> declares gettimeofday. */
11101#define $ac_func innocuous_$ac_func
11102
11103/* System header to define __stub macros and hopefully few prototypes,
11104 which can conflict with char $ac_func (); below.
11105 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
11106 <limits.h> exists even on freestanding compilers. */
11107
11108#ifdef __STDC__
11109# include <limits.h>
11110#else
11111# include <assert.h>
11112#endif
11113
11114#undef $ac_func
11115
11116/* Override any GCC internal prototype to avoid an error.
11117 Use char because int might match the return type of a GCC
11118 builtin and then its argument prototype would still apply. */
11119#ifdef __cplusplus
11120extern "C"
11121#endif
11122char $ac_func ();
11123/* The GNU C library defines this for functions which it implements
11124 to always fail with ENOSYS. Some functions are actually named
11125 something starting with __ and the normal name is an alias. */
11126#if defined __stub_$ac_func || defined __stub___$ac_func
11127choke me
11128#endif
11129
11130int
11131main ()
11132{
11133return $ac_func ();
11134 ;
11135 return 0;
11136}
11137_ACEOF
11138rm -f conftest.$ac_objext conftest$ac_exeext
11139if { (ac_try="$ac_link"
11140case "(($ac_try" in
11141 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11142 *) ac_try_echo=$ac_try;;
11143esac
11144eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11145 (eval "$ac_link") 2>conftest.er1
11146 ac_status=$?
11147 grep -v '^ *+' conftest.er1 >conftest.err
11148 rm -f conftest.er1
11149 cat conftest.err >&5
11150 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11151 (exit $ac_status); } && {
11152 test -z "$ac_c_werror_flag" ||
11153 test ! -s conftest.err
11154 } && test -s conftest$ac_exeext &&
11155 $as_test_x conftest$ac_exeext; then
11156 eval "$as_ac_var=yes"
11157else
11158 echo "$as_me: failed program was:" >&5
11159sed 's/^/| /' conftest.$ac_ext >&5
11160
11161 eval "$as_ac_var=no"
11162fi
11163
11164rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11165 conftest$ac_exeext conftest.$ac_ext
11166fi
11167ac_res=`eval echo '${'$as_ac_var'}'`
11168 { echo "$as_me:$LINENO: result: $ac_res" >&5
11169echo "${ECHO_T}$ac_res" >&6; }
11170if test `eval echo '${'$as_ac_var'}'` = yes; then
11171 cat >>confdefs.h <<_ACEOF 7885 cat >>confdefs.h <<_ACEOF
11172#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 7886#define HAVE_PRIV_BASICSET 1
11173_ACEOF 7887_ACEOF
11174 7888
11175fi 7889fi
11176done 7890done
11177 7891
11178 7892 for ac_header in priv.h
11179for ac_header in priv.h 7893do :
11180do 7894 ac_fn_c_check_header_mongrel "$LINENO" "priv.h" "ac_cv_header_priv_h" "$ac_includes_default"
11181as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 7895if test "x$ac_cv_header_priv_h" = xyes; then :
11182if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11183 { echo "$as_me:$LINENO: checking for $ac_header" >&5
11184echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
11185if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11186 echo $ECHO_N "(cached) $ECHO_C" >&6
11187fi
11188ac_res=`eval echo '${'$as_ac_Header'}'`
11189 { echo "$as_me:$LINENO: result: $ac_res" >&5
11190echo "${ECHO_T}$ac_res" >&6; }
11191else
11192 # Is the header compilable?
11193{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
11194echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
11195cat >conftest.$ac_ext <<_ACEOF
11196/* confdefs.h. */
11197_ACEOF
11198cat confdefs.h >>conftest.$ac_ext
11199cat >>conftest.$ac_ext <<_ACEOF
11200/* end confdefs.h. */
11201$ac_includes_default
11202#include <$ac_header>
11203_ACEOF
11204rm -f conftest.$ac_objext
11205if { (ac_try="$ac_compile"
11206case "(($ac_try" in
11207 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11208 *) ac_try_echo=$ac_try;;
11209esac
11210eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11211 (eval "$ac_compile") 2>conftest.er1
11212 ac_status=$?
11213 grep -v '^ *+' conftest.er1 >conftest.err
11214 rm -f conftest.er1
11215 cat conftest.err >&5
11216 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11217 (exit $ac_status); } && {
11218 test -z "$ac_c_werror_flag" ||
11219 test ! -s conftest.err
11220 } && test -s conftest.$ac_objext; then
11221 ac_header_compiler=yes
11222else
11223 echo "$as_me: failed program was:" >&5
11224sed 's/^/| /' conftest.$ac_ext >&5
11225
11226 ac_header_compiler=no
11227fi
11228
11229rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11230{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
11231echo "${ECHO_T}$ac_header_compiler" >&6; }
11232
11233# Is the header present?
11234{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
11235echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
11236cat >conftest.$ac_ext <<_ACEOF
11237/* confdefs.h. */
11238_ACEOF
11239cat confdefs.h >>conftest.$ac_ext
11240cat >>conftest.$ac_ext <<_ACEOF
11241/* end confdefs.h. */
11242#include <$ac_header>
11243_ACEOF
11244if { (ac_try="$ac_cpp conftest.$ac_ext"
11245case "(($ac_try" in
11246 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11247 *) ac_try_echo=$ac_try;;
11248esac
11249eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11250 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
11251 ac_status=$?
11252 grep -v '^ *+' conftest.er1 >conftest.err
11253 rm -f conftest.er1
11254 cat conftest.err >&5
11255 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11256 (exit $ac_status); } >/dev/null && {
11257 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
11258 test ! -s conftest.err
11259 }; then
11260 ac_header_preproc=yes
11261else
11262 echo "$as_me: failed program was:" >&5
11263sed 's/^/| /' conftest.$ac_ext >&5
11264
11265 ac_header_preproc=no
11266fi
11267
11268rm -f conftest.err conftest.$ac_ext
11269{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
11270echo "${ECHO_T}$ac_header_preproc" >&6; }
11271
11272# So? What about this header?
11273case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
11274 yes:no: )
11275 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
11276echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
11277 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
11278echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
11279 ac_header_preproc=yes
11280 ;;
11281 no:yes:* )
11282 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
11283echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
11284 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
11285echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
11286 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
11287echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
11288 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
11289echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
11290 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
11291echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
11292 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
11293echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
11294 ( cat <<\_ASBOX
11295## ------------------------------------------- ##
11296## Report this to openssh-unix-dev@mindrot.org ##
11297## ------------------------------------------- ##
11298_ASBOX
11299 ) | sed "s/^/$as_me: WARNING: /" >&2
11300 ;;
11301esac
11302{ echo "$as_me:$LINENO: checking for $ac_header" >&5
11303echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
11304if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11305 echo $ECHO_N "(cached) $ECHO_C" >&6
11306else
11307 eval "$as_ac_Header=\$ac_header_preproc"
11308fi
11309ac_res=`eval echo '${'$as_ac_Header'}'`
11310 { echo "$as_me:$LINENO: result: $ac_res" >&5
11311echo "${ECHO_T}$ac_res" >&6; }
11312
11313fi
11314if test `eval echo '${'$as_ac_Header'}'` = yes; then
11315 cat >>confdefs.h <<_ACEOF 7896 cat >>confdefs.h <<_ACEOF
11316#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 7897#define HAVE_PRIV_H 1
11317_ACEOF 7898_ACEOF
11318 7899
11319fi 7900fi
@@ -11322,20 +7903,16 @@ done
11322 7903
11323 7904
11324# Check whether --with-solaris-contracts was given. 7905# Check whether --with-solaris-contracts was given.
11325if test "${with_solaris_contracts+set}" = set; then 7906if test "${with_solaris_contracts+set}" = set; then :
11326 withval=$with_solaris_contracts; 7907 withval=$with_solaris_contracts;
11327 { echo "$as_me:$LINENO: checking for ct_tmpl_activate in -lcontract" >&5 7908 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ct_tmpl_activate in -lcontract" >&5
11328echo $ECHO_N "checking for ct_tmpl_activate in -lcontract... $ECHO_C" >&6; } 7909$as_echo_n "checking for ct_tmpl_activate in -lcontract... " >&6; }
11329if test "${ac_cv_lib_contract_ct_tmpl_activate+set}" = set; then 7910if ${ac_cv_lib_contract_ct_tmpl_activate+:} false; then :
11330 echo $ECHO_N "(cached) $ECHO_C" >&6 7911 $as_echo_n "(cached) " >&6
11331else 7912else
11332 ac_check_lib_save_LIBS=$LIBS 7913 ac_check_lib_save_LIBS=$LIBS
11333LIBS="-lcontract $LIBS" 7914LIBS="-lcontract $LIBS"
11334cat >conftest.$ac_ext <<_ACEOF 7915cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11335/* confdefs.h. */
11336_ACEOF
11337cat confdefs.h >>conftest.$ac_ext
11338cat >>conftest.$ac_ext <<_ACEOF
11339/* end confdefs.h. */ 7916/* end confdefs.h. */
11340 7917
11341/* Override any GCC internal prototype to avoid an error. 7918/* Override any GCC internal prototype to avoid an error.
@@ -11353,43 +7930,20 @@ return ct_tmpl_activate ();
11353 return 0; 7930 return 0;
11354} 7931}
11355_ACEOF 7932_ACEOF
11356rm -f conftest.$ac_objext conftest$ac_exeext 7933if ac_fn_c_try_link "$LINENO"; then :
11357if { (ac_try="$ac_link"
11358case "(($ac_try" in
11359 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11360 *) ac_try_echo=$ac_try;;
11361esac
11362eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11363 (eval "$ac_link") 2>conftest.er1
11364 ac_status=$?
11365 grep -v '^ *+' conftest.er1 >conftest.err
11366 rm -f conftest.er1
11367 cat conftest.err >&5
11368 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11369 (exit $ac_status); } && {
11370 test -z "$ac_c_werror_flag" ||
11371 test ! -s conftest.err
11372 } && test -s conftest$ac_exeext &&
11373 $as_test_x conftest$ac_exeext; then
11374 ac_cv_lib_contract_ct_tmpl_activate=yes 7934 ac_cv_lib_contract_ct_tmpl_activate=yes
11375else 7935else
11376 echo "$as_me: failed program was:" >&5 7936 ac_cv_lib_contract_ct_tmpl_activate=no
11377sed 's/^/| /' conftest.$ac_ext >&5
11378
11379 ac_cv_lib_contract_ct_tmpl_activate=no
11380fi 7937fi
11381 7938rm -f core conftest.err conftest.$ac_objext \
11382rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7939 conftest$ac_exeext conftest.$ac_ext
11383 conftest$ac_exeext conftest.$ac_ext
11384LIBS=$ac_check_lib_save_LIBS 7940LIBS=$ac_check_lib_save_LIBS
11385fi 7941fi
11386{ echo "$as_me:$LINENO: result: $ac_cv_lib_contract_ct_tmpl_activate" >&5 7942{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_contract_ct_tmpl_activate" >&5
11387echo "${ECHO_T}$ac_cv_lib_contract_ct_tmpl_activate" >&6; } 7943$as_echo "$ac_cv_lib_contract_ct_tmpl_activate" >&6; }
11388if test $ac_cv_lib_contract_ct_tmpl_activate = yes; then 7944if test "x$ac_cv_lib_contract_ct_tmpl_activate" = xyes; then :
11389 7945
11390cat >>confdefs.h <<\_ACEOF 7946$as_echo "#define USE_SOLARIS_PROCESS_CONTRACTS 1" >>confdefs.h
11391#define USE_SOLARIS_PROCESS_CONTRACTS 1
11392_ACEOF
11393 7947
11394 LIBS="$LIBS -lcontract" 7948 LIBS="$LIBS -lcontract"
11395 SPC_MSG="yes" 7949 SPC_MSG="yes"
@@ -11400,20 +7954,16 @@ fi
11400 7954
11401 7955
11402# Check whether --with-solaris-projects was given. 7956# Check whether --with-solaris-projects was given.
11403if test "${with_solaris_projects+set}" = set; then 7957if test "${with_solaris_projects+set}" = set; then :
11404 withval=$with_solaris_projects; 7958 withval=$with_solaris_projects;
11405 { echo "$as_me:$LINENO: checking for setproject in -lproject" >&5 7959 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setproject in -lproject" >&5
11406echo $ECHO_N "checking for setproject in -lproject... $ECHO_C" >&6; } 7960$as_echo_n "checking for setproject in -lproject... " >&6; }
11407if test "${ac_cv_lib_project_setproject+set}" = set; then 7961if ${ac_cv_lib_project_setproject+:} false; then :
11408 echo $ECHO_N "(cached) $ECHO_C" >&6 7962 $as_echo_n "(cached) " >&6
11409else 7963else
11410 ac_check_lib_save_LIBS=$LIBS 7964 ac_check_lib_save_LIBS=$LIBS
11411LIBS="-lproject $LIBS" 7965LIBS="-lproject $LIBS"
11412cat >conftest.$ac_ext <<_ACEOF 7966cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11413/* confdefs.h. */
11414_ACEOF
11415cat confdefs.h >>conftest.$ac_ext
11416cat >>conftest.$ac_ext <<_ACEOF
11417/* end confdefs.h. */ 7967/* end confdefs.h. */
11418 7968
11419/* Override any GCC internal prototype to avoid an error. 7969/* Override any GCC internal prototype to avoid an error.
@@ -11431,43 +7981,20 @@ return setproject ();
11431 return 0; 7981 return 0;
11432} 7982}
11433_ACEOF 7983_ACEOF
11434rm -f conftest.$ac_objext conftest$ac_exeext 7984if ac_fn_c_try_link "$LINENO"; then :
11435if { (ac_try="$ac_link"
11436case "(($ac_try" in
11437 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11438 *) ac_try_echo=$ac_try;;
11439esac
11440eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11441 (eval "$ac_link") 2>conftest.er1
11442 ac_status=$?
11443 grep -v '^ *+' conftest.er1 >conftest.err
11444 rm -f conftest.er1
11445 cat conftest.err >&5
11446 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11447 (exit $ac_status); } && {
11448 test -z "$ac_c_werror_flag" ||
11449 test ! -s conftest.err
11450 } && test -s conftest$ac_exeext &&
11451 $as_test_x conftest$ac_exeext; then
11452 ac_cv_lib_project_setproject=yes 7985 ac_cv_lib_project_setproject=yes
11453else 7986else
11454 echo "$as_me: failed program was:" >&5 7987 ac_cv_lib_project_setproject=no
11455sed 's/^/| /' conftest.$ac_ext >&5
11456
11457 ac_cv_lib_project_setproject=no
11458fi 7988fi
11459 7989rm -f core conftest.err conftest.$ac_objext \
11460rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 7990 conftest$ac_exeext conftest.$ac_ext
11461 conftest$ac_exeext conftest.$ac_ext
11462LIBS=$ac_check_lib_save_LIBS 7991LIBS=$ac_check_lib_save_LIBS
11463fi 7992fi
11464{ echo "$as_me:$LINENO: result: $ac_cv_lib_project_setproject" >&5 7993{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_project_setproject" >&5
11465echo "${ECHO_T}$ac_cv_lib_project_setproject" >&6; } 7994$as_echo "$ac_cv_lib_project_setproject" >&6; }
11466if test $ac_cv_lib_project_setproject = yes; then 7995if test "x$ac_cv_lib_project_setproject" = xyes; then :
11467 7996
11468cat >>confdefs.h <<\_ACEOF 7997$as_echo "#define USE_SOLARIS_PROJECTS 1" >>confdefs.h
11469#define USE_SOLARIS_PROJECTS 1
11470_ACEOF
11471 7998
11472 LIBS="$LIBS -lproject" 7999 LIBS="$LIBS -lproject"
11473 SP_MSG="yes" 8000 SP_MSG="yes"
@@ -11478,32 +8005,26 @@ fi
11478 8005
11479 8006
11480# Check whether --with-solaris-privs was given. 8007# Check whether --with-solaris-privs was given.
11481if test "${with_solaris_privs+set}" = set; then 8008if test "${with_solaris_privs+set}" = set; then :
11482 withval=$with_solaris_privs; 8009 withval=$with_solaris_privs;
11483 { echo "$as_me:$LINENO: checking for Solaris/Illumos privilege support" >&5 8010 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris/Illumos privilege support" >&5
11484echo $ECHO_N "checking for Solaris/Illumos privilege support... $ECHO_C" >&6; } 8011$as_echo_n "checking for Solaris/Illumos privilege support... " >&6; }
11485 if test "x$ac_cv_func_setppriv" = "xyes" -a \ 8012 if test "x$ac_cv_func_setppriv" = "xyes" -a \
11486 "x$ac_cv_header_priv_h" = "xyes" ; then 8013 "x$ac_cv_header_priv_h" = "xyes" ; then
11487 SOLARIS_PRIVS=yes 8014 SOLARIS_PRIVS=yes
11488 { echo "$as_me:$LINENO: result: found" >&5 8015 { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
11489echo "${ECHO_T}found" >&6; } 8016$as_echo "found" >&6; }
11490 8017
11491cat >>confdefs.h <<\_ACEOF 8018$as_echo "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
11492#define NO_UID_RESTORATION_TEST 1
11493_ACEOF
11494 8019
11495 8020
11496cat >>confdefs.h <<\_ACEOF 8021$as_echo "#define USE_SOLARIS_PRIVS 1" >>confdefs.h
11497#define USE_SOLARIS_PRIVS 1
11498_ACEOF
11499 8022
11500 SPP_MSG="yes" 8023 SPP_MSG="yes"
11501 else 8024 else
11502 { echo "$as_me:$LINENO: result: not found" >&5 8025 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
11503echo "${ECHO_T}not found" >&6; } 8026$as_echo "not found" >&6; }
11504 { { echo "$as_me:$LINENO: error: *** must have support for Solaris privileges to use --with-solaris-privs" >&5 8027 as_fn_error $? "*** must have support for Solaris privileges to use --with-solaris-privs" "$LINENO" 5
11505echo "$as_me: error: *** must have support for Solaris privileges to use --with-solaris-privs" >&2;}
11506 { (exit 1); exit 1; }; }
11507 fi 8028 fi
11508 8029
11509fi 8030fi
@@ -11512,150 +8033,48 @@ fi
11512 ;; 8033 ;;
11513*-*-sunos4*) 8034*-*-sunos4*)
11514 CPPFLAGS="$CPPFLAGS -DSUNOS4" 8035 CPPFLAGS="$CPPFLAGS -DSUNOS4"
11515 8036 for ac_func in getpwanam
11516for ac_func in getpwanam 8037do :
11517do 8038 ac_fn_c_check_func "$LINENO" "getpwanam" "ac_cv_func_getpwanam"
11518as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 8039if test "x$ac_cv_func_getpwanam" = xyes; then :
11519{ echo "$as_me:$LINENO: checking for $ac_func" >&5
11520echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
11521if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
11522 echo $ECHO_N "(cached) $ECHO_C" >&6
11523else
11524 cat >conftest.$ac_ext <<_ACEOF
11525/* confdefs.h. */
11526_ACEOF
11527cat confdefs.h >>conftest.$ac_ext
11528cat >>conftest.$ac_ext <<_ACEOF
11529/* end confdefs.h. */
11530/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
11531 For example, HP-UX 11i <limits.h> declares gettimeofday. */
11532#define $ac_func innocuous_$ac_func
11533
11534/* System header to define __stub macros and hopefully few prototypes,
11535 which can conflict with char $ac_func (); below.
11536 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
11537 <limits.h> exists even on freestanding compilers. */
11538
11539#ifdef __STDC__
11540# include <limits.h>
11541#else
11542# include <assert.h>
11543#endif
11544
11545#undef $ac_func
11546
11547/* Override any GCC internal prototype to avoid an error.
11548 Use char because int might match the return type of a GCC
11549 builtin and then its argument prototype would still apply. */
11550#ifdef __cplusplus
11551extern "C"
11552#endif
11553char $ac_func ();
11554/* The GNU C library defines this for functions which it implements
11555 to always fail with ENOSYS. Some functions are actually named
11556 something starting with __ and the normal name is an alias. */
11557#if defined __stub_$ac_func || defined __stub___$ac_func
11558choke me
11559#endif
11560
11561int
11562main ()
11563{
11564return $ac_func ();
11565 ;
11566 return 0;
11567}
11568_ACEOF
11569rm -f conftest.$ac_objext conftest$ac_exeext
11570if { (ac_try="$ac_link"
11571case "(($ac_try" in
11572 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11573 *) ac_try_echo=$ac_try;;
11574esac
11575eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11576 (eval "$ac_link") 2>conftest.er1
11577 ac_status=$?
11578 grep -v '^ *+' conftest.er1 >conftest.err
11579 rm -f conftest.er1
11580 cat conftest.err >&5
11581 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11582 (exit $ac_status); } && {
11583 test -z "$ac_c_werror_flag" ||
11584 test ! -s conftest.err
11585 } && test -s conftest$ac_exeext &&
11586 $as_test_x conftest$ac_exeext; then
11587 eval "$as_ac_var=yes"
11588else
11589 echo "$as_me: failed program was:" >&5
11590sed 's/^/| /' conftest.$ac_ext >&5
11591
11592 eval "$as_ac_var=no"
11593fi
11594
11595rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11596 conftest$ac_exeext conftest.$ac_ext
11597fi
11598ac_res=`eval echo '${'$as_ac_var'}'`
11599 { echo "$as_me:$LINENO: result: $ac_res" >&5
11600echo "${ECHO_T}$ac_res" >&6; }
11601if test `eval echo '${'$as_ac_var'}'` = yes; then
11602 cat >>confdefs.h <<_ACEOF 8040 cat >>confdefs.h <<_ACEOF
11603#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 8041#define HAVE_GETPWANAM 1
11604_ACEOF 8042_ACEOF
11605 8043
11606fi 8044fi
11607done 8045done
11608 8046
11609 cat >>confdefs.h <<\_ACEOF 8047 $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
11610#define PAM_SUN_CODEBASE 1
11611_ACEOF
11612 8048
11613 conf_utmp_location=/etc/utmp 8049 conf_utmp_location=/etc/utmp
11614 conf_wtmp_location=/var/adm/wtmp 8050 conf_wtmp_location=/var/adm/wtmp
11615 conf_lastlog_location=/var/adm/lastlog 8051 conf_lastlog_location=/var/adm/lastlog
11616 cat >>confdefs.h <<\_ACEOF 8052 $as_echo "#define USE_PIPES 1" >>confdefs.h
11617#define USE_PIPES 1
11618_ACEOF
11619 8053
11620 ;; 8054 ;;
11621*-ncr-sysv*) 8055*-ncr-sysv*)
11622 LIBS="$LIBS -lc89" 8056 LIBS="$LIBS -lc89"
11623 cat >>confdefs.h <<\_ACEOF 8057 $as_echo "#define USE_PIPES 1" >>confdefs.h
11624#define USE_PIPES 1
11625_ACEOF
11626 8058
11627 cat >>confdefs.h <<\_ACEOF 8059 $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
11628#define SSHD_ACQUIRES_CTTY 1
11629_ACEOF
11630 8060
11631 cat >>confdefs.h <<\_ACEOF 8061 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
11632#define SETEUID_BREAKS_SETUID 1
11633_ACEOF
11634 8062
11635 cat >>confdefs.h <<\_ACEOF 8063 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
11636#define BROKEN_SETREUID 1
11637_ACEOF
11638 8064
11639 cat >>confdefs.h <<\_ACEOF 8065 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
11640#define BROKEN_SETREGID 1
11641_ACEOF
11642 8066
11643 ;; 8067 ;;
11644*-sni-sysv*) 8068*-sni-sysv*)
11645 # /usr/ucblib MUST NOT be searched on ReliantUNIX 8069 # /usr/ucblib MUST NOT be searched on ReliantUNIX
11646 8070 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
11647{ echo "$as_me:$LINENO: checking for dlsym in -ldl" >&5 8071$as_echo_n "checking for dlsym in -ldl... " >&6; }
11648echo $ECHO_N "checking for dlsym in -ldl... $ECHO_C" >&6; } 8072if ${ac_cv_lib_dl_dlsym+:} false; then :
11649if test "${ac_cv_lib_dl_dlsym+set}" = set; then 8073 $as_echo_n "(cached) " >&6
11650 echo $ECHO_N "(cached) $ECHO_C" >&6
11651else 8074else
11652 ac_check_lib_save_LIBS=$LIBS 8075 ac_check_lib_save_LIBS=$LIBS
11653LIBS="-ldl $LIBS" 8076LIBS="-ldl $LIBS"
11654cat >conftest.$ac_ext <<_ACEOF 8077cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11655/* confdefs.h. */
11656_ACEOF
11657cat confdefs.h >>conftest.$ac_ext
11658cat >>conftest.$ac_ext <<_ACEOF
11659/* end confdefs.h. */ 8078/* end confdefs.h. */
11660 8079
11661/* Override any GCC internal prototype to avoid an error. 8080/* Override any GCC internal prototype to avoid an error.
@@ -11673,39 +8092,18 @@ return dlsym ();
11673 return 0; 8092 return 0;
11674} 8093}
11675_ACEOF 8094_ACEOF
11676rm -f conftest.$ac_objext conftest$ac_exeext 8095if ac_fn_c_try_link "$LINENO"; then :
11677if { (ac_try="$ac_link"
11678case "(($ac_try" in
11679 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11680 *) ac_try_echo=$ac_try;;
11681esac
11682eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11683 (eval "$ac_link") 2>conftest.er1
11684 ac_status=$?
11685 grep -v '^ *+' conftest.er1 >conftest.err
11686 rm -f conftest.er1
11687 cat conftest.err >&5
11688 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11689 (exit $ac_status); } && {
11690 test -z "$ac_c_werror_flag" ||
11691 test ! -s conftest.err
11692 } && test -s conftest$ac_exeext &&
11693 $as_test_x conftest$ac_exeext; then
11694 ac_cv_lib_dl_dlsym=yes 8096 ac_cv_lib_dl_dlsym=yes
11695else 8097else
11696 echo "$as_me: failed program was:" >&5 8098 ac_cv_lib_dl_dlsym=no
11697sed 's/^/| /' conftest.$ac_ext >&5
11698
11699 ac_cv_lib_dl_dlsym=no
11700fi 8099fi
11701 8100rm -f core conftest.err conftest.$ac_objext \
11702rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8101 conftest$ac_exeext conftest.$ac_ext
11703 conftest$ac_exeext conftest.$ac_ext
11704LIBS=$ac_check_lib_save_LIBS 8102LIBS=$ac_check_lib_save_LIBS
11705fi 8103fi
11706{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlsym" >&5 8104{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
11707echo "${ECHO_T}$ac_cv_lib_dl_dlsym" >&6; } 8105$as_echo "$ac_cv_lib_dl_dlsym" >&6; }
11708if test $ac_cv_lib_dl_dlsym = yes; then 8106if test "x$ac_cv_lib_dl_dlsym" = xyes; then :
11709 cat >>confdefs.h <<_ACEOF 8107 cat >>confdefs.h <<_ACEOF
11710#define HAVE_LIBDL 1 8108#define HAVE_LIBDL 1
11711_ACEOF 8109_ACEOF
@@ -11715,18 +8113,14 @@ _ACEOF
11715fi 8113fi
11716 8114
11717 # -lresolv needs to be at the end of LIBS or DNS lookups break 8115 # -lresolv needs to be at the end of LIBS or DNS lookups break
11718 { echo "$as_me:$LINENO: checking for res_query in -lresolv" >&5 8116 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
11719echo $ECHO_N "checking for res_query in -lresolv... $ECHO_C" >&6; } 8117$as_echo_n "checking for res_query in -lresolv... " >&6; }
11720if test "${ac_cv_lib_resolv_res_query+set}" = set; then 8118if ${ac_cv_lib_resolv_res_query+:} false; then :
11721 echo $ECHO_N "(cached) $ECHO_C" >&6 8119 $as_echo_n "(cached) " >&6
11722else 8120else
11723 ac_check_lib_save_LIBS=$LIBS 8121 ac_check_lib_save_LIBS=$LIBS
11724LIBS="-lresolv $LIBS" 8122LIBS="-lresolv $LIBS"
11725cat >conftest.$ac_ext <<_ACEOF 8123cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11726/* confdefs.h. */
11727_ACEOF
11728cat confdefs.h >>conftest.$ac_ext
11729cat >>conftest.$ac_ext <<_ACEOF
11730/* end confdefs.h. */ 8124/* end confdefs.h. */
11731 8125
11732/* Override any GCC internal prototype to avoid an error. 8126/* Override any GCC internal prototype to avoid an error.
@@ -11744,66 +8138,33 @@ return res_query ();
11744 return 0; 8138 return 0;
11745} 8139}
11746_ACEOF 8140_ACEOF
11747rm -f conftest.$ac_objext conftest$ac_exeext 8141if ac_fn_c_try_link "$LINENO"; then :
11748if { (ac_try="$ac_link"
11749case "(($ac_try" in
11750 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11751 *) ac_try_echo=$ac_try;;
11752esac
11753eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11754 (eval "$ac_link") 2>conftest.er1
11755 ac_status=$?
11756 grep -v '^ *+' conftest.er1 >conftest.err
11757 rm -f conftest.er1
11758 cat conftest.err >&5
11759 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11760 (exit $ac_status); } && {
11761 test -z "$ac_c_werror_flag" ||
11762 test ! -s conftest.err
11763 } && test -s conftest$ac_exeext &&
11764 $as_test_x conftest$ac_exeext; then
11765 ac_cv_lib_resolv_res_query=yes 8142 ac_cv_lib_resolv_res_query=yes
11766else 8143else
11767 echo "$as_me: failed program was:" >&5 8144 ac_cv_lib_resolv_res_query=no
11768sed 's/^/| /' conftest.$ac_ext >&5
11769
11770 ac_cv_lib_resolv_res_query=no
11771fi 8145fi
11772 8146rm -f core conftest.err conftest.$ac_objext \
11773rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8147 conftest$ac_exeext conftest.$ac_ext
11774 conftest$ac_exeext conftest.$ac_ext
11775LIBS=$ac_check_lib_save_LIBS 8148LIBS=$ac_check_lib_save_LIBS
11776fi 8149fi
11777{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_query" >&5 8150{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
11778echo "${ECHO_T}$ac_cv_lib_resolv_res_query" >&6; } 8151$as_echo "$ac_cv_lib_resolv_res_query" >&6; }
11779if test $ac_cv_lib_resolv_res_query = yes; then 8152if test "x$ac_cv_lib_resolv_res_query" = xyes; then :
11780 LIBS="$LIBS -lresolv" 8153 LIBS="$LIBS -lresolv"
11781fi 8154fi
11782 8155
11783 IPADDR_IN_DISPLAY=yes 8156 IPADDR_IN_DISPLAY=yes
11784 cat >>confdefs.h <<\_ACEOF 8157 $as_echo "#define USE_PIPES 1" >>confdefs.h
11785#define USE_PIPES 1
11786_ACEOF
11787 8158
11788 cat >>confdefs.h <<\_ACEOF 8159 $as_echo "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
11789#define IP_TOS_IS_BROKEN 1
11790_ACEOF
11791 8160
11792 cat >>confdefs.h <<\_ACEOF 8161 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
11793#define SETEUID_BREAKS_SETUID 1
11794_ACEOF
11795 8162
11796 cat >>confdefs.h <<\_ACEOF 8163 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
11797#define BROKEN_SETREUID 1
11798_ACEOF
11799 8164
11800 cat >>confdefs.h <<\_ACEOF 8165 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
11801#define BROKEN_SETREGID 1
11802_ACEOF
11803 8166
11804 cat >>confdefs.h <<\_ACEOF 8167 $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
11805#define SSHD_ACQUIRES_CTTY 1
11806_ACEOF
11807 8168
11808 external_path_file=/etc/default/login 8169 external_path_file=/etc/default/login
11809 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX 8170 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
@@ -11812,30 +8173,18 @@ _ACEOF
11812 ;; 8173 ;;
11813# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel. 8174# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
11814*-*-sysv4.2*) 8175*-*-sysv4.2*)
11815 cat >>confdefs.h <<\_ACEOF 8176 $as_echo "#define USE_PIPES 1" >>confdefs.h
11816#define USE_PIPES 1
11817_ACEOF
11818 8177
11819 cat >>confdefs.h <<\_ACEOF 8178 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
11820#define SETEUID_BREAKS_SETUID 1
11821_ACEOF
11822 8179
11823 cat >>confdefs.h <<\_ACEOF 8180 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
11824#define BROKEN_SETREUID 1
11825_ACEOF
11826 8181
11827 cat >>confdefs.h <<\_ACEOF 8182 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
11828#define BROKEN_SETREGID 1
11829_ACEOF
11830 8183
11831 8184
11832cat >>confdefs.h <<\_ACEOF 8185$as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
11833#define PASSWD_NEEDS_USERNAME 1
11834_ACEOF
11835 8186
11836 cat >>confdefs.h <<\_ACEOF 8187 $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
11837#define LOCKED_PASSWD_STRING "*LK*"
11838_ACEOF
11839 8188
11840 TEST_SHELL=$SHELL # let configure find us a capable shell 8189 TEST_SHELL=$SHELL # let configure find us a capable shell
11841 ;; 8190 ;;
@@ -11843,59 +8192,37 @@ _ACEOF
11843*-*-sysv5*) 8192*-*-sysv5*)
11844 CPPFLAGS="$CPPFLAGS -Dvsnprintf=_xvsnprintf -Dsnprintf=_xsnprintf" 8193 CPPFLAGS="$CPPFLAGS -Dvsnprintf=_xvsnprintf -Dsnprintf=_xsnprintf"
11845 8194
11846cat >>confdefs.h <<\_ACEOF 8195$as_echo "#define UNIXWARE_LONG_PASSWORDS 1" >>confdefs.h
11847#define UNIXWARE_LONG_PASSWORDS 1
11848_ACEOF
11849 8196
11850 cat >>confdefs.h <<\_ACEOF 8197 $as_echo "#define USE_PIPES 1" >>confdefs.h
11851#define USE_PIPES 1
11852_ACEOF
11853 8198
11854 cat >>confdefs.h <<\_ACEOF 8199 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
11855#define SETEUID_BREAKS_SETUID 1
11856_ACEOF
11857 8200
11858 cat >>confdefs.h <<\_ACEOF 8201 $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
11859#define BROKEN_GETADDRINFO 1
11860_ACEOF
11861 8202
11862 cat >>confdefs.h <<\_ACEOF 8203 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
11863#define BROKEN_SETREUID 1
11864_ACEOF
11865 8204
11866 cat >>confdefs.h <<\_ACEOF 8205 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
11867#define BROKEN_SETREGID 1
11868_ACEOF
11869 8206
11870 cat >>confdefs.h <<\_ACEOF 8207 $as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
11871#define PASSWD_NEEDS_USERNAME 1
11872_ACEOF
11873 8208
11874 TEST_SHELL=$SHELL # let configure find us a capable shell 8209 TEST_SHELL=$SHELL # let configure find us a capable shell
11875 case "$host" in 8210 case "$host" in
11876 *-*-sysv5SCO_SV*) # SCO OpenServer 6.x 8211 *-*-sysv5SCO_SV*) # SCO OpenServer 6.x
11877 maildir=/var/spool/mail 8212 maildir=/var/spool/mail
11878 8213
11879cat >>confdefs.h <<\_ACEOF 8214$as_echo "#define BROKEN_LIBIAF 1" >>confdefs.h
11880#define BROKEN_LIBIAF 1
11881_ACEOF
11882 8215
11883 cat >>confdefs.h <<\_ACEOF 8216 $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
11884#define BROKEN_UPDWTMPX 1
11885_ACEOF
11886 8217
11887 { echo "$as_me:$LINENO: checking for getluid in -lprot" >&5 8218 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getluid in -lprot" >&5
11888echo $ECHO_N "checking for getluid in -lprot... $ECHO_C" >&6; } 8219$as_echo_n "checking for getluid in -lprot... " >&6; }
11889if test "${ac_cv_lib_prot_getluid+set}" = set; then 8220if ${ac_cv_lib_prot_getluid+:} false; then :
11890 echo $ECHO_N "(cached) $ECHO_C" >&6 8221 $as_echo_n "(cached) " >&6
11891else 8222else
11892 ac_check_lib_save_LIBS=$LIBS 8223 ac_check_lib_save_LIBS=$LIBS
11893LIBS="-lprot $LIBS" 8224LIBS="-lprot $LIBS"
11894cat >conftest.$ac_ext <<_ACEOF 8225cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11895/* confdefs.h. */
11896_ACEOF
11897cat confdefs.h >>conftest.$ac_ext
11898cat >>conftest.$ac_ext <<_ACEOF
11899/* end confdefs.h. */ 8226/* end confdefs.h. */
11900 8227
11901/* Override any GCC internal prototype to avoid an error. 8228/* Override any GCC internal prototype to avoid an error.
@@ -11913,150 +8240,40 @@ return getluid ();
11913 return 0; 8240 return 0;
11914} 8241}
11915_ACEOF 8242_ACEOF
11916rm -f conftest.$ac_objext conftest$ac_exeext 8243if ac_fn_c_try_link "$LINENO"; then :
11917if { (ac_try="$ac_link"
11918case "(($ac_try" in
11919 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11920 *) ac_try_echo=$ac_try;;
11921esac
11922eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11923 (eval "$ac_link") 2>conftest.er1
11924 ac_status=$?
11925 grep -v '^ *+' conftest.er1 >conftest.err
11926 rm -f conftest.er1
11927 cat conftest.err >&5
11928 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11929 (exit $ac_status); } && {
11930 test -z "$ac_c_werror_flag" ||
11931 test ! -s conftest.err
11932 } && test -s conftest$ac_exeext &&
11933 $as_test_x conftest$ac_exeext; then
11934 ac_cv_lib_prot_getluid=yes 8244 ac_cv_lib_prot_getluid=yes
11935else 8245else
11936 echo "$as_me: failed program was:" >&5 8246 ac_cv_lib_prot_getluid=no
11937sed 's/^/| /' conftest.$ac_ext >&5
11938
11939 ac_cv_lib_prot_getluid=no
11940fi 8247fi
11941 8248rm -f core conftest.err conftest.$ac_objext \
11942rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8249 conftest$ac_exeext conftest.$ac_ext
11943 conftest$ac_exeext conftest.$ac_ext
11944LIBS=$ac_check_lib_save_LIBS 8250LIBS=$ac_check_lib_save_LIBS
11945fi 8251fi
11946{ echo "$as_me:$LINENO: result: $ac_cv_lib_prot_getluid" >&5 8252{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_prot_getluid" >&5
11947echo "${ECHO_T}$ac_cv_lib_prot_getluid" >&6; } 8253$as_echo "$ac_cv_lib_prot_getluid" >&6; }
11948if test $ac_cv_lib_prot_getluid = yes; then 8254if test "x$ac_cv_lib_prot_getluid" = xyes; then :
11949 LIBS="$LIBS -lprot" 8255 LIBS="$LIBS -lprot"
11950 8256 for ac_func in getluid setluid
11951 8257do :
11952for ac_func in getluid setluid 8258 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
11953do 8259ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
11954as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 8260if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
11955{ echo "$as_me:$LINENO: checking for $ac_func" >&5
11956echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
11957if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
11958 echo $ECHO_N "(cached) $ECHO_C" >&6
11959else
11960 cat >conftest.$ac_ext <<_ACEOF
11961/* confdefs.h. */
11962_ACEOF
11963cat confdefs.h >>conftest.$ac_ext
11964cat >>conftest.$ac_ext <<_ACEOF
11965/* end confdefs.h. */
11966/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
11967 For example, HP-UX 11i <limits.h> declares gettimeofday. */
11968#define $ac_func innocuous_$ac_func
11969
11970/* System header to define __stub macros and hopefully few prototypes,
11971 which can conflict with char $ac_func (); below.
11972 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
11973 <limits.h> exists even on freestanding compilers. */
11974
11975#ifdef __STDC__
11976# include <limits.h>
11977#else
11978# include <assert.h>
11979#endif
11980
11981#undef $ac_func
11982
11983/* Override any GCC internal prototype to avoid an error.
11984 Use char because int might match the return type of a GCC
11985 builtin and then its argument prototype would still apply. */
11986#ifdef __cplusplus
11987extern "C"
11988#endif
11989char $ac_func ();
11990/* The GNU C library defines this for functions which it implements
11991 to always fail with ENOSYS. Some functions are actually named
11992 something starting with __ and the normal name is an alias. */
11993#if defined __stub_$ac_func || defined __stub___$ac_func
11994choke me
11995#endif
11996
11997int
11998main ()
11999{
12000return $ac_func ();
12001 ;
12002 return 0;
12003}
12004_ACEOF
12005rm -f conftest.$ac_objext conftest$ac_exeext
12006if { (ac_try="$ac_link"
12007case "(($ac_try" in
12008 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12009 *) ac_try_echo=$ac_try;;
12010esac
12011eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12012 (eval "$ac_link") 2>conftest.er1
12013 ac_status=$?
12014 grep -v '^ *+' conftest.er1 >conftest.err
12015 rm -f conftest.er1
12016 cat conftest.err >&5
12017 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12018 (exit $ac_status); } && {
12019 test -z "$ac_c_werror_flag" ||
12020 test ! -s conftest.err
12021 } && test -s conftest$ac_exeext &&
12022 $as_test_x conftest$ac_exeext; then
12023 eval "$as_ac_var=yes"
12024else
12025 echo "$as_me: failed program was:" >&5
12026sed 's/^/| /' conftest.$ac_ext >&5
12027
12028 eval "$as_ac_var=no"
12029fi
12030
12031rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12032 conftest$ac_exeext conftest.$ac_ext
12033fi
12034ac_res=`eval echo '${'$as_ac_var'}'`
12035 { echo "$as_me:$LINENO: result: $ac_res" >&5
12036echo "${ECHO_T}$ac_res" >&6; }
12037if test `eval echo '${'$as_ac_var'}'` = yes; then
12038 cat >>confdefs.h <<_ACEOF 8261 cat >>confdefs.h <<_ACEOF
12039#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 8262#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
12040_ACEOF 8263_ACEOF
12041 8264
12042fi 8265fi
12043done 8266done
12044 8267
12045 cat >>confdefs.h <<\_ACEOF 8268 $as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
12046#define HAVE_SECUREWARE 1
12047_ACEOF
12048 8269
12049 cat >>confdefs.h <<\_ACEOF 8270 $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
12050#define DISABLE_SHADOW 1
12051_ACEOF
12052 8271
12053 8272
12054fi 8273fi
12055 8274
12056 ;; 8275 ;;
12057 *) cat >>confdefs.h <<\_ACEOF 8276 *) $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
12058#define LOCKED_PASSWD_STRING "*LK*"
12059_ACEOF
12060 8277
12061 check_for_libcrypt_later=1 8278 check_for_libcrypt_later=1
12062 ;; 8279 ;;
@@ -12066,9 +8283,7 @@ _ACEOF
12066 ;; 8283 ;;
12067# SCO UNIX and OEM versions of SCO UNIX 8284# SCO UNIX and OEM versions of SCO UNIX
12068*-*-sco3.2v4*) 8285*-*-sco3.2v4*)
12069 { { echo "$as_me:$LINENO: error: \"This Platform is no longer supported.\"" >&5 8286 as_fn_error $? "\"This Platform is no longer supported.\"" "$LINENO" 5
12070echo "$as_me: error: \"This Platform is no longer supported.\"" >&2;}
12071 { (exit 1); exit 1; }; }
12072 ;; 8287 ;;
12073# SCO OpenServer 5.x 8288# SCO OpenServer 5.x
12074*-*-sco3.2v5*) 8289*-*-sco3.2v5*)
@@ -12077,140 +8292,35 @@ echo "$as_me: error: \"This Platform is no longer supported.\"" >&2;}
12077 fi 8292 fi
12078 LIBS="$LIBS -lprot -lx -ltinfo -lm" 8293 LIBS="$LIBS -lprot -lx -ltinfo -lm"
12079 no_dev_ptmx=1 8294 no_dev_ptmx=1
12080 cat >>confdefs.h <<\_ACEOF 8295 $as_echo "#define USE_PIPES 1" >>confdefs.h
12081#define USE_PIPES 1
12082_ACEOF
12083 8296
12084 cat >>confdefs.h <<\_ACEOF 8297 $as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
12085#define HAVE_SECUREWARE 1
12086_ACEOF
12087 8298
12088 cat >>confdefs.h <<\_ACEOF 8299 $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
12089#define DISABLE_SHADOW 1
12090_ACEOF
12091
12092 cat >>confdefs.h <<\_ACEOF
12093#define DISABLE_FD_PASSING 1
12094_ACEOF
12095
12096 cat >>confdefs.h <<\_ACEOF
12097#define SETEUID_BREAKS_SETUID 1
12098_ACEOF
12099 8300
12100 cat >>confdefs.h <<\_ACEOF 8301 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12101#define BROKEN_GETADDRINFO 1
12102_ACEOF
12103 8302
12104 cat >>confdefs.h <<\_ACEOF 8303 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
12105#define BROKEN_SETREUID 1
12106_ACEOF
12107 8304
12108 cat >>confdefs.h <<\_ACEOF 8305 $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
12109#define BROKEN_SETREGID 1
12110_ACEOF
12111 8306
12112 cat >>confdefs.h <<\_ACEOF 8307 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
12113#define WITH_ABBREV_NO_TTY 1
12114_ACEOF
12115 8308
12116 cat >>confdefs.h <<\_ACEOF 8309 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
12117#define BROKEN_UPDWTMPX 1
12118_ACEOF
12119 8310
12120 cat >>confdefs.h <<\_ACEOF 8311 $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
12121#define PASSWD_NEEDS_USERNAME 1
12122_ACEOF
12123 8312
8313 $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
12124 8314
8315 $as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
12125 8316
12126for ac_func in getluid setluid 8317 for ac_func in getluid setluid
12127do 8318do :
12128as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 8319 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
12129{ echo "$as_me:$LINENO: checking for $ac_func" >&5 8320ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
12130echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 8321if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
12131if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
12132 echo $ECHO_N "(cached) $ECHO_C" >&6
12133else
12134 cat >conftest.$ac_ext <<_ACEOF
12135/* confdefs.h. */
12136_ACEOF
12137cat confdefs.h >>conftest.$ac_ext
12138cat >>conftest.$ac_ext <<_ACEOF
12139/* end confdefs.h. */
12140/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
12141 For example, HP-UX 11i <limits.h> declares gettimeofday. */
12142#define $ac_func innocuous_$ac_func
12143
12144/* System header to define __stub macros and hopefully few prototypes,
12145 which can conflict with char $ac_func (); below.
12146 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
12147 <limits.h> exists even on freestanding compilers. */
12148
12149#ifdef __STDC__
12150# include <limits.h>
12151#else
12152# include <assert.h>
12153#endif
12154
12155#undef $ac_func
12156
12157/* Override any GCC internal prototype to avoid an error.
12158 Use char because int might match the return type of a GCC
12159 builtin and then its argument prototype would still apply. */
12160#ifdef __cplusplus
12161extern "C"
12162#endif
12163char $ac_func ();
12164/* The GNU C library defines this for functions which it implements
12165 to always fail with ENOSYS. Some functions are actually named
12166 something starting with __ and the normal name is an alias. */
12167#if defined __stub_$ac_func || defined __stub___$ac_func
12168choke me
12169#endif
12170
12171int
12172main ()
12173{
12174return $ac_func ();
12175 ;
12176 return 0;
12177}
12178_ACEOF
12179rm -f conftest.$ac_objext conftest$ac_exeext
12180if { (ac_try="$ac_link"
12181case "(($ac_try" in
12182 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12183 *) ac_try_echo=$ac_try;;
12184esac
12185eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12186 (eval "$ac_link") 2>conftest.er1
12187 ac_status=$?
12188 grep -v '^ *+' conftest.er1 >conftest.err
12189 rm -f conftest.er1
12190 cat conftest.err >&5
12191 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12192 (exit $ac_status); } && {
12193 test -z "$ac_c_werror_flag" ||
12194 test ! -s conftest.err
12195 } && test -s conftest$ac_exeext &&
12196 $as_test_x conftest$ac_exeext; then
12197 eval "$as_ac_var=yes"
12198else
12199 echo "$as_me: failed program was:" >&5
12200sed 's/^/| /' conftest.$ac_ext >&5
12201
12202 eval "$as_ac_var=no"
12203fi
12204
12205rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12206 conftest$ac_exeext conftest.$ac_ext
12207fi
12208ac_res=`eval echo '${'$as_ac_var'}'`
12209 { echo "$as_me:$LINENO: result: $ac_res" >&5
12210echo "${ECHO_T}$ac_res" >&6; }
12211if test `eval echo '${'$as_ac_var'}'` = yes; then
12212 cat >>confdefs.h <<_ACEOF 8322 cat >>confdefs.h <<_ACEOF
12213#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 8323#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
12214_ACEOF 8324_ACEOF
12215 8325
12216fi 8326fi
@@ -12222,103 +8332,67 @@ done
12222 ;; 8332 ;;
12223*-*-unicosmk*) 8333*-*-unicosmk*)
12224 8334
12225cat >>confdefs.h <<\_ACEOF 8335$as_echo "#define NO_SSH_LASTLOG 1" >>confdefs.h
12226#define NO_SSH_LASTLOG 1
12227_ACEOF
12228 8336
12229 cat >>confdefs.h <<\_ACEOF 8337 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
12230#define SETEUID_BREAKS_SETUID 1
12231_ACEOF
12232 8338
12233 cat >>confdefs.h <<\_ACEOF 8339 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
12234#define BROKEN_SETREUID 1
12235_ACEOF
12236 8340
12237 cat >>confdefs.h <<\_ACEOF 8341 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
12238#define BROKEN_SETREGID 1
12239_ACEOF
12240 8342
12241 cat >>confdefs.h <<\_ACEOF 8343 $as_echo "#define USE_PIPES 1" >>confdefs.h
12242#define USE_PIPES 1
12243_ACEOF
12244 8344
12245 cat >>confdefs.h <<\_ACEOF 8345 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12246#define DISABLE_FD_PASSING 1
12247_ACEOF
12248 8346
12249 LDFLAGS="$LDFLAGS" 8347 LDFLAGS="$LDFLAGS"
12250 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" 8348 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
12251 MANTYPE=cat 8349 MANTYPE=cat
12252 ;; 8350 ;;
12253*-*-unicosmp*) 8351*-*-unicosmp*)
12254 cat >>confdefs.h <<\_ACEOF 8352 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
12255#define SETEUID_BREAKS_SETUID 1
12256_ACEOF
12257 8353
12258 cat >>confdefs.h <<\_ACEOF 8354 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
12259#define BROKEN_SETREUID 1
12260_ACEOF
12261 8355
12262 cat >>confdefs.h <<\_ACEOF 8356 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
12263#define BROKEN_SETREGID 1
12264_ACEOF
12265 8357
12266 cat >>confdefs.h <<\_ACEOF 8358 $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
12267#define WITH_ABBREV_NO_TTY 1
12268_ACEOF
12269 8359
12270 cat >>confdefs.h <<\_ACEOF 8360 $as_echo "#define USE_PIPES 1" >>confdefs.h
12271#define USE_PIPES 1
12272_ACEOF
12273 8361
12274 cat >>confdefs.h <<\_ACEOF 8362 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12275#define DISABLE_FD_PASSING 1
12276_ACEOF
12277 8363
12278 LDFLAGS="$LDFLAGS" 8364 LDFLAGS="$LDFLAGS"
12279 LIBS="$LIBS -lgen -lacid -ldb" 8365 LIBS="$LIBS -lgen -lacid -ldb"
12280 MANTYPE=cat 8366 MANTYPE=cat
12281 ;; 8367 ;;
12282*-*-unicos*) 8368*-*-unicos*)
12283 cat >>confdefs.h <<\_ACEOF 8369 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
12284#define SETEUID_BREAKS_SETUID 1
12285_ACEOF
12286 8370
12287 cat >>confdefs.h <<\_ACEOF 8371 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
12288#define BROKEN_SETREUID 1
12289_ACEOF
12290 8372
12291 cat >>confdefs.h <<\_ACEOF 8373 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
12292#define BROKEN_SETREGID 1
12293_ACEOF
12294 8374
12295 cat >>confdefs.h <<\_ACEOF 8375 $as_echo "#define USE_PIPES 1" >>confdefs.h
12296#define USE_PIPES 1
12297_ACEOF
12298 8376
12299 cat >>confdefs.h <<\_ACEOF 8377 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12300#define DISABLE_FD_PASSING 1
12301_ACEOF
12302 8378
12303 cat >>confdefs.h <<\_ACEOF 8379 $as_echo "#define NO_SSH_LASTLOG 1" >>confdefs.h
12304#define NO_SSH_LASTLOG 1
12305_ACEOF
12306 8380
12307 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" 8381 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
12308 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" 8382 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
12309 MANTYPE=cat 8383 MANTYPE=cat
12310 ;; 8384 ;;
12311*-dec-osf*) 8385*-dec-osf*)
12312 { echo "$as_me:$LINENO: checking for Digital Unix SIA" >&5 8386 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Digital Unix SIA" >&5
12313echo $ECHO_N "checking for Digital Unix SIA... $ECHO_C" >&6; } 8387$as_echo_n "checking for Digital Unix SIA... " >&6; }
12314 no_osfsia="" 8388 no_osfsia=""
12315 8389
12316# Check whether --with-osfsia was given. 8390# Check whether --with-osfsia was given.
12317if test "${with_osfsia+set}" = set; then 8391if test "${with_osfsia+set}" = set; then :
12318 withval=$with_osfsia; 8392 withval=$with_osfsia;
12319 if test "x$withval" = "xno" ; then 8393 if test "x$withval" = "xno" ; then
12320 { echo "$as_me:$LINENO: result: disabled" >&5 8394 { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
12321echo "${ECHO_T}disabled" >&6; } 8395$as_echo "disabled" >&6; }
12322 no_osfsia=1 8396 no_osfsia=1
12323 fi 8397 fi
12324 8398
@@ -12326,85 +8400,55 @@ fi
12326 8400
12327 if test -z "$no_osfsia" ; then 8401 if test -z "$no_osfsia" ; then
12328 if test -f /etc/sia/matrix.conf; then 8402 if test -f /etc/sia/matrix.conf; then
12329 { echo "$as_me:$LINENO: result: yes" >&5 8403 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
12330echo "${ECHO_T}yes" >&6; } 8404$as_echo "yes" >&6; }
12331 8405
12332cat >>confdefs.h <<\_ACEOF 8406$as_echo "#define HAVE_OSF_SIA 1" >>confdefs.h
12333#define HAVE_OSF_SIA 1
12334_ACEOF
12335 8407
12336 8408
12337cat >>confdefs.h <<\_ACEOF 8409$as_echo "#define DISABLE_LOGIN 1" >>confdefs.h
12338#define DISABLE_LOGIN 1
12339_ACEOF
12340 8410
12341 cat >>confdefs.h <<\_ACEOF 8411 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12342#define DISABLE_FD_PASSING 1
12343_ACEOF
12344 8412
12345 LIBS="$LIBS -lsecurity -ldb -lm -laud" 8413 LIBS="$LIBS -lsecurity -ldb -lm -laud"
12346 SIA_MSG="yes" 8414 SIA_MSG="yes"
12347 else 8415 else
12348 { echo "$as_me:$LINENO: result: no" >&5 8416 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12349echo "${ECHO_T}no" >&6; } 8417$as_echo "no" >&6; }
12350 8418
12351cat >>confdefs.h <<\_ACEOF 8419$as_echo "#define LOCKED_PASSWD_SUBSTR \"Nologin\"" >>confdefs.h
12352#define LOCKED_PASSWD_SUBSTR "Nologin"
12353_ACEOF
12354 8420
12355 fi 8421 fi
12356 fi 8422 fi
12357 cat >>confdefs.h <<\_ACEOF 8423 $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
12358#define BROKEN_GETADDRINFO 1
12359_ACEOF
12360 8424
12361 cat >>confdefs.h <<\_ACEOF 8425 $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
12362#define SETEUID_BREAKS_SETUID 1
12363_ACEOF
12364 8426
12365 cat >>confdefs.h <<\_ACEOF 8427 $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
12366#define BROKEN_SETREUID 1
12367_ACEOF
12368 8428
12369 cat >>confdefs.h <<\_ACEOF 8429 $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
12370#define BROKEN_SETREGID 1
12371_ACEOF
12372 8430
12373 8431
12374cat >>confdefs.h <<\_ACEOF 8432$as_echo "#define BROKEN_READV_COMPARISON 1" >>confdefs.h
12375#define BROKEN_READV_COMPARISON 1
12376_ACEOF
12377 8433
12378 ;; 8434 ;;
12379 8435
12380*-*-nto-qnx*) 8436*-*-nto-qnx*)
12381 cat >>confdefs.h <<\_ACEOF 8437 $as_echo "#define USE_PIPES 1" >>confdefs.h
12382#define USE_PIPES 1
12383_ACEOF
12384 8438
12385 cat >>confdefs.h <<\_ACEOF 8439 $as_echo "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
12386#define NO_X11_UNIX_SOCKETS 1
12387_ACEOF
12388 8440
12389 cat >>confdefs.h <<\_ACEOF 8441 $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
12390#define DISABLE_LASTLOG 1
12391_ACEOF
12392 8442
12393 cat >>confdefs.h <<\_ACEOF 8443 $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
12394#define SSHD_ACQUIRES_CTTY 1
12395_ACEOF
12396 8444
12397 8445
12398cat >>confdefs.h <<\_ACEOF 8446$as_echo "#define BROKEN_SHADOW_EXPIRE 1" >>confdefs.h
12399#define BROKEN_SHADOW_EXPIRE 1
12400_ACEOF
12401 8447
12402 enable_etc_default_login=no # has incompatible /etc/default/login 8448 enable_etc_default_login=no # has incompatible /etc/default/login
12403 case "$host" in 8449 case "$host" in
12404 *-*-nto-qnx6*) 8450 *-*-nto-qnx6*)
12405 cat >>confdefs.h <<\_ACEOF 8451 $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
12406#define DISABLE_FD_PASSING 1
12407_ACEOF
12408 8452
12409 ;; 8453 ;;
12410 esac 8454 esac
@@ -12412,48 +8456,31 @@ _ACEOF
12412 8456
12413*-*-ultrix*) 8457*-*-ultrix*)
12414 8458
12415cat >>confdefs.h <<\_ACEOF 8459$as_echo "#define BROKEN_GETGROUPS 1" >>confdefs.h
12416#define BROKEN_GETGROUPS 1
12417_ACEOF
12418
12419
12420cat >>confdefs.h <<\_ACEOF
12421#define BROKEN_MMAP 1
12422_ACEOF
12423 8460
12424 cat >>confdefs.h <<\_ACEOF 8461 $as_echo "#define NEED_SETPGRP 1" >>confdefs.h
12425#define NEED_SETPGRP 1
12426_ACEOF
12427 8462
12428 8463
12429cat >>confdefs.h <<\_ACEOF 8464$as_echo "#define HAVE_SYS_SYSLOG_H 1" >>confdefs.h
12430#define HAVE_SYS_SYSLOG_H 1
12431_ACEOF
12432 8465
12433 ;; 8466 ;;
12434 8467
12435*-*-lynxos) 8468*-*-lynxos)
12436 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__" 8469 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
12437 8470
12438cat >>confdefs.h <<\_ACEOF 8471$as_echo "#define BROKEN_SETVBUF 1" >>confdefs.h
12439#define BROKEN_SETVBUF 1
12440_ACEOF
12441 8472
12442 ;; 8473 ;;
12443esac 8474esac
12444 8475
12445{ echo "$as_me:$LINENO: checking compiler and flags for sanity" >&5 8476{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler and flags for sanity" >&5
12446echo $ECHO_N "checking compiler and flags for sanity... $ECHO_C" >&6; } 8477$as_echo_n "checking compiler and flags for sanity... " >&6; }
12447if test "$cross_compiling" = yes; then 8478if test "$cross_compiling" = yes; then :
12448 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking compiler sanity" >&5 8479 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking compiler sanity" >&5
12449echo "$as_me: WARNING: cross compiling: not checking compiler sanity" >&2;} 8480$as_echo "$as_me: WARNING: cross compiling: not checking compiler sanity" >&2;}
12450 8481
12451else 8482else
12452 cat >conftest.$ac_ext <<_ACEOF 8483 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12453/* confdefs.h. */
12454_ACEOF
12455cat confdefs.h >>conftest.$ac_ext
12456cat >>conftest.$ac_ext <<_ACEOF
12457/* end confdefs.h. */ 8484/* end confdefs.h. */
12458 #include <stdio.h> 8485 #include <stdio.h>
12459int 8486int
@@ -12464,145 +8491,34 @@ main ()
12464 return 0; 8491 return 0;
12465} 8492}
12466_ACEOF 8493_ACEOF
12467rm -f conftest$ac_exeext 8494if ac_fn_c_try_run "$LINENO"; then :
12468if { (ac_try="$ac_link" 8495 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
12469case "(($ac_try" in 8496$as_echo "yes" >&6; }
12470 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12471 *) ac_try_echo=$ac_try;;
12472esac
12473eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12474 (eval "$ac_link") 2>&5
12475 ac_status=$?
12476 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12477 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
12478 { (case "(($ac_try" in
12479 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12480 *) ac_try_echo=$ac_try;;
12481esac
12482eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12483 (eval "$ac_try") 2>&5
12484 ac_status=$?
12485 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12486 (exit $ac_status); }; }; then
12487 { echo "$as_me:$LINENO: result: yes" >&5
12488echo "${ECHO_T}yes" >&6; }
12489else 8497else
12490 echo "$as_me: program exited with status $ac_status" >&5
12491echo "$as_me: failed program was:" >&5
12492sed 's/^/| /' conftest.$ac_ext >&5
12493
12494( exit $ac_status )
12495 8498
12496 { echo "$as_me:$LINENO: result: no" >&5 8499 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12497echo "${ECHO_T}no" >&6; } 8500$as_echo "no" >&6; }
12498 { { echo "$as_me:$LINENO: error: *** compiler cannot create working executables, check config.log ***" >&5 8501 as_fn_error $? "*** compiler cannot create working executables, check config.log ***" "$LINENO" 5
12499echo "$as_me: error: *** compiler cannot create working executables, check config.log ***" >&2;}
12500 { (exit 1); exit 1; }; }
12501 8502
12502fi 8503fi
12503rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 8504rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
8505 conftest.$ac_objext conftest.beam conftest.$ac_ext
12504fi 8506fi
12505 8507
12506 8508
12507
12508# Checks for libraries. 8509# Checks for libraries.
12509{ echo "$as_me:$LINENO: checking for setsockopt" >&5 8510ac_fn_c_check_func "$LINENO" "setsockopt" "ac_cv_func_setsockopt"
12510echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6; } 8511if test "x$ac_cv_func_setsockopt" = xyes; then :
12511if test "${ac_cv_func_setsockopt+set}" = set; then
12512 echo $ECHO_N "(cached) $ECHO_C" >&6
12513else
12514 cat >conftest.$ac_ext <<_ACEOF
12515/* confdefs.h. */
12516_ACEOF
12517cat confdefs.h >>conftest.$ac_ext
12518cat >>conftest.$ac_ext <<_ACEOF
12519/* end confdefs.h. */
12520/* Define setsockopt to an innocuous variant, in case <limits.h> declares setsockopt.
12521 For example, HP-UX 11i <limits.h> declares gettimeofday. */
12522#define setsockopt innocuous_setsockopt
12523
12524/* System header to define __stub macros and hopefully few prototypes,
12525 which can conflict with char setsockopt (); below.
12526 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
12527 <limits.h> exists even on freestanding compilers. */
12528
12529#ifdef __STDC__
12530# include <limits.h>
12531#else
12532# include <assert.h>
12533#endif
12534
12535#undef setsockopt
12536
12537/* Override any GCC internal prototype to avoid an error.
12538 Use char because int might match the return type of a GCC
12539 builtin and then its argument prototype would still apply. */
12540#ifdef __cplusplus
12541extern "C"
12542#endif
12543char setsockopt ();
12544/* The GNU C library defines this for functions which it implements
12545 to always fail with ENOSYS. Some functions are actually named
12546 something starting with __ and the normal name is an alias. */
12547#if defined __stub_setsockopt || defined __stub___setsockopt
12548choke me
12549#endif
12550 8512
12551int
12552main ()
12553{
12554return setsockopt ();
12555 ;
12556 return 0;
12557}
12558_ACEOF
12559rm -f conftest.$ac_objext conftest$ac_exeext
12560if { (ac_try="$ac_link"
12561case "(($ac_try" in
12562 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12563 *) ac_try_echo=$ac_try;;
12564esac
12565eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12566 (eval "$ac_link") 2>conftest.er1
12567 ac_status=$?
12568 grep -v '^ *+' conftest.er1 >conftest.err
12569 rm -f conftest.er1
12570 cat conftest.err >&5
12571 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12572 (exit $ac_status); } && {
12573 test -z "$ac_c_werror_flag" ||
12574 test ! -s conftest.err
12575 } && test -s conftest$ac_exeext &&
12576 $as_test_x conftest$ac_exeext; then
12577 ac_cv_func_setsockopt=yes
12578else 8513else
12579 echo "$as_me: failed program was:" >&5 8514 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5
12580sed 's/^/| /' conftest.$ac_ext >&5 8515$as_echo_n "checking for setsockopt in -lsocket... " >&6; }
12581 8516if ${ac_cv_lib_socket_setsockopt+:} false; then :
12582 ac_cv_func_setsockopt=no 8517 $as_echo_n "(cached) " >&6
12583fi
12584
12585rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12586 conftest$ac_exeext conftest.$ac_ext
12587fi
12588{ echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5
12589echo "${ECHO_T}$ac_cv_func_setsockopt" >&6; }
12590if test $ac_cv_func_setsockopt = yes; then
12591 :
12592else
12593
12594{ echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5
12595echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6; }
12596if test "${ac_cv_lib_socket_setsockopt+set}" = set; then
12597 echo $ECHO_N "(cached) $ECHO_C" >&6
12598else 8518else
12599 ac_check_lib_save_LIBS=$LIBS 8519 ac_check_lib_save_LIBS=$LIBS
12600LIBS="-lsocket $LIBS" 8520LIBS="-lsocket $LIBS"
12601cat >conftest.$ac_ext <<_ACEOF 8521cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12602/* confdefs.h. */
12603_ACEOF
12604cat confdefs.h >>conftest.$ac_ext
12605cat >>conftest.$ac_ext <<_ACEOF
12606/* end confdefs.h. */ 8522/* end confdefs.h. */
12607 8523
12608/* Override any GCC internal prototype to avoid an error. 8524/* Override any GCC internal prototype to avoid an error.
@@ -12620,39 +8536,18 @@ return setsockopt ();
12620 return 0; 8536 return 0;
12621} 8537}
12622_ACEOF 8538_ACEOF
12623rm -f conftest.$ac_objext conftest$ac_exeext 8539if ac_fn_c_try_link "$LINENO"; then :
12624if { (ac_try="$ac_link"
12625case "(($ac_try" in
12626 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12627 *) ac_try_echo=$ac_try;;
12628esac
12629eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12630 (eval "$ac_link") 2>conftest.er1
12631 ac_status=$?
12632 grep -v '^ *+' conftest.er1 >conftest.err
12633 rm -f conftest.er1
12634 cat conftest.err >&5
12635 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12636 (exit $ac_status); } && {
12637 test -z "$ac_c_werror_flag" ||
12638 test ! -s conftest.err
12639 } && test -s conftest$ac_exeext &&
12640 $as_test_x conftest$ac_exeext; then
12641 ac_cv_lib_socket_setsockopt=yes 8540 ac_cv_lib_socket_setsockopt=yes
12642else 8541else
12643 echo "$as_me: failed program was:" >&5 8542 ac_cv_lib_socket_setsockopt=no
12644sed 's/^/| /' conftest.$ac_ext >&5
12645
12646 ac_cv_lib_socket_setsockopt=no
12647fi 8543fi
12648 8544rm -f core conftest.err conftest.$ac_objext \
12649rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8545 conftest$ac_exeext conftest.$ac_ext
12650 conftest$ac_exeext conftest.$ac_ext
12651LIBS=$ac_check_lib_save_LIBS 8546LIBS=$ac_check_lib_save_LIBS
12652fi 8547fi
12653{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5 8548{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5
12654echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6; } 8549$as_echo "$ac_cv_lib_socket_setsockopt" >&6; }
12655if test $ac_cv_lib_socket_setsockopt = yes; then 8550if test "x$ac_cv_lib_socket_setsockopt" = xyes; then :
12656 cat >>confdefs.h <<_ACEOF 8551 cat >>confdefs.h <<_ACEOF
12657#define HAVE_LIBSOCKET 1 8552#define HAVE_LIBSOCKET 1
12658_ACEOF 8553_ACEOF
@@ -12664,235 +8559,19 @@ fi
12664fi 8559fi
12665 8560
12666 8561
12667
12668for ac_func in dirname 8562for ac_func in dirname
12669do 8563do :
12670as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 8564 ac_fn_c_check_func "$LINENO" "dirname" "ac_cv_func_dirname"
12671{ echo "$as_me:$LINENO: checking for $ac_func" >&5 8565if test "x$ac_cv_func_dirname" = xyes; then :
12672echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
12673if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
12674 echo $ECHO_N "(cached) $ECHO_C" >&6
12675else
12676 cat >conftest.$ac_ext <<_ACEOF
12677/* confdefs.h. */
12678_ACEOF
12679cat confdefs.h >>conftest.$ac_ext
12680cat >>conftest.$ac_ext <<_ACEOF
12681/* end confdefs.h. */
12682/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
12683 For example, HP-UX 11i <limits.h> declares gettimeofday. */
12684#define $ac_func innocuous_$ac_func
12685
12686/* System header to define __stub macros and hopefully few prototypes,
12687 which can conflict with char $ac_func (); below.
12688 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
12689 <limits.h> exists even on freestanding compilers. */
12690
12691#ifdef __STDC__
12692# include <limits.h>
12693#else
12694# include <assert.h>
12695#endif
12696
12697#undef $ac_func
12698
12699/* Override any GCC internal prototype to avoid an error.
12700 Use char because int might match the return type of a GCC
12701 builtin and then its argument prototype would still apply. */
12702#ifdef __cplusplus
12703extern "C"
12704#endif
12705char $ac_func ();
12706/* The GNU C library defines this for functions which it implements
12707 to always fail with ENOSYS. Some functions are actually named
12708 something starting with __ and the normal name is an alias. */
12709#if defined __stub_$ac_func || defined __stub___$ac_func
12710choke me
12711#endif
12712
12713int
12714main ()
12715{
12716return $ac_func ();
12717 ;
12718 return 0;
12719}
12720_ACEOF
12721rm -f conftest.$ac_objext conftest$ac_exeext
12722if { (ac_try="$ac_link"
12723case "(($ac_try" in
12724 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12725 *) ac_try_echo=$ac_try;;
12726esac
12727eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12728 (eval "$ac_link") 2>conftest.er1
12729 ac_status=$?
12730 grep -v '^ *+' conftest.er1 >conftest.err
12731 rm -f conftest.er1
12732 cat conftest.err >&5
12733 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12734 (exit $ac_status); } && {
12735 test -z "$ac_c_werror_flag" ||
12736 test ! -s conftest.err
12737 } && test -s conftest$ac_exeext &&
12738 $as_test_x conftest$ac_exeext; then
12739 eval "$as_ac_var=yes"
12740else
12741 echo "$as_me: failed program was:" >&5
12742sed 's/^/| /' conftest.$ac_ext >&5
12743
12744 eval "$as_ac_var=no"
12745fi
12746
12747rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12748 conftest$ac_exeext conftest.$ac_ext
12749fi
12750ac_res=`eval echo '${'$as_ac_var'}'`
12751 { echo "$as_me:$LINENO: result: $ac_res" >&5
12752echo "${ECHO_T}$ac_res" >&6; }
12753if test `eval echo '${'$as_ac_var'}'` = yes; then
12754 cat >>confdefs.h <<_ACEOF 8566 cat >>confdefs.h <<_ACEOF
12755#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 8567#define HAVE_DIRNAME 1
12756_ACEOF
12757
12758for ac_header in libgen.h
12759do
12760as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
12761if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12762 { echo "$as_me:$LINENO: checking for $ac_header" >&5
12763echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12764if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12765 echo $ECHO_N "(cached) $ECHO_C" >&6
12766fi
12767ac_res=`eval echo '${'$as_ac_Header'}'`
12768 { echo "$as_me:$LINENO: result: $ac_res" >&5
12769echo "${ECHO_T}$ac_res" >&6; }
12770else
12771 # Is the header compilable?
12772{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
12773echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
12774cat >conftest.$ac_ext <<_ACEOF
12775/* confdefs.h. */
12776_ACEOF
12777cat confdefs.h >>conftest.$ac_ext
12778cat >>conftest.$ac_ext <<_ACEOF
12779/* end confdefs.h. */
12780$ac_includes_default
12781#include <$ac_header>
12782_ACEOF
12783rm -f conftest.$ac_objext
12784if { (ac_try="$ac_compile"
12785case "(($ac_try" in
12786 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12787 *) ac_try_echo=$ac_try;;
12788esac
12789eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12790 (eval "$ac_compile") 2>conftest.er1
12791 ac_status=$?
12792 grep -v '^ *+' conftest.er1 >conftest.err
12793 rm -f conftest.er1
12794 cat conftest.err >&5
12795 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12796 (exit $ac_status); } && {
12797 test -z "$ac_c_werror_flag" ||
12798 test ! -s conftest.err
12799 } && test -s conftest.$ac_objext; then
12800 ac_header_compiler=yes
12801else
12802 echo "$as_me: failed program was:" >&5
12803sed 's/^/| /' conftest.$ac_ext >&5
12804
12805 ac_header_compiler=no
12806fi
12807
12808rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12809{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
12810echo "${ECHO_T}$ac_header_compiler" >&6; }
12811
12812# Is the header present?
12813{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
12814echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
12815cat >conftest.$ac_ext <<_ACEOF
12816/* confdefs.h. */
12817_ACEOF
12818cat confdefs.h >>conftest.$ac_ext
12819cat >>conftest.$ac_ext <<_ACEOF
12820/* end confdefs.h. */
12821#include <$ac_header>
12822_ACEOF 8568_ACEOF
12823if { (ac_try="$ac_cpp conftest.$ac_ext" 8569 for ac_header in libgen.h
12824case "(($ac_try" in 8570do :
12825 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 8571 ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
12826 *) ac_try_echo=$ac_try;; 8572if test "x$ac_cv_header_libgen_h" = xyes; then :
12827esac
12828eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12829 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
12830 ac_status=$?
12831 grep -v '^ *+' conftest.er1 >conftest.err
12832 rm -f conftest.er1
12833 cat conftest.err >&5
12834 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12835 (exit $ac_status); } >/dev/null && {
12836 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
12837 test ! -s conftest.err
12838 }; then
12839 ac_header_preproc=yes
12840else
12841 echo "$as_me: failed program was:" >&5
12842sed 's/^/| /' conftest.$ac_ext >&5
12843
12844 ac_header_preproc=no
12845fi
12846
12847rm -f conftest.err conftest.$ac_ext
12848{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
12849echo "${ECHO_T}$ac_header_preproc" >&6; }
12850
12851# So? What about this header?
12852case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
12853 yes:no: )
12854 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
12855echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
12856 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
12857echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
12858 ac_header_preproc=yes
12859 ;;
12860 no:yes:* )
12861 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
12862echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
12863 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
12864echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
12865 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
12866echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
12867 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
12868echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
12869 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
12870echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
12871 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
12872echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
12873 ( cat <<\_ASBOX
12874## ------------------------------------------- ##
12875## Report this to openssh-unix-dev@mindrot.org ##
12876## ------------------------------------------- ##
12877_ASBOX
12878 ) | sed "s/^/$as_me: WARNING: /" >&2
12879 ;;
12880esac
12881{ echo "$as_me:$LINENO: checking for $ac_header" >&5
12882echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12883if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12884 echo $ECHO_N "(cached) $ECHO_C" >&6
12885else
12886 eval "$as_ac_Header=\$ac_header_preproc"
12887fi
12888ac_res=`eval echo '${'$as_ac_Header'}'`
12889 { echo "$as_me:$LINENO: result: $ac_res" >&5
12890echo "${ECHO_T}$ac_res" >&6; }
12891
12892fi
12893if test `eval echo '${'$as_ac_Header'}'` = yes; then
12894 cat >>confdefs.h <<_ACEOF 8573 cat >>confdefs.h <<_ACEOF
12895#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 8574#define HAVE_LIBGEN_H 1
12896_ACEOF 8575_ACEOF
12897 8576
12898fi 8577fi
@@ -12901,18 +8580,14 @@ done
12901 8580
12902else 8581else
12903 8582
12904 { echo "$as_me:$LINENO: checking for dirname in -lgen" >&5 8583 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dirname in -lgen" >&5
12905echo $ECHO_N "checking for dirname in -lgen... $ECHO_C" >&6; } 8584$as_echo_n "checking for dirname in -lgen... " >&6; }
12906if test "${ac_cv_lib_gen_dirname+set}" = set; then 8585if ${ac_cv_lib_gen_dirname+:} false; then :
12907 echo $ECHO_N "(cached) $ECHO_C" >&6 8586 $as_echo_n "(cached) " >&6
12908else 8587else
12909 ac_check_lib_save_LIBS=$LIBS 8588 ac_check_lib_save_LIBS=$LIBS
12910LIBS="-lgen $LIBS" 8589LIBS="-lgen $LIBS"
12911cat >conftest.$ac_ext <<_ACEOF 8590cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12912/* confdefs.h. */
12913_ACEOF
12914cat confdefs.h >>conftest.$ac_ext
12915cat >>conftest.$ac_ext <<_ACEOF
12916/* end confdefs.h. */ 8591/* end confdefs.h. */
12917 8592
12918/* Override any GCC internal prototype to avoid an error. 8593/* Override any GCC internal prototype to avoid an error.
@@ -12930,56 +8605,31 @@ return dirname ();
12930 return 0; 8605 return 0;
12931} 8606}
12932_ACEOF 8607_ACEOF
12933rm -f conftest.$ac_objext conftest$ac_exeext 8608if ac_fn_c_try_link "$LINENO"; then :
12934if { (ac_try="$ac_link"
12935case "(($ac_try" in
12936 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12937 *) ac_try_echo=$ac_try;;
12938esac
12939eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12940 (eval "$ac_link") 2>conftest.er1
12941 ac_status=$?
12942 grep -v '^ *+' conftest.er1 >conftest.err
12943 rm -f conftest.er1
12944 cat conftest.err >&5
12945 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12946 (exit $ac_status); } && {
12947 test -z "$ac_c_werror_flag" ||
12948 test ! -s conftest.err
12949 } && test -s conftest$ac_exeext &&
12950 $as_test_x conftest$ac_exeext; then
12951 ac_cv_lib_gen_dirname=yes 8609 ac_cv_lib_gen_dirname=yes
12952else 8610else
12953 echo "$as_me: failed program was:" >&5 8611 ac_cv_lib_gen_dirname=no
12954sed 's/^/| /' conftest.$ac_ext >&5
12955
12956 ac_cv_lib_gen_dirname=no
12957fi 8612fi
12958 8613rm -f core conftest.err conftest.$ac_objext \
12959rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8614 conftest$ac_exeext conftest.$ac_ext
12960 conftest$ac_exeext conftest.$ac_ext
12961LIBS=$ac_check_lib_save_LIBS 8615LIBS=$ac_check_lib_save_LIBS
12962fi 8616fi
12963{ echo "$as_me:$LINENO: result: $ac_cv_lib_gen_dirname" >&5 8617{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_dirname" >&5
12964echo "${ECHO_T}$ac_cv_lib_gen_dirname" >&6; } 8618$as_echo "$ac_cv_lib_gen_dirname" >&6; }
12965if test $ac_cv_lib_gen_dirname = yes; then 8619if test "x$ac_cv_lib_gen_dirname" = xyes; then :
12966 8620
12967 { echo "$as_me:$LINENO: checking for broken dirname" >&5 8621 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken dirname" >&5
12968echo $ECHO_N "checking for broken dirname... $ECHO_C" >&6; } 8622$as_echo_n "checking for broken dirname... " >&6; }
12969if test "${ac_cv_have_broken_dirname+set}" = set; then 8623if ${ac_cv_have_broken_dirname+:} false; then :
12970 echo $ECHO_N "(cached) $ECHO_C" >&6 8624 $as_echo_n "(cached) " >&6
12971else 8625else
12972 8626
12973 save_LIBS="$LIBS" 8627 save_LIBS="$LIBS"
12974 LIBS="$LIBS -lgen" 8628 LIBS="$LIBS -lgen"
12975 if test "$cross_compiling" = yes; then 8629 if test "$cross_compiling" = yes; then :
12976 ac_cv_have_broken_dirname="no" 8630 ac_cv_have_broken_dirname="no"
12977else 8631else
12978 cat >conftest.$ac_ext <<_ACEOF 8632 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12979/* confdefs.h. */
12980_ACEOF
12981cat confdefs.h >>conftest.$ac_ext
12982cat >>conftest.$ac_ext <<_ACEOF
12983/* end confdefs.h. */ 8633/* end confdefs.h. */
12984 8634
12985#include <libgen.h> 8635#include <libgen.h>
@@ -12998,189 +8648,30 @@ int main(int argc, char **argv) {
12998} 8648}
12999 8649
13000_ACEOF 8650_ACEOF
13001rm -f conftest$ac_exeext 8651if ac_fn_c_try_run "$LINENO"; then :
13002if { (ac_try="$ac_link"
13003case "(($ac_try" in
13004 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13005 *) ac_try_echo=$ac_try;;
13006esac
13007eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13008 (eval "$ac_link") 2>&5
13009 ac_status=$?
13010 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13011 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
13012 { (case "(($ac_try" in
13013 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13014 *) ac_try_echo=$ac_try;;
13015esac
13016eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13017 (eval "$ac_try") 2>&5
13018 ac_status=$?
13019 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13020 (exit $ac_status); }; }; then
13021 ac_cv_have_broken_dirname="no" 8652 ac_cv_have_broken_dirname="no"
13022else 8653else
13023 echo "$as_me: program exited with status $ac_status" >&5 8654 ac_cv_have_broken_dirname="yes"
13024echo "$as_me: failed program was:" >&5
13025sed 's/^/| /' conftest.$ac_ext >&5
13026
13027( exit $ac_status )
13028 ac_cv_have_broken_dirname="yes"
13029fi 8655fi
13030rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 8656rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
8657 conftest.$ac_objext conftest.beam conftest.$ac_ext
13031fi 8658fi
13032 8659
13033
13034 LIBS="$save_LIBS" 8660 LIBS="$save_LIBS"
13035 8661
13036fi 8662fi
13037{ echo "$as_me:$LINENO: result: $ac_cv_have_broken_dirname" >&5 8663{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_broken_dirname" >&5
13038echo "${ECHO_T}$ac_cv_have_broken_dirname" >&6; } 8664$as_echo "$ac_cv_have_broken_dirname" >&6; }
13039 if test "x$ac_cv_have_broken_dirname" = "xno" ; then 8665 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
13040 LIBS="$LIBS -lgen" 8666 LIBS="$LIBS -lgen"
13041 cat >>confdefs.h <<\_ACEOF 8667 $as_echo "#define HAVE_DIRNAME 1" >>confdefs.h
13042#define HAVE_DIRNAME 1
13043_ACEOF
13044
13045
13046for ac_header in libgen.h
13047do
13048as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
13049if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13050 { echo "$as_me:$LINENO: checking for $ac_header" >&5
13051echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
13052if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13053 echo $ECHO_N "(cached) $ECHO_C" >&6
13054fi
13055ac_res=`eval echo '${'$as_ac_Header'}'`
13056 { echo "$as_me:$LINENO: result: $ac_res" >&5
13057echo "${ECHO_T}$ac_res" >&6; }
13058else
13059 # Is the header compilable?
13060{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
13061echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
13062cat >conftest.$ac_ext <<_ACEOF
13063/* confdefs.h. */
13064_ACEOF
13065cat confdefs.h >>conftest.$ac_ext
13066cat >>conftest.$ac_ext <<_ACEOF
13067/* end confdefs.h. */
13068$ac_includes_default
13069#include <$ac_header>
13070_ACEOF
13071rm -f conftest.$ac_objext
13072if { (ac_try="$ac_compile"
13073case "(($ac_try" in
13074 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13075 *) ac_try_echo=$ac_try;;
13076esac
13077eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13078 (eval "$ac_compile") 2>conftest.er1
13079 ac_status=$?
13080 grep -v '^ *+' conftest.er1 >conftest.err
13081 rm -f conftest.er1
13082 cat conftest.err >&5
13083 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13084 (exit $ac_status); } && {
13085 test -z "$ac_c_werror_flag" ||
13086 test ! -s conftest.err
13087 } && test -s conftest.$ac_objext; then
13088 ac_header_compiler=yes
13089else
13090 echo "$as_me: failed program was:" >&5
13091sed 's/^/| /' conftest.$ac_ext >&5
13092 8668
13093 ac_header_compiler=no 8669 for ac_header in libgen.h
13094fi 8670do :
13095 8671 ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
13096rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 8672if test "x$ac_cv_header_libgen_h" = xyes; then :
13097{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
13098echo "${ECHO_T}$ac_header_compiler" >&6; }
13099
13100# Is the header present?
13101{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
13102echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
13103cat >conftest.$ac_ext <<_ACEOF
13104/* confdefs.h. */
13105_ACEOF
13106cat confdefs.h >>conftest.$ac_ext
13107cat >>conftest.$ac_ext <<_ACEOF
13108/* end confdefs.h. */
13109#include <$ac_header>
13110_ACEOF
13111if { (ac_try="$ac_cpp conftest.$ac_ext"
13112case "(($ac_try" in
13113 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13114 *) ac_try_echo=$ac_try;;
13115esac
13116eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13117 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
13118 ac_status=$?
13119 grep -v '^ *+' conftest.er1 >conftest.err
13120 rm -f conftest.er1
13121 cat conftest.err >&5
13122 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13123 (exit $ac_status); } >/dev/null && {
13124 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
13125 test ! -s conftest.err
13126 }; then
13127 ac_header_preproc=yes
13128else
13129 echo "$as_me: failed program was:" >&5
13130sed 's/^/| /' conftest.$ac_ext >&5
13131
13132 ac_header_preproc=no
13133fi
13134
13135rm -f conftest.err conftest.$ac_ext
13136{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
13137echo "${ECHO_T}$ac_header_preproc" >&6; }
13138
13139# So? What about this header?
13140case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
13141 yes:no: )
13142 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
13143echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
13144 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
13145echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
13146 ac_header_preproc=yes
13147 ;;
13148 no:yes:* )
13149 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
13150echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
13151 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
13152echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
13153 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
13154echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
13155 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
13156echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
13157 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
13158echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
13159 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
13160echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
13161 ( cat <<\_ASBOX
13162## ------------------------------------------- ##
13163## Report this to openssh-unix-dev@mindrot.org ##
13164## ------------------------------------------- ##
13165_ASBOX
13166 ) | sed "s/^/$as_me: WARNING: /" >&2
13167 ;;
13168esac
13169{ echo "$as_me:$LINENO: checking for $ac_header" >&5
13170echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
13171if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13172 echo $ECHO_N "(cached) $ECHO_C" >&6
13173else
13174 eval "$as_ac_Header=\$ac_header_preproc"
13175fi
13176ac_res=`eval echo '${'$as_ac_Header'}'`
13177 { echo "$as_me:$LINENO: result: $ac_res" >&5
13178echo "${ECHO_T}$ac_res" >&6; }
13179
13180fi
13181if test `eval echo '${'$as_ac_Header'}'` = yes; then
13182 cat >>confdefs.h <<_ACEOF 8673 cat >>confdefs.h <<_ACEOF
13183#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 8674#define HAVE_LIBGEN_H 1
13184_ACEOF 8675_ACEOF
13185 8676
13186fi 8677fi
@@ -13196,102 +8687,18 @@ fi
13196done 8687done
13197 8688
13198 8689
13199{ echo "$as_me:$LINENO: checking for getspnam" >&5 8690ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam"
13200echo $ECHO_N "checking for getspnam... $ECHO_C" >&6; } 8691if test "x$ac_cv_func_getspnam" = xyes; then :
13201if test "${ac_cv_func_getspnam+set}" = set; then
13202 echo $ECHO_N "(cached) $ECHO_C" >&6
13203else
13204 cat >conftest.$ac_ext <<_ACEOF
13205/* confdefs.h. */
13206_ACEOF
13207cat confdefs.h >>conftest.$ac_ext
13208cat >>conftest.$ac_ext <<_ACEOF
13209/* end confdefs.h. */
13210/* Define getspnam to an innocuous variant, in case <limits.h> declares getspnam.
13211 For example, HP-UX 11i <limits.h> declares gettimeofday. */
13212#define getspnam innocuous_getspnam
13213
13214/* System header to define __stub macros and hopefully few prototypes,
13215 which can conflict with char getspnam (); below.
13216 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
13217 <limits.h> exists even on freestanding compilers. */
13218
13219#ifdef __STDC__
13220# include <limits.h>
13221#else
13222# include <assert.h>
13223#endif
13224
13225#undef getspnam
13226
13227/* Override any GCC internal prototype to avoid an error.
13228 Use char because int might match the return type of a GCC
13229 builtin and then its argument prototype would still apply. */
13230#ifdef __cplusplus
13231extern "C"
13232#endif
13233char getspnam ();
13234/* The GNU C library defines this for functions which it implements
13235 to always fail with ENOSYS. Some functions are actually named
13236 something starting with __ and the normal name is an alias. */
13237#if defined __stub_getspnam || defined __stub___getspnam
13238choke me
13239#endif
13240 8692
13241int
13242main ()
13243{
13244return getspnam ();
13245 ;
13246 return 0;
13247}
13248_ACEOF
13249rm -f conftest.$ac_objext conftest$ac_exeext
13250if { (ac_try="$ac_link"
13251case "(($ac_try" in
13252 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13253 *) ac_try_echo=$ac_try;;
13254esac
13255eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13256 (eval "$ac_link") 2>conftest.er1
13257 ac_status=$?
13258 grep -v '^ *+' conftest.er1 >conftest.err
13259 rm -f conftest.er1
13260 cat conftest.err >&5
13261 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13262 (exit $ac_status); } && {
13263 test -z "$ac_c_werror_flag" ||
13264 test ! -s conftest.err
13265 } && test -s conftest$ac_exeext &&
13266 $as_test_x conftest$ac_exeext; then
13267 ac_cv_func_getspnam=yes
13268else 8693else
13269 echo "$as_me: failed program was:" >&5 8694 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getspnam in -lgen" >&5
13270sed 's/^/| /' conftest.$ac_ext >&5 8695$as_echo_n "checking for getspnam in -lgen... " >&6; }
13271 8696if ${ac_cv_lib_gen_getspnam+:} false; then :
13272 ac_cv_func_getspnam=no 8697 $as_echo_n "(cached) " >&6
13273fi
13274
13275rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13276 conftest$ac_exeext conftest.$ac_ext
13277fi
13278{ echo "$as_me:$LINENO: result: $ac_cv_func_getspnam" >&5
13279echo "${ECHO_T}$ac_cv_func_getspnam" >&6; }
13280if test $ac_cv_func_getspnam = yes; then
13281 :
13282else
13283 { echo "$as_me:$LINENO: checking for getspnam in -lgen" >&5
13284echo $ECHO_N "checking for getspnam in -lgen... $ECHO_C" >&6; }
13285if test "${ac_cv_lib_gen_getspnam+set}" = set; then
13286 echo $ECHO_N "(cached) $ECHO_C" >&6
13287else 8698else
13288 ac_check_lib_save_LIBS=$LIBS 8699 ac_check_lib_save_LIBS=$LIBS
13289LIBS="-lgen $LIBS" 8700LIBS="-lgen $LIBS"
13290cat >conftest.$ac_ext <<_ACEOF 8701cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13291/* confdefs.h. */
13292_ACEOF
13293cat confdefs.h >>conftest.$ac_ext
13294cat >>conftest.$ac_ext <<_ACEOF
13295/* end confdefs.h. */ 8702/* end confdefs.h. */
13296 8703
13297/* Override any GCC internal prototype to avoid an error. 8704/* Override any GCC internal prototype to avoid an error.
@@ -13309,55 +8716,30 @@ return getspnam ();
13309 return 0; 8716 return 0;
13310} 8717}
13311_ACEOF 8718_ACEOF
13312rm -f conftest.$ac_objext conftest$ac_exeext 8719if ac_fn_c_try_link "$LINENO"; then :
13313if { (ac_try="$ac_link"
13314case "(($ac_try" in
13315 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13316 *) ac_try_echo=$ac_try;;
13317esac
13318eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13319 (eval "$ac_link") 2>conftest.er1
13320 ac_status=$?
13321 grep -v '^ *+' conftest.er1 >conftest.err
13322 rm -f conftest.er1
13323 cat conftest.err >&5
13324 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13325 (exit $ac_status); } && {
13326 test -z "$ac_c_werror_flag" ||
13327 test ! -s conftest.err
13328 } && test -s conftest$ac_exeext &&
13329 $as_test_x conftest$ac_exeext; then
13330 ac_cv_lib_gen_getspnam=yes 8720 ac_cv_lib_gen_getspnam=yes
13331else 8721else
13332 echo "$as_me: failed program was:" >&5 8722 ac_cv_lib_gen_getspnam=no
13333sed 's/^/| /' conftest.$ac_ext >&5
13334
13335 ac_cv_lib_gen_getspnam=no
13336fi 8723fi
13337 8724rm -f core conftest.err conftest.$ac_objext \
13338rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8725 conftest$ac_exeext conftest.$ac_ext
13339 conftest$ac_exeext conftest.$ac_ext
13340LIBS=$ac_check_lib_save_LIBS 8726LIBS=$ac_check_lib_save_LIBS
13341fi 8727fi
13342{ echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getspnam" >&5 8728{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_getspnam" >&5
13343echo "${ECHO_T}$ac_cv_lib_gen_getspnam" >&6; } 8729$as_echo "$ac_cv_lib_gen_getspnam" >&6; }
13344if test $ac_cv_lib_gen_getspnam = yes; then 8730if test "x$ac_cv_lib_gen_getspnam" = xyes; then :
13345 LIBS="$LIBS -lgen" 8731 LIBS="$LIBS -lgen"
13346fi 8732fi
13347 8733
13348fi 8734fi
13349 8735
13350{ echo "$as_me:$LINENO: checking for library containing basename" >&5 8736{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing basename" >&5
13351echo $ECHO_N "checking for library containing basename... $ECHO_C" >&6; } 8737$as_echo_n "checking for library containing basename... " >&6; }
13352if test "${ac_cv_search_basename+set}" = set; then 8738if ${ac_cv_search_basename+:} false; then :
13353 echo $ECHO_N "(cached) $ECHO_C" >&6 8739 $as_echo_n "(cached) " >&6
13354else 8740else
13355 ac_func_search_save_LIBS=$LIBS 8741 ac_func_search_save_LIBS=$LIBS
13356cat >conftest.$ac_ext <<_ACEOF 8742cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13357/* confdefs.h. */
13358_ACEOF
13359cat confdefs.h >>conftest.$ac_ext
13360cat >>conftest.$ac_ext <<_ACEOF
13361/* end confdefs.h. */ 8743/* end confdefs.h. */
13362 8744
13363/* Override any GCC internal prototype to avoid an error. 8745/* Override any GCC internal prototype to avoid an error.
@@ -13382,66 +8764,39 @@ for ac_lib in '' gen; do
13382 ac_res=-l$ac_lib 8764 ac_res=-l$ac_lib
13383 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 8765 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
13384 fi 8766 fi
13385 rm -f conftest.$ac_objext conftest$ac_exeext 8767 if ac_fn_c_try_link "$LINENO"; then :
13386if { (ac_try="$ac_link"
13387case "(($ac_try" in
13388 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13389 *) ac_try_echo=$ac_try;;
13390esac
13391eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13392 (eval "$ac_link") 2>conftest.er1
13393 ac_status=$?
13394 grep -v '^ *+' conftest.er1 >conftest.err
13395 rm -f conftest.er1
13396 cat conftest.err >&5
13397 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13398 (exit $ac_status); } && {
13399 test -z "$ac_c_werror_flag" ||
13400 test ! -s conftest.err
13401 } && test -s conftest$ac_exeext &&
13402 $as_test_x conftest$ac_exeext; then
13403 ac_cv_search_basename=$ac_res 8768 ac_cv_search_basename=$ac_res
13404else
13405 echo "$as_me: failed program was:" >&5
13406sed 's/^/| /' conftest.$ac_ext >&5
13407
13408
13409fi 8769fi
13410 8770rm -f core conftest.err conftest.$ac_objext \
13411rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8771 conftest$ac_exeext
13412 conftest$ac_exeext 8772 if ${ac_cv_search_basename+:} false; then :
13413 if test "${ac_cv_search_basename+set}" = set; then
13414 break 8773 break
13415fi 8774fi
13416done 8775done
13417if test "${ac_cv_search_basename+set}" = set; then 8776if ${ac_cv_search_basename+:} false; then :
13418 : 8777
13419else 8778else
13420 ac_cv_search_basename=no 8779 ac_cv_search_basename=no
13421fi 8780fi
13422rm conftest.$ac_ext 8781rm conftest.$ac_ext
13423LIBS=$ac_func_search_save_LIBS 8782LIBS=$ac_func_search_save_LIBS
13424fi 8783fi
13425{ echo "$as_me:$LINENO: result: $ac_cv_search_basename" >&5 8784{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_basename" >&5
13426echo "${ECHO_T}$ac_cv_search_basename" >&6; } 8785$as_echo "$ac_cv_search_basename" >&6; }
13427ac_res=$ac_cv_search_basename 8786ac_res=$ac_cv_search_basename
13428if test "$ac_res" != no; then 8787if test "$ac_res" != no; then :
13429 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 8788 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
13430 8789
13431cat >>confdefs.h <<\_ACEOF 8790$as_echo "#define HAVE_BASENAME 1" >>confdefs.h
13432#define HAVE_BASENAME 1
13433_ACEOF
13434 8791
13435fi 8792fi
13436 8793
13437 8794
13438 8795
13439# Check whether --with-zlib was given. 8796# Check whether --with-zlib was given.
13440if test "${with_zlib+set}" = set; then 8797if test "${with_zlib+set}" = set; then :
13441 withval=$with_zlib; if test "x$withval" = "xno" ; then 8798 withval=$with_zlib; if test "x$withval" = "xno" ; then
13442 { { echo "$as_me:$LINENO: error: *** zlib is required ***" >&5 8799 as_fn_error $? "*** zlib is required ***" "$LINENO" 5
13443echo "$as_me: error: *** zlib is required ***" >&2;}
13444 { (exit 1); exit 1; }; }
13445 elif test "x$withval" != "xyes"; then 8800 elif test "x$withval" != "xyes"; then
13446 if test -d "$withval/lib"; then 8801 if test -d "$withval/lib"; then
13447 if test -n "${need_dash_r}"; then 8802 if test -n "${need_dash_r}"; then
@@ -13466,158 +8821,22 @@ echo "$as_me: error: *** zlib is required ***" >&2;}
13466fi 8821fi
13467 8822
13468 8823
13469if test "${ac_cv_header_zlib_h+set}" = set; then 8824ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
13470 { echo "$as_me:$LINENO: checking for zlib.h" >&5 8825if test "x$ac_cv_header_zlib_h" = xyes; then :
13471echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
13472if test "${ac_cv_header_zlib_h+set}" = set; then
13473 echo $ECHO_N "(cached) $ECHO_C" >&6
13474fi
13475{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
13476echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
13477else
13478 # Is the header compilable?
13479{ echo "$as_me:$LINENO: checking zlib.h usability" >&5
13480echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; }
13481cat >conftest.$ac_ext <<_ACEOF
13482/* confdefs.h. */
13483_ACEOF
13484cat confdefs.h >>conftest.$ac_ext
13485cat >>conftest.$ac_ext <<_ACEOF
13486/* end confdefs.h. */
13487$ac_includes_default
13488#include <zlib.h>
13489_ACEOF
13490rm -f conftest.$ac_objext
13491if { (ac_try="$ac_compile"
13492case "(($ac_try" in
13493 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13494 *) ac_try_echo=$ac_try;;
13495esac
13496eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13497 (eval "$ac_compile") 2>conftest.er1
13498 ac_status=$?
13499 grep -v '^ *+' conftest.er1 >conftest.err
13500 rm -f conftest.er1
13501 cat conftest.err >&5
13502 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13503 (exit $ac_status); } && {
13504 test -z "$ac_c_werror_flag" ||
13505 test ! -s conftest.err
13506 } && test -s conftest.$ac_objext; then
13507 ac_header_compiler=yes
13508else
13509 echo "$as_me: failed program was:" >&5
13510sed 's/^/| /' conftest.$ac_ext >&5
13511
13512 ac_header_compiler=no
13513fi
13514
13515rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13516{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
13517echo "${ECHO_T}$ac_header_compiler" >&6; }
13518 8826
13519# Is the header present?
13520{ echo "$as_me:$LINENO: checking zlib.h presence" >&5
13521echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; }
13522cat >conftest.$ac_ext <<_ACEOF
13523/* confdefs.h. */
13524_ACEOF
13525cat confdefs.h >>conftest.$ac_ext
13526cat >>conftest.$ac_ext <<_ACEOF
13527/* end confdefs.h. */
13528#include <zlib.h>
13529_ACEOF
13530if { (ac_try="$ac_cpp conftest.$ac_ext"
13531case "(($ac_try" in
13532 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13533 *) ac_try_echo=$ac_try;;
13534esac
13535eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13536 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
13537 ac_status=$?
13538 grep -v '^ *+' conftest.er1 >conftest.err
13539 rm -f conftest.er1
13540 cat conftest.err >&5
13541 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13542 (exit $ac_status); } >/dev/null && {
13543 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
13544 test ! -s conftest.err
13545 }; then
13546 ac_header_preproc=yes
13547else 8827else
13548 echo "$as_me: failed program was:" >&5 8828 as_fn_error $? "*** zlib.h missing - please install first or check config.log ***" "$LINENO" 5
13549sed 's/^/| /' conftest.$ac_ext >&5
13550
13551 ac_header_preproc=no
13552fi 8829fi
13553 8830
13554rm -f conftest.err conftest.$ac_ext
13555{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
13556echo "${ECHO_T}$ac_header_preproc" >&6; }
13557
13558# So? What about this header?
13559case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
13560 yes:no: )
13561 { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
13562echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
13563 { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5
13564echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;}
13565 ac_header_preproc=yes
13566 ;;
13567 no:yes:* )
13568 { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5
13569echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;}
13570 { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5
13571echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;}
13572 { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5
13573echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;}
13574 { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5
13575echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;}
13576 { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5
13577echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;}
13578 { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5
13579echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;}
13580 ( cat <<\_ASBOX
13581## ------------------------------------------- ##
13582## Report this to openssh-unix-dev@mindrot.org ##
13583## ------------------------------------------- ##
13584_ASBOX
13585 ) | sed "s/^/$as_me: WARNING: /" >&2
13586 ;;
13587esac
13588{ echo "$as_me:$LINENO: checking for zlib.h" >&5
13589echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
13590if test "${ac_cv_header_zlib_h+set}" = set; then
13591 echo $ECHO_N "(cached) $ECHO_C" >&6
13592else
13593 ac_cv_header_zlib_h=$ac_header_preproc
13594fi
13595{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
13596echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
13597 8831
13598fi 8832{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5
13599if test $ac_cv_header_zlib_h = yes; then 8833$as_echo_n "checking for deflate in -lz... " >&6; }
13600 : 8834if ${ac_cv_lib_z_deflate+:} false; then :
13601else 8835 $as_echo_n "(cached) " >&6
13602 { { echo "$as_me:$LINENO: error: *** zlib.h missing - please install first or check config.log ***" >&5
13603echo "$as_me: error: *** zlib.h missing - please install first or check config.log ***" >&2;}
13604 { (exit 1); exit 1; }; }
13605fi
13606
13607
13608
13609{ echo "$as_me:$LINENO: checking for deflate in -lz" >&5
13610echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6; }
13611if test "${ac_cv_lib_z_deflate+set}" = set; then
13612 echo $ECHO_N "(cached) $ECHO_C" >&6
13613else 8836else
13614 ac_check_lib_save_LIBS=$LIBS 8837 ac_check_lib_save_LIBS=$LIBS
13615LIBS="-lz $LIBS" 8838LIBS="-lz $LIBS"
13616cat >conftest.$ac_ext <<_ACEOF 8839cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13617/* confdefs.h. */
13618_ACEOF
13619cat confdefs.h >>conftest.$ac_ext
13620cat >>conftest.$ac_ext <<_ACEOF
13621/* end confdefs.h. */ 8840/* end confdefs.h. */
13622 8841
13623/* Override any GCC internal prototype to avoid an error. 8842/* Override any GCC internal prototype to avoid an error.
@@ -13635,39 +8854,18 @@ return deflate ();
13635 return 0; 8854 return 0;
13636} 8855}
13637_ACEOF 8856_ACEOF
13638rm -f conftest.$ac_objext conftest$ac_exeext 8857if ac_fn_c_try_link "$LINENO"; then :
13639if { (ac_try="$ac_link"
13640case "(($ac_try" in
13641 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13642 *) ac_try_echo=$ac_try;;
13643esac
13644eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13645 (eval "$ac_link") 2>conftest.er1
13646 ac_status=$?
13647 grep -v '^ *+' conftest.er1 >conftest.err
13648 rm -f conftest.er1
13649 cat conftest.err >&5
13650 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13651 (exit $ac_status); } && {
13652 test -z "$ac_c_werror_flag" ||
13653 test ! -s conftest.err
13654 } && test -s conftest$ac_exeext &&
13655 $as_test_x conftest$ac_exeext; then
13656 ac_cv_lib_z_deflate=yes 8858 ac_cv_lib_z_deflate=yes
13657else 8859else
13658 echo "$as_me: failed program was:" >&5 8860 ac_cv_lib_z_deflate=no
13659sed 's/^/| /' conftest.$ac_ext >&5
13660
13661 ac_cv_lib_z_deflate=no
13662fi 8861fi
13663 8862rm -f core conftest.err conftest.$ac_objext \
13664rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8863 conftest$ac_exeext conftest.$ac_ext
13665 conftest$ac_exeext conftest.$ac_ext
13666LIBS=$ac_check_lib_save_LIBS 8864LIBS=$ac_check_lib_save_LIBS
13667fi 8865fi
13668{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 8866{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5
13669echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6; } 8867$as_echo "$ac_cv_lib_z_deflate" >&6; }
13670if test $ac_cv_lib_z_deflate = yes; then 8868if test "x$ac_cv_lib_z_deflate" = xyes; then :
13671 cat >>confdefs.h <<_ACEOF 8869 cat >>confdefs.h <<_ACEOF
13672#define HAVE_LIBZ 1 8870#define HAVE_LIBZ 1
13673_ACEOF 8871_ACEOF
@@ -13686,11 +8884,7 @@ else
13686 fi 8884 fi
13687 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}" 8885 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
13688 LIBS="$LIBS -lz" 8886 LIBS="$LIBS -lz"
13689 cat >conftest.$ac_ext <<_ACEOF 8887 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13690/* confdefs.h. */
13691_ACEOF
13692cat confdefs.h >>conftest.$ac_ext
13693cat >>conftest.$ac_ext <<_ACEOF
13694/* end confdefs.h. */ 8888/* end confdefs.h. */
13695 8889
13696/* Override any GCC internal prototype to avoid an error. 8890/* Override any GCC internal prototype to avoid an error.
@@ -13708,42 +8902,17 @@ return deflate ();
13708 return 0; 8902 return 0;
13709} 8903}
13710_ACEOF 8904_ACEOF
13711rm -f conftest.$ac_objext conftest$ac_exeext 8905if ac_fn_c_try_link "$LINENO"; then :
13712if { (ac_try="$ac_link" 8906 $as_echo "#define HAVE_LIBZ 1" >>confdefs.h
13713case "(($ac_try" in
13714 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13715 *) ac_try_echo=$ac_try;;
13716esac
13717eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13718 (eval "$ac_link") 2>conftest.er1
13719 ac_status=$?
13720 grep -v '^ *+' conftest.er1 >conftest.err
13721 rm -f conftest.er1
13722 cat conftest.err >&5
13723 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13724 (exit $ac_status); } && {
13725 test -z "$ac_c_werror_flag" ||
13726 test ! -s conftest.err
13727 } && test -s conftest$ac_exeext &&
13728 $as_test_x conftest$ac_exeext; then
13729 cat >>confdefs.h <<\_ACEOF
13730#define HAVE_LIBZ 1
13731_ACEOF
13732 8907
13733else 8908else
13734 echo "$as_me: failed program was:" >&5
13735sed 's/^/| /' conftest.$ac_ext >&5
13736 8909
13737 8910 as_fn_error $? "*** zlib missing - please install first or check config.log ***" "$LINENO" 5
13738 { { echo "$as_me:$LINENO: error: *** zlib missing - please install first or check config.log ***" >&5
13739echo "$as_me: error: *** zlib missing - please install first or check config.log ***" >&2;}
13740 { (exit 1); exit 1; }; }
13741 8911
13742 8912
13743fi 8913fi
13744 8914rm -f core conftest.err conftest.$ac_objext \
13745rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 8915 conftest$ac_exeext conftest.$ac_ext
13746 conftest$ac_exeext conftest.$ac_ext
13747 8916
13748 8917
13749fi 8918fi
@@ -13751,7 +8920,7 @@ fi
13751 8920
13752 8921
13753# Check whether --with-zlib-version-check was given. 8922# Check whether --with-zlib-version-check was given.
13754if test "${with_zlib_version_check+set}" = set; then 8923if test "${with_zlib_version_check+set}" = set; then :
13755 withval=$with_zlib_version_check; if test "x$withval" = "xno" ; then 8924 withval=$with_zlib_version_check; if test "x$withval" = "xno" ; then
13756 zlib_check_nonfatal=1 8925 zlib_check_nonfatal=1
13757 fi 8926 fi
@@ -13760,18 +8929,14 @@ if test "${with_zlib_version_check+set}" = set; then
13760fi 8929fi
13761 8930
13762 8931
13763{ echo "$as_me:$LINENO: checking for possibly buggy zlib" >&5 8932{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for possibly buggy zlib" >&5
13764echo $ECHO_N "checking for possibly buggy zlib... $ECHO_C" >&6; } 8933$as_echo_n "checking for possibly buggy zlib... " >&6; }
13765if test "$cross_compiling" = yes; then 8934if test "$cross_compiling" = yes; then :
13766 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking zlib version" >&5 8935 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking zlib version" >&5
13767echo "$as_me: WARNING: cross compiling: not checking zlib version" >&2;} 8936$as_echo "$as_me: WARNING: cross compiling: not checking zlib version" >&2;}
13768 8937
13769else 8938else
13770 cat >conftest.$ac_ext <<_ACEOF 8939 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13771/* confdefs.h. */
13772_ACEOF
13773cat confdefs.h >>conftest.$ac_ext
13774cat >>conftest.$ac_ext <<_ACEOF
13775/* end confdefs.h. */ 8940/* end confdefs.h. */
13776 8941
13777#include <stdio.h> 8942#include <stdio.h>
@@ -13803,159 +8968,43 @@ main ()
13803 return 0; 8968 return 0;
13804} 8969}
13805_ACEOF 8970_ACEOF
13806rm -f conftest$ac_exeext 8971if ac_fn_c_try_run "$LINENO"; then :
13807if { (ac_try="$ac_link" 8972 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
13808case "(($ac_try" in 8973$as_echo "no" >&6; }
13809 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13810 *) ac_try_echo=$ac_try;;
13811esac
13812eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13813 (eval "$ac_link") 2>&5
13814 ac_status=$?
13815 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13816 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
13817 { (case "(($ac_try" in
13818 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13819 *) ac_try_echo=$ac_try;;
13820esac
13821eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13822 (eval "$ac_try") 2>&5
13823 ac_status=$?
13824 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13825 (exit $ac_status); }; }; then
13826 { echo "$as_me:$LINENO: result: no" >&5
13827echo "${ECHO_T}no" >&6; }
13828else 8974else
13829 echo "$as_me: program exited with status $ac_status" >&5 8975 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
13830echo "$as_me: failed program was:" >&5 8976$as_echo "yes" >&6; }
13831sed 's/^/| /' conftest.$ac_ext >&5
13832
13833( exit $ac_status )
13834 { echo "$as_me:$LINENO: result: yes" >&5
13835echo "${ECHO_T}yes" >&6; }
13836 if test -z "$zlib_check_nonfatal" ; then 8977 if test -z "$zlib_check_nonfatal" ; then
13837 { { echo "$as_me:$LINENO: error: *** zlib too old - check config.log *** 8978 as_fn_error $? "*** zlib too old - check config.log ***
13838Your reported zlib version has known security problems. It's possible your
13839vendor has fixed these problems without changing the version number. If you
13840are sure this is the case, you can disable the check by running
13841\"./configure --without-zlib-version-check\".
13842If you are in doubt, upgrade zlib to version 1.2.3 or greater.
13843See http://www.gzip.org/zlib/ for details." >&5
13844echo "$as_me: error: *** zlib too old - check config.log ***
13845Your reported zlib version has known security problems. It's possible your 8979Your reported zlib version has known security problems. It's possible your
13846vendor has fixed these problems without changing the version number. If you 8980vendor has fixed these problems without changing the version number. If you
13847are sure this is the case, you can disable the check by running 8981are sure this is the case, you can disable the check by running
13848\"./configure --without-zlib-version-check\". 8982\"./configure --without-zlib-version-check\".
13849If you are in doubt, upgrade zlib to version 1.2.3 or greater. 8983If you are in doubt, upgrade zlib to version 1.2.3 or greater.
13850See http://www.gzip.org/zlib/ for details." >&2;} 8984See http://www.gzip.org/zlib/ for details." "$LINENO" 5
13851 { (exit 1); exit 1; }; }
13852 else 8985 else
13853 { echo "$as_me:$LINENO: WARNING: zlib version may have security problems" >&5 8986 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zlib version may have security problems" >&5
13854echo "$as_me: WARNING: zlib version may have security problems" >&2;} 8987$as_echo "$as_me: WARNING: zlib version may have security problems" >&2;}
13855 fi 8988 fi
13856 8989
13857fi 8990fi
13858rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 8991rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
8992 conftest.$ac_objext conftest.beam conftest.$ac_ext
13859fi 8993fi
13860 8994
13861 8995
8996ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
8997if test "x$ac_cv_func_strcasecmp" = xyes; then :
13862 8998
13863{ echo "$as_me:$LINENO: checking for strcasecmp" >&5
13864echo $ECHO_N "checking for strcasecmp... $ECHO_C" >&6; }
13865if test "${ac_cv_func_strcasecmp+set}" = set; then
13866 echo $ECHO_N "(cached) $ECHO_C" >&6
13867else
13868 cat >conftest.$ac_ext <<_ACEOF
13869/* confdefs.h. */
13870_ACEOF
13871cat confdefs.h >>conftest.$ac_ext
13872cat >>conftest.$ac_ext <<_ACEOF
13873/* end confdefs.h. */
13874/* Define strcasecmp to an innocuous variant, in case <limits.h> declares strcasecmp.
13875 For example, HP-UX 11i <limits.h> declares gettimeofday. */
13876#define strcasecmp innocuous_strcasecmp
13877
13878/* System header to define __stub macros and hopefully few prototypes,
13879 which can conflict with char strcasecmp (); below.
13880 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
13881 <limits.h> exists even on freestanding compilers. */
13882
13883#ifdef __STDC__
13884# include <limits.h>
13885#else
13886# include <assert.h>
13887#endif
13888
13889#undef strcasecmp
13890
13891/* Override any GCC internal prototype to avoid an error.
13892 Use char because int might match the return type of a GCC
13893 builtin and then its argument prototype would still apply. */
13894#ifdef __cplusplus
13895extern "C"
13896#endif
13897char strcasecmp ();
13898/* The GNU C library defines this for functions which it implements
13899 to always fail with ENOSYS. Some functions are actually named
13900 something starting with __ and the normal name is an alias. */
13901#if defined __stub_strcasecmp || defined __stub___strcasecmp
13902choke me
13903#endif
13904
13905int
13906main ()
13907{
13908return strcasecmp ();
13909 ;
13910 return 0;
13911}
13912_ACEOF
13913rm -f conftest.$ac_objext conftest$ac_exeext
13914if { (ac_try="$ac_link"
13915case "(($ac_try" in
13916 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13917 *) ac_try_echo=$ac_try;;
13918esac
13919eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13920 (eval "$ac_link") 2>conftest.er1
13921 ac_status=$?
13922 grep -v '^ *+' conftest.er1 >conftest.err
13923 rm -f conftest.er1
13924 cat conftest.err >&5
13925 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13926 (exit $ac_status); } && {
13927 test -z "$ac_c_werror_flag" ||
13928 test ! -s conftest.err
13929 } && test -s conftest$ac_exeext &&
13930 $as_test_x conftest$ac_exeext; then
13931 ac_cv_func_strcasecmp=yes
13932else
13933 echo "$as_me: failed program was:" >&5
13934sed 's/^/| /' conftest.$ac_ext >&5
13935
13936 ac_cv_func_strcasecmp=no
13937fi
13938
13939rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13940 conftest$ac_exeext conftest.$ac_ext
13941fi
13942{ echo "$as_me:$LINENO: result: $ac_cv_func_strcasecmp" >&5
13943echo "${ECHO_T}$ac_cv_func_strcasecmp" >&6; }
13944if test $ac_cv_func_strcasecmp = yes; then
13945 :
13946else 8999else
13947 { echo "$as_me:$LINENO: checking for strcasecmp in -lresolv" >&5 9000 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strcasecmp in -lresolv" >&5
13948echo $ECHO_N "checking for strcasecmp in -lresolv... $ECHO_C" >&6; } 9001$as_echo_n "checking for strcasecmp in -lresolv... " >&6; }
13949if test "${ac_cv_lib_resolv_strcasecmp+set}" = set; then 9002if ${ac_cv_lib_resolv_strcasecmp+:} false; then :
13950 echo $ECHO_N "(cached) $ECHO_C" >&6 9003 $as_echo_n "(cached) " >&6
13951else 9004else
13952 ac_check_lib_save_LIBS=$LIBS 9005 ac_check_lib_save_LIBS=$LIBS
13953LIBS="-lresolv $LIBS" 9006LIBS="-lresolv $LIBS"
13954cat >conftest.$ac_ext <<_ACEOF 9007cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13955/* confdefs.h. */
13956_ACEOF
13957cat confdefs.h >>conftest.$ac_ext
13958cat >>conftest.$ac_ext <<_ACEOF
13959/* end confdefs.h. */ 9008/* end confdefs.h. */
13960 9009
13961/* Override any GCC internal prototype to avoid an error. 9010/* Override any GCC internal prototype to avoid an error.
@@ -13973,149 +9022,41 @@ return strcasecmp ();
13973 return 0; 9022 return 0;
13974} 9023}
13975_ACEOF 9024_ACEOF
13976rm -f conftest.$ac_objext conftest$ac_exeext 9025if ac_fn_c_try_link "$LINENO"; then :
13977if { (ac_try="$ac_link"
13978case "(($ac_try" in
13979 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13980 *) ac_try_echo=$ac_try;;
13981esac
13982eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13983 (eval "$ac_link") 2>conftest.er1
13984 ac_status=$?
13985 grep -v '^ *+' conftest.er1 >conftest.err
13986 rm -f conftest.er1
13987 cat conftest.err >&5
13988 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13989 (exit $ac_status); } && {
13990 test -z "$ac_c_werror_flag" ||
13991 test ! -s conftest.err
13992 } && test -s conftest$ac_exeext &&
13993 $as_test_x conftest$ac_exeext; then
13994 ac_cv_lib_resolv_strcasecmp=yes 9026 ac_cv_lib_resolv_strcasecmp=yes
13995else 9027else
13996 echo "$as_me: failed program was:" >&5 9028 ac_cv_lib_resolv_strcasecmp=no
13997sed 's/^/| /' conftest.$ac_ext >&5
13998
13999 ac_cv_lib_resolv_strcasecmp=no
14000fi 9029fi
14001 9030rm -f core conftest.err conftest.$ac_objext \
14002rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9031 conftest$ac_exeext conftest.$ac_ext
14003 conftest$ac_exeext conftest.$ac_ext
14004LIBS=$ac_check_lib_save_LIBS 9032LIBS=$ac_check_lib_save_LIBS
14005fi 9033fi
14006{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_strcasecmp" >&5 9034{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_strcasecmp" >&5
14007echo "${ECHO_T}$ac_cv_lib_resolv_strcasecmp" >&6; } 9035$as_echo "$ac_cv_lib_resolv_strcasecmp" >&6; }
14008if test $ac_cv_lib_resolv_strcasecmp = yes; then 9036if test "x$ac_cv_lib_resolv_strcasecmp" = xyes; then :
14009 LIBS="$LIBS -lresolv" 9037 LIBS="$LIBS -lresolv"
14010fi 9038fi
14011 9039
14012 9040
14013fi 9041fi
14014 9042
14015
14016for ac_func in utimes 9043for ac_func in utimes
14017do 9044do :
14018as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 9045 ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
14019{ echo "$as_me:$LINENO: checking for $ac_func" >&5 9046if test "x$ac_cv_func_utimes" = xyes; then :
14020echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
14021if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
14022 echo $ECHO_N "(cached) $ECHO_C" >&6
14023else
14024 cat >conftest.$ac_ext <<_ACEOF
14025/* confdefs.h. */
14026_ACEOF
14027cat confdefs.h >>conftest.$ac_ext
14028cat >>conftest.$ac_ext <<_ACEOF
14029/* end confdefs.h. */
14030/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
14031 For example, HP-UX 11i <limits.h> declares gettimeofday. */
14032#define $ac_func innocuous_$ac_func
14033
14034/* System header to define __stub macros and hopefully few prototypes,
14035 which can conflict with char $ac_func (); below.
14036 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
14037 <limits.h> exists even on freestanding compilers. */
14038
14039#ifdef __STDC__
14040# include <limits.h>
14041#else
14042# include <assert.h>
14043#endif
14044
14045#undef $ac_func
14046
14047/* Override any GCC internal prototype to avoid an error.
14048 Use char because int might match the return type of a GCC
14049 builtin and then its argument prototype would still apply. */
14050#ifdef __cplusplus
14051extern "C"
14052#endif
14053char $ac_func ();
14054/* The GNU C library defines this for functions which it implements
14055 to always fail with ENOSYS. Some functions are actually named
14056 something starting with __ and the normal name is an alias. */
14057#if defined __stub_$ac_func || defined __stub___$ac_func
14058choke me
14059#endif
14060
14061int
14062main ()
14063{
14064return $ac_func ();
14065 ;
14066 return 0;
14067}
14068_ACEOF
14069rm -f conftest.$ac_objext conftest$ac_exeext
14070if { (ac_try="$ac_link"
14071case "(($ac_try" in
14072 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14073 *) ac_try_echo=$ac_try;;
14074esac
14075eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14076 (eval "$ac_link") 2>conftest.er1
14077 ac_status=$?
14078 grep -v '^ *+' conftest.er1 >conftest.err
14079 rm -f conftest.er1
14080 cat conftest.err >&5
14081 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14082 (exit $ac_status); } && {
14083 test -z "$ac_c_werror_flag" ||
14084 test ! -s conftest.err
14085 } && test -s conftest$ac_exeext &&
14086 $as_test_x conftest$ac_exeext; then
14087 eval "$as_ac_var=yes"
14088else
14089 echo "$as_me: failed program was:" >&5
14090sed 's/^/| /' conftest.$ac_ext >&5
14091
14092 eval "$as_ac_var=no"
14093fi
14094
14095rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14096 conftest$ac_exeext conftest.$ac_ext
14097fi
14098ac_res=`eval echo '${'$as_ac_var'}'`
14099 { echo "$as_me:$LINENO: result: $ac_res" >&5
14100echo "${ECHO_T}$ac_res" >&6; }
14101if test `eval echo '${'$as_ac_var'}'` = yes; then
14102 cat >>confdefs.h <<_ACEOF 9047 cat >>confdefs.h <<_ACEOF
14103#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 9048#define HAVE_UTIMES 1
14104_ACEOF 9049_ACEOF
14105 9050
14106else 9051else
14107 { echo "$as_me:$LINENO: checking for utimes in -lc89" >&5 9052 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimes in -lc89" >&5
14108echo $ECHO_N "checking for utimes in -lc89... $ECHO_C" >&6; } 9053$as_echo_n "checking for utimes in -lc89... " >&6; }
14109if test "${ac_cv_lib_c89_utimes+set}" = set; then 9054if ${ac_cv_lib_c89_utimes+:} false; then :
14110 echo $ECHO_N "(cached) $ECHO_C" >&6 9055 $as_echo_n "(cached) " >&6
14111else 9056else
14112 ac_check_lib_save_LIBS=$LIBS 9057 ac_check_lib_save_LIBS=$LIBS
14113LIBS="-lc89 $LIBS" 9058LIBS="-lc89 $LIBS"
14114cat >conftest.$ac_ext <<_ACEOF 9059cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14115/* confdefs.h. */
14116_ACEOF
14117cat confdefs.h >>conftest.$ac_ext
14118cat >>conftest.$ac_ext <<_ACEOF
14119/* end confdefs.h. */ 9060/* end confdefs.h. */
14120 9061
14121/* Override any GCC internal prototype to avoid an error. 9062/* Override any GCC internal prototype to avoid an error.
@@ -14133,42 +9074,19 @@ return utimes ();
14133 return 0; 9074 return 0;
14134} 9075}
14135_ACEOF 9076_ACEOF
14136rm -f conftest.$ac_objext conftest$ac_exeext 9077if ac_fn_c_try_link "$LINENO"; then :
14137if { (ac_try="$ac_link"
14138case "(($ac_try" in
14139 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14140 *) ac_try_echo=$ac_try;;
14141esac
14142eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14143 (eval "$ac_link") 2>conftest.er1
14144 ac_status=$?
14145 grep -v '^ *+' conftest.er1 >conftest.err
14146 rm -f conftest.er1
14147 cat conftest.err >&5
14148 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14149 (exit $ac_status); } && {
14150 test -z "$ac_c_werror_flag" ||
14151 test ! -s conftest.err
14152 } && test -s conftest$ac_exeext &&
14153 $as_test_x conftest$ac_exeext; then
14154 ac_cv_lib_c89_utimes=yes 9078 ac_cv_lib_c89_utimes=yes
14155else 9079else
14156 echo "$as_me: failed program was:" >&5 9080 ac_cv_lib_c89_utimes=no
14157sed 's/^/| /' conftest.$ac_ext >&5
14158
14159 ac_cv_lib_c89_utimes=no
14160fi 9081fi
14161 9082rm -f core conftest.err conftest.$ac_objext \
14162rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9083 conftest$ac_exeext conftest.$ac_ext
14163 conftest$ac_exeext conftest.$ac_ext
14164LIBS=$ac_check_lib_save_LIBS 9084LIBS=$ac_check_lib_save_LIBS
14165fi 9085fi
14166{ echo "$as_me:$LINENO: result: $ac_cv_lib_c89_utimes" >&5 9086{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c89_utimes" >&5
14167echo "${ECHO_T}$ac_cv_lib_c89_utimes" >&6; } 9087$as_echo "$ac_cv_lib_c89_utimes" >&6; }
14168if test $ac_cv_lib_c89_utimes = yes; then 9088if test "x$ac_cv_lib_c89_utimes" = xyes; then :
14169 cat >>confdefs.h <<\_ACEOF 9089 $as_echo "#define HAVE_UTIMES 1" >>confdefs.h
14170#define HAVE_UTIMES 1
14171_ACEOF
14172 9090
14173 LIBS="$LIBS -lc89" 9091 LIBS="$LIBS -lc89"
14174fi 9092fi
@@ -14178,163 +9096,26 @@ fi
14178done 9096done
14179 9097
14180 9098
14181
14182
14183for ac_header in bsd/libutil.h libutil.h 9099for ac_header in bsd/libutil.h libutil.h
14184do 9100do :
14185as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 9101 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
14186if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then 9102ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
14187 { echo "$as_me:$LINENO: checking for $ac_header" >&5 9103if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
14188echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
14189if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
14190 echo $ECHO_N "(cached) $ECHO_C" >&6
14191fi
14192ac_res=`eval echo '${'$as_ac_Header'}'`
14193 { echo "$as_me:$LINENO: result: $ac_res" >&5
14194echo "${ECHO_T}$ac_res" >&6; }
14195else
14196 # Is the header compilable?
14197{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
14198echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
14199cat >conftest.$ac_ext <<_ACEOF
14200/* confdefs.h. */
14201_ACEOF
14202cat confdefs.h >>conftest.$ac_ext
14203cat >>conftest.$ac_ext <<_ACEOF
14204/* end confdefs.h. */
14205$ac_includes_default
14206#include <$ac_header>
14207_ACEOF
14208rm -f conftest.$ac_objext
14209if { (ac_try="$ac_compile"
14210case "(($ac_try" in
14211 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14212 *) ac_try_echo=$ac_try;;
14213esac
14214eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14215 (eval "$ac_compile") 2>conftest.er1
14216 ac_status=$?
14217 grep -v '^ *+' conftest.er1 >conftest.err
14218 rm -f conftest.er1
14219 cat conftest.err >&5
14220 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14221 (exit $ac_status); } && {
14222 test -z "$ac_c_werror_flag" ||
14223 test ! -s conftest.err
14224 } && test -s conftest.$ac_objext; then
14225 ac_header_compiler=yes
14226else
14227 echo "$as_me: failed program was:" >&5
14228sed 's/^/| /' conftest.$ac_ext >&5
14229
14230 ac_header_compiler=no
14231fi
14232
14233rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14234{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
14235echo "${ECHO_T}$ac_header_compiler" >&6; }
14236
14237# Is the header present?
14238{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
14239echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
14240cat >conftest.$ac_ext <<_ACEOF
14241/* confdefs.h. */
14242_ACEOF
14243cat confdefs.h >>conftest.$ac_ext
14244cat >>conftest.$ac_ext <<_ACEOF
14245/* end confdefs.h. */
14246#include <$ac_header>
14247_ACEOF
14248if { (ac_try="$ac_cpp conftest.$ac_ext"
14249case "(($ac_try" in
14250 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14251 *) ac_try_echo=$ac_try;;
14252esac
14253eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14254 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
14255 ac_status=$?
14256 grep -v '^ *+' conftest.er1 >conftest.err
14257 rm -f conftest.er1
14258 cat conftest.err >&5
14259 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14260 (exit $ac_status); } >/dev/null && {
14261 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
14262 test ! -s conftest.err
14263 }; then
14264 ac_header_preproc=yes
14265else
14266 echo "$as_me: failed program was:" >&5
14267sed 's/^/| /' conftest.$ac_ext >&5
14268
14269 ac_header_preproc=no
14270fi
14271
14272rm -f conftest.err conftest.$ac_ext
14273{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
14274echo "${ECHO_T}$ac_header_preproc" >&6; }
14275
14276# So? What about this header?
14277case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
14278 yes:no: )
14279 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
14280echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
14281 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
14282echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
14283 ac_header_preproc=yes
14284 ;;
14285 no:yes:* )
14286 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
14287echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
14288 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
14289echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
14290 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
14291echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
14292 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
14293echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
14294 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
14295echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
14296 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
14297echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
14298 ( cat <<\_ASBOX
14299## ------------------------------------------- ##
14300## Report this to openssh-unix-dev@mindrot.org ##
14301## ------------------------------------------- ##
14302_ASBOX
14303 ) | sed "s/^/$as_me: WARNING: /" >&2
14304 ;;
14305esac
14306{ echo "$as_me:$LINENO: checking for $ac_header" >&5
14307echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
14308if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
14309 echo $ECHO_N "(cached) $ECHO_C" >&6
14310else
14311 eval "$as_ac_Header=\$ac_header_preproc"
14312fi
14313ac_res=`eval echo '${'$as_ac_Header'}'`
14314 { echo "$as_me:$LINENO: result: $ac_res" >&5
14315echo "${ECHO_T}$ac_res" >&6; }
14316
14317fi
14318if test `eval echo '${'$as_ac_Header'}'` = yes; then
14319 cat >>confdefs.h <<_ACEOF 9104 cat >>confdefs.h <<_ACEOF
14320#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 9105#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
14321_ACEOF 9106_ACEOF
14322 9107
14323fi 9108fi
14324 9109
14325done 9110done
14326 9111
14327{ echo "$as_me:$LINENO: checking for library containing fmt_scaled" >&5 9112{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmt_scaled" >&5
14328echo $ECHO_N "checking for library containing fmt_scaled... $ECHO_C" >&6; } 9113$as_echo_n "checking for library containing fmt_scaled... " >&6; }
14329if test "${ac_cv_search_fmt_scaled+set}" = set; then 9114if ${ac_cv_search_fmt_scaled+:} false; then :
14330 echo $ECHO_N "(cached) $ECHO_C" >&6 9115 $as_echo_n "(cached) " >&6
14331else 9116else
14332 ac_func_search_save_LIBS=$LIBS 9117 ac_func_search_save_LIBS=$LIBS
14333cat >conftest.$ac_ext <<_ACEOF 9118cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14334/* confdefs.h. */
14335_ACEOF
14336cat confdefs.h >>conftest.$ac_ext
14337cat >>conftest.$ac_ext <<_ACEOF
14338/* end confdefs.h. */ 9119/* end confdefs.h. */
14339 9120
14340/* Override any GCC internal prototype to avoid an error. 9121/* Override any GCC internal prototype to avoid an error.
@@ -14359,65 +9140,38 @@ for ac_lib in '' util bsd; do
14359 ac_res=-l$ac_lib 9140 ac_res=-l$ac_lib
14360 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9141 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14361 fi 9142 fi
14362 rm -f conftest.$ac_objext conftest$ac_exeext 9143 if ac_fn_c_try_link "$LINENO"; then :
14363if { (ac_try="$ac_link"
14364case "(($ac_try" in
14365 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14366 *) ac_try_echo=$ac_try;;
14367esac
14368eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14369 (eval "$ac_link") 2>conftest.er1
14370 ac_status=$?
14371 grep -v '^ *+' conftest.er1 >conftest.err
14372 rm -f conftest.er1
14373 cat conftest.err >&5
14374 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14375 (exit $ac_status); } && {
14376 test -z "$ac_c_werror_flag" ||
14377 test ! -s conftest.err
14378 } && test -s conftest$ac_exeext &&
14379 $as_test_x conftest$ac_exeext; then
14380 ac_cv_search_fmt_scaled=$ac_res 9144 ac_cv_search_fmt_scaled=$ac_res
14381else
14382 echo "$as_me: failed program was:" >&5
14383sed 's/^/| /' conftest.$ac_ext >&5
14384
14385
14386fi 9145fi
14387 9146rm -f core conftest.err conftest.$ac_objext \
14388rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9147 conftest$ac_exeext
14389 conftest$ac_exeext 9148 if ${ac_cv_search_fmt_scaled+:} false; then :
14390 if test "${ac_cv_search_fmt_scaled+set}" = set; then
14391 break 9149 break
14392fi 9150fi
14393done 9151done
14394if test "${ac_cv_search_fmt_scaled+set}" = set; then 9152if ${ac_cv_search_fmt_scaled+:} false; then :
14395 : 9153
14396else 9154else
14397 ac_cv_search_fmt_scaled=no 9155 ac_cv_search_fmt_scaled=no
14398fi 9156fi
14399rm conftest.$ac_ext 9157rm conftest.$ac_ext
14400LIBS=$ac_func_search_save_LIBS 9158LIBS=$ac_func_search_save_LIBS
14401fi 9159fi
14402{ echo "$as_me:$LINENO: result: $ac_cv_search_fmt_scaled" >&5 9160{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmt_scaled" >&5
14403echo "${ECHO_T}$ac_cv_search_fmt_scaled" >&6; } 9161$as_echo "$ac_cv_search_fmt_scaled" >&6; }
14404ac_res=$ac_cv_search_fmt_scaled 9162ac_res=$ac_cv_search_fmt_scaled
14405if test "$ac_res" != no; then 9163if test "$ac_res" != no; then :
14406 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9164 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14407 9165
14408fi 9166fi
14409 9167
14410{ echo "$as_me:$LINENO: checking for library containing scan_scaled" >&5 9168{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing scan_scaled" >&5
14411echo $ECHO_N "checking for library containing scan_scaled... $ECHO_C" >&6; } 9169$as_echo_n "checking for library containing scan_scaled... " >&6; }
14412if test "${ac_cv_search_scan_scaled+set}" = set; then 9170if ${ac_cv_search_scan_scaled+:} false; then :
14413 echo $ECHO_N "(cached) $ECHO_C" >&6 9171 $as_echo_n "(cached) " >&6
14414else 9172else
14415 ac_func_search_save_LIBS=$LIBS 9173 ac_func_search_save_LIBS=$LIBS
14416cat >conftest.$ac_ext <<_ACEOF 9174cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14417/* confdefs.h. */
14418_ACEOF
14419cat confdefs.h >>conftest.$ac_ext
14420cat >>conftest.$ac_ext <<_ACEOF
14421/* end confdefs.h. */ 9175/* end confdefs.h. */
14422 9176
14423/* Override any GCC internal prototype to avoid an error. 9177/* Override any GCC internal prototype to avoid an error.
@@ -14442,65 +9196,38 @@ for ac_lib in '' util bsd; do
14442 ac_res=-l$ac_lib 9196 ac_res=-l$ac_lib
14443 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9197 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14444 fi 9198 fi
14445 rm -f conftest.$ac_objext conftest$ac_exeext 9199 if ac_fn_c_try_link "$LINENO"; then :
14446if { (ac_try="$ac_link"
14447case "(($ac_try" in
14448 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14449 *) ac_try_echo=$ac_try;;
14450esac
14451eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14452 (eval "$ac_link") 2>conftest.er1
14453 ac_status=$?
14454 grep -v '^ *+' conftest.er1 >conftest.err
14455 rm -f conftest.er1
14456 cat conftest.err >&5
14457 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14458 (exit $ac_status); } && {
14459 test -z "$ac_c_werror_flag" ||
14460 test ! -s conftest.err
14461 } && test -s conftest$ac_exeext &&
14462 $as_test_x conftest$ac_exeext; then
14463 ac_cv_search_scan_scaled=$ac_res 9200 ac_cv_search_scan_scaled=$ac_res
14464else
14465 echo "$as_me: failed program was:" >&5
14466sed 's/^/| /' conftest.$ac_ext >&5
14467
14468
14469fi 9201fi
14470 9202rm -f core conftest.err conftest.$ac_objext \
14471rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9203 conftest$ac_exeext
14472 conftest$ac_exeext 9204 if ${ac_cv_search_scan_scaled+:} false; then :
14473 if test "${ac_cv_search_scan_scaled+set}" = set; then
14474 break 9205 break
14475fi 9206fi
14476done 9207done
14477if test "${ac_cv_search_scan_scaled+set}" = set; then 9208if ${ac_cv_search_scan_scaled+:} false; then :
14478 : 9209
14479else 9210else
14480 ac_cv_search_scan_scaled=no 9211 ac_cv_search_scan_scaled=no
14481fi 9212fi
14482rm conftest.$ac_ext 9213rm conftest.$ac_ext
14483LIBS=$ac_func_search_save_LIBS 9214LIBS=$ac_func_search_save_LIBS
14484fi 9215fi
14485{ echo "$as_me:$LINENO: result: $ac_cv_search_scan_scaled" >&5 9216{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_scan_scaled" >&5
14486echo "${ECHO_T}$ac_cv_search_scan_scaled" >&6; } 9217$as_echo "$ac_cv_search_scan_scaled" >&6; }
14487ac_res=$ac_cv_search_scan_scaled 9218ac_res=$ac_cv_search_scan_scaled
14488if test "$ac_res" != no; then 9219if test "$ac_res" != no; then :
14489 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9220 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14490 9221
14491fi 9222fi
14492 9223
14493{ echo "$as_me:$LINENO: checking for library containing login" >&5 9224{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing login" >&5
14494echo $ECHO_N "checking for library containing login... $ECHO_C" >&6; } 9225$as_echo_n "checking for library containing login... " >&6; }
14495if test "${ac_cv_search_login+set}" = set; then 9226if ${ac_cv_search_login+:} false; then :
14496 echo $ECHO_N "(cached) $ECHO_C" >&6 9227 $as_echo_n "(cached) " >&6
14497else 9228else
14498 ac_func_search_save_LIBS=$LIBS 9229 ac_func_search_save_LIBS=$LIBS
14499cat >conftest.$ac_ext <<_ACEOF 9230cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14500/* confdefs.h. */
14501_ACEOF
14502cat confdefs.h >>conftest.$ac_ext
14503cat >>conftest.$ac_ext <<_ACEOF
14504/* end confdefs.h. */ 9231/* end confdefs.h. */
14505 9232
14506/* Override any GCC internal prototype to avoid an error. 9233/* Override any GCC internal prototype to avoid an error.
@@ -14525,65 +9252,38 @@ for ac_lib in '' util bsd; do
14525 ac_res=-l$ac_lib 9252 ac_res=-l$ac_lib
14526 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9253 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14527 fi 9254 fi
14528 rm -f conftest.$ac_objext conftest$ac_exeext 9255 if ac_fn_c_try_link "$LINENO"; then :
14529if { (ac_try="$ac_link"
14530case "(($ac_try" in
14531 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14532 *) ac_try_echo=$ac_try;;
14533esac
14534eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14535 (eval "$ac_link") 2>conftest.er1
14536 ac_status=$?
14537 grep -v '^ *+' conftest.er1 >conftest.err
14538 rm -f conftest.er1
14539 cat conftest.err >&5
14540 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14541 (exit $ac_status); } && {
14542 test -z "$ac_c_werror_flag" ||
14543 test ! -s conftest.err
14544 } && test -s conftest$ac_exeext &&
14545 $as_test_x conftest$ac_exeext; then
14546 ac_cv_search_login=$ac_res 9256 ac_cv_search_login=$ac_res
14547else
14548 echo "$as_me: failed program was:" >&5
14549sed 's/^/| /' conftest.$ac_ext >&5
14550
14551
14552fi 9257fi
14553 9258rm -f core conftest.err conftest.$ac_objext \
14554rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9259 conftest$ac_exeext
14555 conftest$ac_exeext 9260 if ${ac_cv_search_login+:} false; then :
14556 if test "${ac_cv_search_login+set}" = set; then
14557 break 9261 break
14558fi 9262fi
14559done 9263done
14560if test "${ac_cv_search_login+set}" = set; then 9264if ${ac_cv_search_login+:} false; then :
14561 : 9265
14562else 9266else
14563 ac_cv_search_login=no 9267 ac_cv_search_login=no
14564fi 9268fi
14565rm conftest.$ac_ext 9269rm conftest.$ac_ext
14566LIBS=$ac_func_search_save_LIBS 9270LIBS=$ac_func_search_save_LIBS
14567fi 9271fi
14568{ echo "$as_me:$LINENO: result: $ac_cv_search_login" >&5 9272{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login" >&5
14569echo "${ECHO_T}$ac_cv_search_login" >&6; } 9273$as_echo "$ac_cv_search_login" >&6; }
14570ac_res=$ac_cv_search_login 9274ac_res=$ac_cv_search_login
14571if test "$ac_res" != no; then 9275if test "$ac_res" != no; then :
14572 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9276 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14573 9277
14574fi 9278fi
14575 9279
14576{ echo "$as_me:$LINENO: checking for library containing logout" >&5 9280{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logout" >&5
14577echo $ECHO_N "checking for library containing logout... $ECHO_C" >&6; } 9281$as_echo_n "checking for library containing logout... " >&6; }
14578if test "${ac_cv_search_logout+set}" = set; then 9282if ${ac_cv_search_logout+:} false; then :
14579 echo $ECHO_N "(cached) $ECHO_C" >&6 9283 $as_echo_n "(cached) " >&6
14580else 9284else
14581 ac_func_search_save_LIBS=$LIBS 9285 ac_func_search_save_LIBS=$LIBS
14582cat >conftest.$ac_ext <<_ACEOF 9286cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14583/* confdefs.h. */
14584_ACEOF
14585cat confdefs.h >>conftest.$ac_ext
14586cat >>conftest.$ac_ext <<_ACEOF
14587/* end confdefs.h. */ 9287/* end confdefs.h. */
14588 9288
14589/* Override any GCC internal prototype to avoid an error. 9289/* Override any GCC internal prototype to avoid an error.
@@ -14608,65 +9308,38 @@ for ac_lib in '' util bsd; do
14608 ac_res=-l$ac_lib 9308 ac_res=-l$ac_lib
14609 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9309 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14610 fi 9310 fi
14611 rm -f conftest.$ac_objext conftest$ac_exeext 9311 if ac_fn_c_try_link "$LINENO"; then :
14612if { (ac_try="$ac_link"
14613case "(($ac_try" in
14614 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14615 *) ac_try_echo=$ac_try;;
14616esac
14617eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14618 (eval "$ac_link") 2>conftest.er1
14619 ac_status=$?
14620 grep -v '^ *+' conftest.er1 >conftest.err
14621 rm -f conftest.er1
14622 cat conftest.err >&5
14623 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14624 (exit $ac_status); } && {
14625 test -z "$ac_c_werror_flag" ||
14626 test ! -s conftest.err
14627 } && test -s conftest$ac_exeext &&
14628 $as_test_x conftest$ac_exeext; then
14629 ac_cv_search_logout=$ac_res 9312 ac_cv_search_logout=$ac_res
14630else
14631 echo "$as_me: failed program was:" >&5
14632sed 's/^/| /' conftest.$ac_ext >&5
14633
14634
14635fi 9313fi
14636 9314rm -f core conftest.err conftest.$ac_objext \
14637rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9315 conftest$ac_exeext
14638 conftest$ac_exeext 9316 if ${ac_cv_search_logout+:} false; then :
14639 if test "${ac_cv_search_logout+set}" = set; then
14640 break 9317 break
14641fi 9318fi
14642done 9319done
14643if test "${ac_cv_search_logout+set}" = set; then 9320if ${ac_cv_search_logout+:} false; then :
14644 : 9321
14645else 9322else
14646 ac_cv_search_logout=no 9323 ac_cv_search_logout=no
14647fi 9324fi
14648rm conftest.$ac_ext 9325rm conftest.$ac_ext
14649LIBS=$ac_func_search_save_LIBS 9326LIBS=$ac_func_search_save_LIBS
14650fi 9327fi
14651{ echo "$as_me:$LINENO: result: $ac_cv_search_logout" >&5 9328{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logout" >&5
14652echo "${ECHO_T}$ac_cv_search_logout" >&6; } 9329$as_echo "$ac_cv_search_logout" >&6; }
14653ac_res=$ac_cv_search_logout 9330ac_res=$ac_cv_search_logout
14654if test "$ac_res" != no; then 9331if test "$ac_res" != no; then :
14655 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9332 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14656 9333
14657fi 9334fi
14658 9335
14659{ echo "$as_me:$LINENO: checking for library containing logwtmp" >&5 9336{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logwtmp" >&5
14660echo $ECHO_N "checking for library containing logwtmp... $ECHO_C" >&6; } 9337$as_echo_n "checking for library containing logwtmp... " >&6; }
14661if test "${ac_cv_search_logwtmp+set}" = set; then 9338if ${ac_cv_search_logwtmp+:} false; then :
14662 echo $ECHO_N "(cached) $ECHO_C" >&6 9339 $as_echo_n "(cached) " >&6
14663else 9340else
14664 ac_func_search_save_LIBS=$LIBS 9341 ac_func_search_save_LIBS=$LIBS
14665cat >conftest.$ac_ext <<_ACEOF 9342cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14666/* confdefs.h. */
14667_ACEOF
14668cat confdefs.h >>conftest.$ac_ext
14669cat >>conftest.$ac_ext <<_ACEOF
14670/* end confdefs.h. */ 9343/* end confdefs.h. */
14671 9344
14672/* Override any GCC internal prototype to avoid an error. 9345/* Override any GCC internal prototype to avoid an error.
@@ -14691,65 +9364,38 @@ for ac_lib in '' util bsd; do
14691 ac_res=-l$ac_lib 9364 ac_res=-l$ac_lib
14692 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9365 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14693 fi 9366 fi
14694 rm -f conftest.$ac_objext conftest$ac_exeext 9367 if ac_fn_c_try_link "$LINENO"; then :
14695if { (ac_try="$ac_link"
14696case "(($ac_try" in
14697 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14698 *) ac_try_echo=$ac_try;;
14699esac
14700eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14701 (eval "$ac_link") 2>conftest.er1
14702 ac_status=$?
14703 grep -v '^ *+' conftest.er1 >conftest.err
14704 rm -f conftest.er1
14705 cat conftest.err >&5
14706 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14707 (exit $ac_status); } && {
14708 test -z "$ac_c_werror_flag" ||
14709 test ! -s conftest.err
14710 } && test -s conftest$ac_exeext &&
14711 $as_test_x conftest$ac_exeext; then
14712 ac_cv_search_logwtmp=$ac_res 9368 ac_cv_search_logwtmp=$ac_res
14713else
14714 echo "$as_me: failed program was:" >&5
14715sed 's/^/| /' conftest.$ac_ext >&5
14716
14717
14718fi 9369fi
14719 9370rm -f core conftest.err conftest.$ac_objext \
14720rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9371 conftest$ac_exeext
14721 conftest$ac_exeext 9372 if ${ac_cv_search_logwtmp+:} false; then :
14722 if test "${ac_cv_search_logwtmp+set}" = set; then
14723 break 9373 break
14724fi 9374fi
14725done 9375done
14726if test "${ac_cv_search_logwtmp+set}" = set; then 9376if ${ac_cv_search_logwtmp+:} false; then :
14727 : 9377
14728else 9378else
14729 ac_cv_search_logwtmp=no 9379 ac_cv_search_logwtmp=no
14730fi 9380fi
14731rm conftest.$ac_ext 9381rm conftest.$ac_ext
14732LIBS=$ac_func_search_save_LIBS 9382LIBS=$ac_func_search_save_LIBS
14733fi 9383fi
14734{ echo "$as_me:$LINENO: result: $ac_cv_search_logwtmp" >&5 9384{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logwtmp" >&5
14735echo "${ECHO_T}$ac_cv_search_logwtmp" >&6; } 9385$as_echo "$ac_cv_search_logwtmp" >&6; }
14736ac_res=$ac_cv_search_logwtmp 9386ac_res=$ac_cv_search_logwtmp
14737if test "$ac_res" != no; then 9387if test "$ac_res" != no; then :
14738 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9388 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14739 9389
14740fi 9390fi
14741 9391
14742{ echo "$as_me:$LINENO: checking for library containing openpty" >&5 9392{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5
14743echo $ECHO_N "checking for library containing openpty... $ECHO_C" >&6; } 9393$as_echo_n "checking for library containing openpty... " >&6; }
14744if test "${ac_cv_search_openpty+set}" = set; then 9394if ${ac_cv_search_openpty+:} false; then :
14745 echo $ECHO_N "(cached) $ECHO_C" >&6 9395 $as_echo_n "(cached) " >&6
14746else 9396else
14747 ac_func_search_save_LIBS=$LIBS 9397 ac_func_search_save_LIBS=$LIBS
14748cat >conftest.$ac_ext <<_ACEOF 9398cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14749/* confdefs.h. */
14750_ACEOF
14751cat confdefs.h >>conftest.$ac_ext
14752cat >>conftest.$ac_ext <<_ACEOF
14753/* end confdefs.h. */ 9399/* end confdefs.h. */
14754 9400
14755/* Override any GCC internal prototype to avoid an error. 9401/* Override any GCC internal prototype to avoid an error.
@@ -14774,65 +9420,38 @@ for ac_lib in '' util bsd; do
14774 ac_res=-l$ac_lib 9420 ac_res=-l$ac_lib
14775 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9421 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14776 fi 9422 fi
14777 rm -f conftest.$ac_objext conftest$ac_exeext 9423 if ac_fn_c_try_link "$LINENO"; then :
14778if { (ac_try="$ac_link"
14779case "(($ac_try" in
14780 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14781 *) ac_try_echo=$ac_try;;
14782esac
14783eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14784 (eval "$ac_link") 2>conftest.er1
14785 ac_status=$?
14786 grep -v '^ *+' conftest.er1 >conftest.err
14787 rm -f conftest.er1
14788 cat conftest.err >&5
14789 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14790 (exit $ac_status); } && {
14791 test -z "$ac_c_werror_flag" ||
14792 test ! -s conftest.err
14793 } && test -s conftest$ac_exeext &&
14794 $as_test_x conftest$ac_exeext; then
14795 ac_cv_search_openpty=$ac_res 9424 ac_cv_search_openpty=$ac_res
14796else
14797 echo "$as_me: failed program was:" >&5
14798sed 's/^/| /' conftest.$ac_ext >&5
14799
14800
14801fi 9425fi
14802 9426rm -f core conftest.err conftest.$ac_objext \
14803rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9427 conftest$ac_exeext
14804 conftest$ac_exeext 9428 if ${ac_cv_search_openpty+:} false; then :
14805 if test "${ac_cv_search_openpty+set}" = set; then
14806 break 9429 break
14807fi 9430fi
14808done 9431done
14809if test "${ac_cv_search_openpty+set}" = set; then 9432if ${ac_cv_search_openpty+:} false; then :
14810 : 9433
14811else 9434else
14812 ac_cv_search_openpty=no 9435 ac_cv_search_openpty=no
14813fi 9436fi
14814rm conftest.$ac_ext 9437rm conftest.$ac_ext
14815LIBS=$ac_func_search_save_LIBS 9438LIBS=$ac_func_search_save_LIBS
14816fi 9439fi
14817{ echo "$as_me:$LINENO: result: $ac_cv_search_openpty" >&5 9440{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5
14818echo "${ECHO_T}$ac_cv_search_openpty" >&6; } 9441$as_echo "$ac_cv_search_openpty" >&6; }
14819ac_res=$ac_cv_search_openpty 9442ac_res=$ac_cv_search_openpty
14820if test "$ac_res" != no; then 9443if test "$ac_res" != no; then :
14821 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9444 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14822 9445
14823fi 9446fi
14824 9447
14825{ echo "$as_me:$LINENO: checking for library containing updwtmp" >&5 9448{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing updwtmp" >&5
14826echo $ECHO_N "checking for library containing updwtmp... $ECHO_C" >&6; } 9449$as_echo_n "checking for library containing updwtmp... " >&6; }
14827if test "${ac_cv_search_updwtmp+set}" = set; then 9450if ${ac_cv_search_updwtmp+:} false; then :
14828 echo $ECHO_N "(cached) $ECHO_C" >&6 9451 $as_echo_n "(cached) " >&6
14829else 9452else
14830 ac_func_search_save_LIBS=$LIBS 9453 ac_func_search_save_LIBS=$LIBS
14831cat >conftest.$ac_ext <<_ACEOF 9454cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14832/* confdefs.h. */
14833_ACEOF
14834cat confdefs.h >>conftest.$ac_ext
14835cat >>conftest.$ac_ext <<_ACEOF
14836/* end confdefs.h. */ 9455/* end confdefs.h. */
14837 9456
14838/* Override any GCC internal prototype to avoid an error. 9457/* Override any GCC internal prototype to avoid an error.
@@ -14857,149 +9476,38 @@ for ac_lib in '' util bsd; do
14857 ac_res=-l$ac_lib 9476 ac_res=-l$ac_lib
14858 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9477 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
14859 fi 9478 fi
14860 rm -f conftest.$ac_objext conftest$ac_exeext 9479 if ac_fn_c_try_link "$LINENO"; then :
14861if { (ac_try="$ac_link"
14862case "(($ac_try" in
14863 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14864 *) ac_try_echo=$ac_try;;
14865esac
14866eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14867 (eval "$ac_link") 2>conftest.er1
14868 ac_status=$?
14869 grep -v '^ *+' conftest.er1 >conftest.err
14870 rm -f conftest.er1
14871 cat conftest.err >&5
14872 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14873 (exit $ac_status); } && {
14874 test -z "$ac_c_werror_flag" ||
14875 test ! -s conftest.err
14876 } && test -s conftest$ac_exeext &&
14877 $as_test_x conftest$ac_exeext; then
14878 ac_cv_search_updwtmp=$ac_res 9480 ac_cv_search_updwtmp=$ac_res
14879else
14880 echo "$as_me: failed program was:" >&5
14881sed 's/^/| /' conftest.$ac_ext >&5
14882
14883
14884fi 9481fi
14885 9482rm -f core conftest.err conftest.$ac_objext \
14886rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9483 conftest$ac_exeext
14887 conftest$ac_exeext 9484 if ${ac_cv_search_updwtmp+:} false; then :
14888 if test "${ac_cv_search_updwtmp+set}" = set; then
14889 break 9485 break
14890fi 9486fi
14891done 9487done
14892if test "${ac_cv_search_updwtmp+set}" = set; then 9488if ${ac_cv_search_updwtmp+:} false; then :
14893 : 9489
14894else 9490else
14895 ac_cv_search_updwtmp=no 9491 ac_cv_search_updwtmp=no
14896fi 9492fi
14897rm conftest.$ac_ext 9493rm conftest.$ac_ext
14898LIBS=$ac_func_search_save_LIBS 9494LIBS=$ac_func_search_save_LIBS
14899fi 9495fi
14900{ echo "$as_me:$LINENO: result: $ac_cv_search_updwtmp" >&5 9496{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_updwtmp" >&5
14901echo "${ECHO_T}$ac_cv_search_updwtmp" >&6; } 9497$as_echo "$ac_cv_search_updwtmp" >&6; }
14902ac_res=$ac_cv_search_updwtmp 9498ac_res=$ac_cv_search_updwtmp
14903if test "$ac_res" != no; then 9499if test "$ac_res" != no; then :
14904 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9500 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
14905 9501
14906fi 9502fi
14907 9503
14908
14909
14910
14911
14912
14913
14914
14915for ac_func in fmt_scaled scan_scaled login logout openpty updwtmp logwtmp 9504for ac_func in fmt_scaled scan_scaled login logout openpty updwtmp logwtmp
14916do 9505do :
14917as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 9506 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
14918{ echo "$as_me:$LINENO: checking for $ac_func" >&5 9507ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
14919echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 9508if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
14920if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
14921 echo $ECHO_N "(cached) $ECHO_C" >&6
14922else
14923 cat >conftest.$ac_ext <<_ACEOF
14924/* confdefs.h. */
14925_ACEOF
14926cat confdefs.h >>conftest.$ac_ext
14927cat >>conftest.$ac_ext <<_ACEOF
14928/* end confdefs.h. */
14929/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
14930 For example, HP-UX 11i <limits.h> declares gettimeofday. */
14931#define $ac_func innocuous_$ac_func
14932
14933/* System header to define __stub macros and hopefully few prototypes,
14934 which can conflict with char $ac_func (); below.
14935 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
14936 <limits.h> exists even on freestanding compilers. */
14937
14938#ifdef __STDC__
14939# include <limits.h>
14940#else
14941# include <assert.h>
14942#endif
14943
14944#undef $ac_func
14945
14946/* Override any GCC internal prototype to avoid an error.
14947 Use char because int might match the return type of a GCC
14948 builtin and then its argument prototype would still apply. */
14949#ifdef __cplusplus
14950extern "C"
14951#endif
14952char $ac_func ();
14953/* The GNU C library defines this for functions which it implements
14954 to always fail with ENOSYS. Some functions are actually named
14955 something starting with __ and the normal name is an alias. */
14956#if defined __stub_$ac_func || defined __stub___$ac_func
14957choke me
14958#endif
14959
14960int
14961main ()
14962{
14963return $ac_func ();
14964 ;
14965 return 0;
14966}
14967_ACEOF
14968rm -f conftest.$ac_objext conftest$ac_exeext
14969if { (ac_try="$ac_link"
14970case "(($ac_try" in
14971 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14972 *) ac_try_echo=$ac_try;;
14973esac
14974eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14975 (eval "$ac_link") 2>conftest.er1
14976 ac_status=$?
14977 grep -v '^ *+' conftest.er1 >conftest.err
14978 rm -f conftest.er1
14979 cat conftest.err >&5
14980 echo "$as_me:$LINENO: \$? = $ac_status" >&5
14981 (exit $ac_status); } && {
14982 test -z "$ac_c_werror_flag" ||
14983 test ! -s conftest.err
14984 } && test -s conftest$ac_exeext &&
14985 $as_test_x conftest$ac_exeext; then
14986 eval "$as_ac_var=yes"
14987else
14988 echo "$as_me: failed program was:" >&5
14989sed 's/^/| /' conftest.$ac_ext >&5
14990
14991 eval "$as_ac_var=no"
14992fi
14993
14994rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14995 conftest$ac_exeext conftest.$ac_ext
14996fi
14997ac_res=`eval echo '${'$as_ac_var'}'`
14998 { echo "$as_me:$LINENO: result: $ac_res" >&5
14999echo "${ECHO_T}$ac_res" >&6; }
15000if test `eval echo '${'$as_ac_var'}'` = yes; then
15001 cat >>confdefs.h <<_ACEOF 9509 cat >>confdefs.h <<_ACEOF
15002#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 9510#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
15003_ACEOF 9511_ACEOF
15004 9512
15005fi 9513fi
@@ -15008,17 +9516,13 @@ done
15008 9516
15009# On some platforms, inet_ntop and gethostbyname may be found in libresolv 9517# On some platforms, inet_ntop and gethostbyname may be found in libresolv
15010# or libnsl. 9518# or libnsl.
15011{ echo "$as_me:$LINENO: checking for library containing inet_ntop" >&5 9519{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing inet_ntop" >&5
15012echo $ECHO_N "checking for library containing inet_ntop... $ECHO_C" >&6; } 9520$as_echo_n "checking for library containing inet_ntop... " >&6; }
15013if test "${ac_cv_search_inet_ntop+set}" = set; then 9521if ${ac_cv_search_inet_ntop+:} false; then :
15014 echo $ECHO_N "(cached) $ECHO_C" >&6 9522 $as_echo_n "(cached) " >&6
15015else 9523else
15016 ac_func_search_save_LIBS=$LIBS 9524 ac_func_search_save_LIBS=$LIBS
15017cat >conftest.$ac_ext <<_ACEOF 9525cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15018/* confdefs.h. */
15019_ACEOF
15020cat confdefs.h >>conftest.$ac_ext
15021cat >>conftest.$ac_ext <<_ACEOF
15022/* end confdefs.h. */ 9526/* end confdefs.h. */
15023 9527
15024/* Override any GCC internal prototype to avoid an error. 9528/* Override any GCC internal prototype to avoid an error.
@@ -15043,65 +9547,38 @@ for ac_lib in '' resolv nsl; do
15043 ac_res=-l$ac_lib 9547 ac_res=-l$ac_lib
15044 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9548 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
15045 fi 9549 fi
15046 rm -f conftest.$ac_objext conftest$ac_exeext 9550 if ac_fn_c_try_link "$LINENO"; then :
15047if { (ac_try="$ac_link"
15048case "(($ac_try" in
15049 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15050 *) ac_try_echo=$ac_try;;
15051esac
15052eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15053 (eval "$ac_link") 2>conftest.er1
15054 ac_status=$?
15055 grep -v '^ *+' conftest.er1 >conftest.err
15056 rm -f conftest.er1
15057 cat conftest.err >&5
15058 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15059 (exit $ac_status); } && {
15060 test -z "$ac_c_werror_flag" ||
15061 test ! -s conftest.err
15062 } && test -s conftest$ac_exeext &&
15063 $as_test_x conftest$ac_exeext; then
15064 ac_cv_search_inet_ntop=$ac_res 9551 ac_cv_search_inet_ntop=$ac_res
15065else
15066 echo "$as_me: failed program was:" >&5
15067sed 's/^/| /' conftest.$ac_ext >&5
15068
15069
15070fi 9552fi
15071 9553rm -f core conftest.err conftest.$ac_objext \
15072rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9554 conftest$ac_exeext
15073 conftest$ac_exeext 9555 if ${ac_cv_search_inet_ntop+:} false; then :
15074 if test "${ac_cv_search_inet_ntop+set}" = set; then
15075 break 9556 break
15076fi 9557fi
15077done 9558done
15078if test "${ac_cv_search_inet_ntop+set}" = set; then 9559if ${ac_cv_search_inet_ntop+:} false; then :
15079 : 9560
15080else 9561else
15081 ac_cv_search_inet_ntop=no 9562 ac_cv_search_inet_ntop=no
15082fi 9563fi
15083rm conftest.$ac_ext 9564rm conftest.$ac_ext
15084LIBS=$ac_func_search_save_LIBS 9565LIBS=$ac_func_search_save_LIBS
15085fi 9566fi
15086{ echo "$as_me:$LINENO: result: $ac_cv_search_inet_ntop" >&5 9567{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_ntop" >&5
15087echo "${ECHO_T}$ac_cv_search_inet_ntop" >&6; } 9568$as_echo "$ac_cv_search_inet_ntop" >&6; }
15088ac_res=$ac_cv_search_inet_ntop 9569ac_res=$ac_cv_search_inet_ntop
15089if test "$ac_res" != no; then 9570if test "$ac_res" != no; then :
15090 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9571 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
15091 9572
15092fi 9573fi
15093 9574
15094{ echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5 9575{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
15095echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6; } 9576$as_echo_n "checking for library containing gethostbyname... " >&6; }
15096if test "${ac_cv_search_gethostbyname+set}" = set; then 9577if ${ac_cv_search_gethostbyname+:} false; then :
15097 echo $ECHO_N "(cached) $ECHO_C" >&6 9578 $as_echo_n "(cached) " >&6
15098else 9579else
15099 ac_func_search_save_LIBS=$LIBS 9580 ac_func_search_save_LIBS=$LIBS
15100cat >conftest.$ac_ext <<_ACEOF 9581cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15101/* confdefs.h. */
15102_ACEOF
15103cat confdefs.h >>conftest.$ac_ext
15104cat >>conftest.$ac_ext <<_ACEOF
15105/* end confdefs.h. */ 9582/* end confdefs.h. */
15106 9583
15107/* Override any GCC internal prototype to avoid an error. 9584/* Override any GCC internal prototype to avoid an error.
@@ -15126,160 +9603,50 @@ for ac_lib in '' resolv nsl; do
15126 ac_res=-l$ac_lib 9603 ac_res=-l$ac_lib
15127 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 9604 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
15128 fi 9605 fi
15129 rm -f conftest.$ac_objext conftest$ac_exeext 9606 if ac_fn_c_try_link "$LINENO"; then :
15130if { (ac_try="$ac_link"
15131case "(($ac_try" in
15132 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15133 *) ac_try_echo=$ac_try;;
15134esac
15135eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15136 (eval "$ac_link") 2>conftest.er1
15137 ac_status=$?
15138 grep -v '^ *+' conftest.er1 >conftest.err
15139 rm -f conftest.er1
15140 cat conftest.err >&5
15141 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15142 (exit $ac_status); } && {
15143 test -z "$ac_c_werror_flag" ||
15144 test ! -s conftest.err
15145 } && test -s conftest$ac_exeext &&
15146 $as_test_x conftest$ac_exeext; then
15147 ac_cv_search_gethostbyname=$ac_res 9607 ac_cv_search_gethostbyname=$ac_res
15148else
15149 echo "$as_me: failed program was:" >&5
15150sed 's/^/| /' conftest.$ac_ext >&5
15151
15152
15153fi 9608fi
15154 9609rm -f core conftest.err conftest.$ac_objext \
15155rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9610 conftest$ac_exeext
15156 conftest$ac_exeext 9611 if ${ac_cv_search_gethostbyname+:} false; then :
15157 if test "${ac_cv_search_gethostbyname+set}" = set; then
15158 break 9612 break
15159fi 9613fi
15160done 9614done
15161if test "${ac_cv_search_gethostbyname+set}" = set; then 9615if ${ac_cv_search_gethostbyname+:} false; then :
15162 : 9616
15163else 9617else
15164 ac_cv_search_gethostbyname=no 9618 ac_cv_search_gethostbyname=no
15165fi 9619fi
15166rm conftest.$ac_ext 9620rm conftest.$ac_ext
15167LIBS=$ac_func_search_save_LIBS 9621LIBS=$ac_func_search_save_LIBS
15168fi 9622fi
15169{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5 9623{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
15170echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; } 9624$as_echo "$ac_cv_search_gethostbyname" >&6; }
15171ac_res=$ac_cv_search_gethostbyname 9625ac_res=$ac_cv_search_gethostbyname
15172if test "$ac_res" != no; then 9626if test "$ac_res" != no; then :
15173 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 9627 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
15174 9628
15175fi 9629fi
15176 9630
15177 9631
15178
15179for ac_func in strftime 9632for ac_func in strftime
15180do 9633do :
15181as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 9634 ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
15182{ echo "$as_me:$LINENO: checking for $ac_func" >&5 9635if test "x$ac_cv_func_strftime" = xyes; then :
15183echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
15184if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
15185 echo $ECHO_N "(cached) $ECHO_C" >&6
15186else
15187 cat >conftest.$ac_ext <<_ACEOF
15188/* confdefs.h. */
15189_ACEOF
15190cat confdefs.h >>conftest.$ac_ext
15191cat >>conftest.$ac_ext <<_ACEOF
15192/* end confdefs.h. */
15193/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
15194 For example, HP-UX 11i <limits.h> declares gettimeofday. */
15195#define $ac_func innocuous_$ac_func
15196
15197/* System header to define __stub macros and hopefully few prototypes,
15198 which can conflict with char $ac_func (); below.
15199 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
15200 <limits.h> exists even on freestanding compilers. */
15201
15202#ifdef __STDC__
15203# include <limits.h>
15204#else
15205# include <assert.h>
15206#endif
15207
15208#undef $ac_func
15209
15210/* Override any GCC internal prototype to avoid an error.
15211 Use char because int might match the return type of a GCC
15212 builtin and then its argument prototype would still apply. */
15213#ifdef __cplusplus
15214extern "C"
15215#endif
15216char $ac_func ();
15217/* The GNU C library defines this for functions which it implements
15218 to always fail with ENOSYS. Some functions are actually named
15219 something starting with __ and the normal name is an alias. */
15220#if defined __stub_$ac_func || defined __stub___$ac_func
15221choke me
15222#endif
15223
15224int
15225main ()
15226{
15227return $ac_func ();
15228 ;
15229 return 0;
15230}
15231_ACEOF
15232rm -f conftest.$ac_objext conftest$ac_exeext
15233if { (ac_try="$ac_link"
15234case "(($ac_try" in
15235 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15236 *) ac_try_echo=$ac_try;;
15237esac
15238eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15239 (eval "$ac_link") 2>conftest.er1
15240 ac_status=$?
15241 grep -v '^ *+' conftest.er1 >conftest.err
15242 rm -f conftest.er1
15243 cat conftest.err >&5
15244 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15245 (exit $ac_status); } && {
15246 test -z "$ac_c_werror_flag" ||
15247 test ! -s conftest.err
15248 } && test -s conftest$ac_exeext &&
15249 $as_test_x conftest$ac_exeext; then
15250 eval "$as_ac_var=yes"
15251else
15252 echo "$as_me: failed program was:" >&5
15253sed 's/^/| /' conftest.$ac_ext >&5
15254
15255 eval "$as_ac_var=no"
15256fi
15257
15258rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
15259 conftest$ac_exeext conftest.$ac_ext
15260fi
15261ac_res=`eval echo '${'$as_ac_var'}'`
15262 { echo "$as_me:$LINENO: result: $ac_res" >&5
15263echo "${ECHO_T}$ac_res" >&6; }
15264if test `eval echo '${'$as_ac_var'}'` = yes; then
15265 cat >>confdefs.h <<_ACEOF 9636 cat >>confdefs.h <<_ACEOF
15266#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 9637#define HAVE_STRFTIME 1
15267_ACEOF 9638_ACEOF
15268 9639
15269else 9640else
15270 # strftime is in -lintl on SCO UNIX. 9641 # strftime is in -lintl on SCO UNIX.
15271{ echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 9642{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
15272echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6; } 9643$as_echo_n "checking for strftime in -lintl... " >&6; }
15273if test "${ac_cv_lib_intl_strftime+set}" = set; then 9644if ${ac_cv_lib_intl_strftime+:} false; then :
15274 echo $ECHO_N "(cached) $ECHO_C" >&6 9645 $as_echo_n "(cached) " >&6
15275else 9646else
15276 ac_check_lib_save_LIBS=$LIBS 9647 ac_check_lib_save_LIBS=$LIBS
15277LIBS="-lintl $LIBS" 9648LIBS="-lintl $LIBS"
15278cat >conftest.$ac_ext <<_ACEOF 9649cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15279/* confdefs.h. */
15280_ACEOF
15281cat confdefs.h >>conftest.$ac_ext
15282cat >>conftest.$ac_ext <<_ACEOF
15283/* end confdefs.h. */ 9650/* end confdefs.h. */
15284 9651
15285/* Override any GCC internal prototype to avoid an error. 9652/* Override any GCC internal prototype to avoid an error.
@@ -15297,42 +9664,19 @@ return strftime ();
15297 return 0; 9664 return 0;
15298} 9665}
15299_ACEOF 9666_ACEOF
15300rm -f conftest.$ac_objext conftest$ac_exeext 9667if ac_fn_c_try_link "$LINENO"; then :
15301if { (ac_try="$ac_link"
15302case "(($ac_try" in
15303 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15304 *) ac_try_echo=$ac_try;;
15305esac
15306eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15307 (eval "$ac_link") 2>conftest.er1
15308 ac_status=$?
15309 grep -v '^ *+' conftest.er1 >conftest.err
15310 rm -f conftest.er1
15311 cat conftest.err >&5
15312 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15313 (exit $ac_status); } && {
15314 test -z "$ac_c_werror_flag" ||
15315 test ! -s conftest.err
15316 } && test -s conftest$ac_exeext &&
15317 $as_test_x conftest$ac_exeext; then
15318 ac_cv_lib_intl_strftime=yes 9668 ac_cv_lib_intl_strftime=yes
15319else 9669else
15320 echo "$as_me: failed program was:" >&5 9670 ac_cv_lib_intl_strftime=no
15321sed 's/^/| /' conftest.$ac_ext >&5
15322
15323 ac_cv_lib_intl_strftime=no
15324fi 9671fi
15325 9672rm -f core conftest.err conftest.$ac_objext \
15326rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9673 conftest$ac_exeext conftest.$ac_ext
15327 conftest$ac_exeext conftest.$ac_ext
15328LIBS=$ac_check_lib_save_LIBS 9674LIBS=$ac_check_lib_save_LIBS
15329fi 9675fi
15330{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 9676{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
15331echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6; } 9677$as_echo "$ac_cv_lib_intl_strftime" >&6; }
15332if test $ac_cv_lib_intl_strftime = yes; then 9678if test "x$ac_cv_lib_intl_strftime" = xyes; then :
15333 cat >>confdefs.h <<\_ACEOF 9679 $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
15334#define HAVE_STRFTIME 1
15335_ACEOF
15336 9680
15337LIBS="-lintl $LIBS" 9681LIBS="-lintl $LIBS"
15338fi 9682fi
@@ -15342,13 +9686,9 @@ done
15342 9686
15343 9687
15344# Check for ALTDIRFUNC glob() extension 9688# Check for ALTDIRFUNC glob() extension
15345{ echo "$as_me:$LINENO: checking for GLOB_ALTDIRFUNC support" >&5 9689{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_ALTDIRFUNC support" >&5
15346echo $ECHO_N "checking for GLOB_ALTDIRFUNC support... $ECHO_C" >&6; } 9690$as_echo_n "checking for GLOB_ALTDIRFUNC support... " >&6; }
15347cat >conftest.$ac_ext <<_ACEOF 9691cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15348/* confdefs.h. */
15349_ACEOF
15350cat confdefs.h >>conftest.$ac_ext
15351cat >>conftest.$ac_ext <<_ACEOF
15352/* end confdefs.h. */ 9692/* end confdefs.h. */
15353 9693
15354 #include <glob.h> 9694 #include <glob.h>
@@ -15358,20 +9698,18 @@ cat >>conftest.$ac_ext <<_ACEOF
15358 9698
15359_ACEOF 9699_ACEOF
15360if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 9700if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
15361 $EGREP "FOUNDIT" >/dev/null 2>&1; then 9701 $EGREP "FOUNDIT" >/dev/null 2>&1; then :
15362 9702
15363 9703
15364cat >>confdefs.h <<\_ACEOF 9704$as_echo "#define GLOB_HAS_ALTDIRFUNC 1" >>confdefs.h
15365#define GLOB_HAS_ALTDIRFUNC 1
15366_ACEOF
15367 9705
15368 { echo "$as_me:$LINENO: result: yes" >&5 9706 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15369echo "${ECHO_T}yes" >&6; } 9707$as_echo "yes" >&6; }
15370 9708
15371else 9709else
15372 9710
15373 { echo "$as_me:$LINENO: result: no" >&5 9711 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15374echo "${ECHO_T}no" >&6; } 9712$as_echo "no" >&6; }
15375 9713
15376 9714
15377fi 9715fi
@@ -15379,13 +9717,9 @@ rm -f conftest*
15379 9717
15380 9718
15381# Check for g.gl_matchc glob() extension 9719# Check for g.gl_matchc glob() extension
15382{ echo "$as_me:$LINENO: checking for gl_matchc field in glob_t" >&5 9720{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gl_matchc field in glob_t" >&5
15383echo $ECHO_N "checking for gl_matchc field in glob_t... $ECHO_C" >&6; } 9721$as_echo_n "checking for gl_matchc field in glob_t... " >&6; }
15384cat >conftest.$ac_ext <<_ACEOF 9722cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15385/* confdefs.h. */
15386_ACEOF
15387cat confdefs.h >>conftest.$ac_ext
15388cat >>conftest.$ac_ext <<_ACEOF
15389/* end confdefs.h. */ 9723/* end confdefs.h. */
15390 #include <glob.h> 9724 #include <glob.h>
15391int 9725int
@@ -15396,52 +9730,26 @@ main ()
15396 return 0; 9730 return 0;
15397} 9731}
15398_ACEOF 9732_ACEOF
15399rm -f conftest.$ac_objext 9733if ac_fn_c_try_compile "$LINENO"; then :
15400if { (ac_try="$ac_compile"
15401case "(($ac_try" in
15402 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15403 *) ac_try_echo=$ac_try;;
15404esac
15405eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15406 (eval "$ac_compile") 2>conftest.er1
15407 ac_status=$?
15408 grep -v '^ *+' conftest.er1 >conftest.err
15409 rm -f conftest.er1
15410 cat conftest.err >&5
15411 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15412 (exit $ac_status); } && {
15413 test -z "$ac_c_werror_flag" ||
15414 test ! -s conftest.err
15415 } && test -s conftest.$ac_objext; then
15416 9734
15417 9735
15418cat >>confdefs.h <<\_ACEOF 9736$as_echo "#define GLOB_HAS_GL_MATCHC 1" >>confdefs.h
15419#define GLOB_HAS_GL_MATCHC 1
15420_ACEOF
15421 9737
15422 { echo "$as_me:$LINENO: result: yes" >&5 9738 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15423echo "${ECHO_T}yes" >&6; } 9739$as_echo "yes" >&6; }
15424 9740
15425else 9741else
15426 echo "$as_me: failed program was:" >&5
15427sed 's/^/| /' conftest.$ac_ext >&5
15428 9742
15429 9743 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15430 { echo "$as_me:$LINENO: result: no" >&5 9744$as_echo "no" >&6; }
15431echo "${ECHO_T}no" >&6; }
15432 9745
15433fi 9746fi
15434
15435rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 9747rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15436 9748
15437# Check for g.gl_statv glob() extension 9749# Check for g.gl_statv glob() extension
15438{ echo "$as_me:$LINENO: checking for gl_statv and GLOB_KEEPSTAT extensions for glob" >&5 9750{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gl_statv and GLOB_KEEPSTAT extensions for glob" >&5
15439echo $ECHO_N "checking for gl_statv and GLOB_KEEPSTAT extensions for glob... $ECHO_C" >&6; } 9751$as_echo_n "checking for gl_statv and GLOB_KEEPSTAT extensions for glob... " >&6; }
15440cat >conftest.$ac_ext <<_ACEOF 9752cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15441/* confdefs.h. */
15442_ACEOF
15443cat confdefs.h >>conftest.$ac_ext
15444cat >>conftest.$ac_ext <<_ACEOF
15445/* end confdefs.h. */ 9753/* end confdefs.h. */
15446 #include <glob.h> 9754 #include <glob.h>
15447int 9755int
@@ -15458,197 +9766,59 @@ g.gl_statv = NULL;
15458 return 0; 9766 return 0;
15459} 9767}
15460_ACEOF 9768_ACEOF
15461rm -f conftest.$ac_objext 9769if ac_fn_c_try_compile "$LINENO"; then :
15462if { (ac_try="$ac_compile"
15463case "(($ac_try" in
15464 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15465 *) ac_try_echo=$ac_try;;
15466esac
15467eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15468 (eval "$ac_compile") 2>conftest.er1
15469 ac_status=$?
15470 grep -v '^ *+' conftest.er1 >conftest.err
15471 rm -f conftest.er1
15472 cat conftest.err >&5
15473 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15474 (exit $ac_status); } && {
15475 test -z "$ac_c_werror_flag" ||
15476 test ! -s conftest.err
15477 } && test -s conftest.$ac_objext; then
15478 9770
15479 9771
15480cat >>confdefs.h <<\_ACEOF 9772$as_echo "#define GLOB_HAS_GL_STATV 1" >>confdefs.h
15481#define GLOB_HAS_GL_STATV 1
15482_ACEOF
15483 9773
15484 { echo "$as_me:$LINENO: result: yes" >&5 9774 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15485echo "${ECHO_T}yes" >&6; } 9775$as_echo "yes" >&6; }
15486 9776
15487else 9777else
15488 echo "$as_me: failed program was:" >&5
15489sed 's/^/| /' conftest.$ac_ext >&5
15490
15491 9778
15492 { echo "$as_me:$LINENO: result: no" >&5 9779 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15493echo "${ECHO_T}no" >&6; } 9780$as_echo "no" >&6; }
15494 9781
15495 9782
15496fi 9783fi
15497
15498rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 9784rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15499 9785
15500{ echo "$as_me:$LINENO: checking whether GLOB_NOMATCH is declared" >&5 9786ac_fn_c_check_decl "$LINENO" "GLOB_NOMATCH" "ac_cv_have_decl_GLOB_NOMATCH" "#include <glob.h>
15501echo $ECHO_N "checking whether GLOB_NOMATCH is declared... $ECHO_C" >&6; } 9787"
15502if test "${ac_cv_have_decl_GLOB_NOMATCH+set}" = set; then 9788if test "x$ac_cv_have_decl_GLOB_NOMATCH" = xyes; then :
15503 echo $ECHO_N "(cached) $ECHO_C" >&6 9789 ac_have_decl=1
15504else
15505 cat >conftest.$ac_ext <<_ACEOF
15506/* confdefs.h. */
15507_ACEOF
15508cat confdefs.h >>conftest.$ac_ext
15509cat >>conftest.$ac_ext <<_ACEOF
15510/* end confdefs.h. */
15511#include <glob.h>
15512
15513int
15514main ()
15515{
15516#ifndef GLOB_NOMATCH
15517 (void) GLOB_NOMATCH;
15518#endif
15519
15520 ;
15521 return 0;
15522}
15523_ACEOF
15524rm -f conftest.$ac_objext
15525if { (ac_try="$ac_compile"
15526case "(($ac_try" in
15527 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15528 *) ac_try_echo=$ac_try;;
15529esac
15530eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15531 (eval "$ac_compile") 2>conftest.er1
15532 ac_status=$?
15533 grep -v '^ *+' conftest.er1 >conftest.err
15534 rm -f conftest.er1
15535 cat conftest.err >&5
15536 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15537 (exit $ac_status); } && {
15538 test -z "$ac_c_werror_flag" ||
15539 test ! -s conftest.err
15540 } && test -s conftest.$ac_objext; then
15541 ac_cv_have_decl_GLOB_NOMATCH=yes
15542else 9790else
15543 echo "$as_me: failed program was:" >&5 9791 ac_have_decl=0
15544sed 's/^/| /' conftest.$ac_ext >&5
15545
15546 ac_cv_have_decl_GLOB_NOMATCH=no
15547fi
15548
15549rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15550fi 9792fi
15551{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_GLOB_NOMATCH" >&5
15552echo "${ECHO_T}$ac_cv_have_decl_GLOB_NOMATCH" >&6; }
15553if test $ac_cv_have_decl_GLOB_NOMATCH = yes; then
15554 9793
15555cat >>confdefs.h <<_ACEOF 9794cat >>confdefs.h <<_ACEOF
15556#define HAVE_DECL_GLOB_NOMATCH 1 9795#define HAVE_DECL_GLOB_NOMATCH $ac_have_decl
15557_ACEOF 9796_ACEOF
15558 9797
15559 9798
15560else 9799ac_fn_c_check_decl "$LINENO" "VIS_ALL" "ac_cv_have_decl_VIS_ALL" "#include <vis.h>
15561 cat >>confdefs.h <<_ACEOF 9800"
15562#define HAVE_DECL_GLOB_NOMATCH 0 9801if test "x$ac_cv_have_decl_VIS_ALL" = xyes; then :
15563_ACEOF
15564
15565
15566fi
15567
15568
15569
15570{ echo "$as_me:$LINENO: checking whether VIS_ALL is declared" >&5
15571echo $ECHO_N "checking whether VIS_ALL is declared... $ECHO_C" >&6; }
15572if test "${ac_cv_have_decl_VIS_ALL+set}" = set; then
15573 echo $ECHO_N "(cached) $ECHO_C" >&6
15574else
15575 cat >conftest.$ac_ext <<_ACEOF
15576/* confdefs.h. */
15577_ACEOF
15578cat confdefs.h >>conftest.$ac_ext
15579cat >>conftest.$ac_ext <<_ACEOF
15580/* end confdefs.h. */
15581#include <vis.h>
15582
15583int
15584main ()
15585{
15586#ifndef VIS_ALL
15587 (void) VIS_ALL;
15588#endif
15589
15590 ;
15591 return 0;
15592}
15593_ACEOF
15594rm -f conftest.$ac_objext
15595if { (ac_try="$ac_compile"
15596case "(($ac_try" in
15597 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15598 *) ac_try_echo=$ac_try;;
15599esac
15600eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15601 (eval "$ac_compile") 2>conftest.er1
15602 ac_status=$?
15603 grep -v '^ *+' conftest.er1 >conftest.err
15604 rm -f conftest.er1
15605 cat conftest.err >&5
15606 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15607 (exit $ac_status); } && {
15608 test -z "$ac_c_werror_flag" ||
15609 test ! -s conftest.err
15610 } && test -s conftest.$ac_objext; then
15611 ac_cv_have_decl_VIS_ALL=yes
15612else
15613 echo "$as_me: failed program was:" >&5
15614sed 's/^/| /' conftest.$ac_ext >&5
15615
15616 ac_cv_have_decl_VIS_ALL=no
15617fi
15618 9802
15619rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15620fi
15621{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_VIS_ALL" >&5
15622echo "${ECHO_T}$ac_cv_have_decl_VIS_ALL" >&6; }
15623if test $ac_cv_have_decl_VIS_ALL = yes; then
15624 :
15625else 9803else
15626 9804
15627cat >>confdefs.h <<\_ACEOF 9805$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
15628#define BROKEN_STRNVIS 1
15629_ACEOF
15630 9806
15631fi 9807fi
15632 9808
15633 9809
15634{ echo "$as_me:$LINENO: checking whether struct dirent allocates space for d_name" >&5 9810{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct dirent allocates space for d_name" >&5
15635echo $ECHO_N "checking whether struct dirent allocates space for d_name... $ECHO_C" >&6; } 9811$as_echo_n "checking whether struct dirent allocates space for d_name... " >&6; }
15636if test "$cross_compiling" = yes; then 9812if test "$cross_compiling" = yes; then :
15637 9813
15638 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&5 9814 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&5
15639echo "$as_me: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&2;} 9815$as_echo "$as_me: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&2;}
15640 cat >>confdefs.h <<\_ACEOF 9816 $as_echo "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
15641#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1
15642_ACEOF
15643 9817
15644 9818
15645 9819
15646else 9820else
15647 cat >conftest.$ac_ext <<_ACEOF 9821 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15648/* confdefs.h. */
15649_ACEOF
15650cat confdefs.h >>conftest.$ac_ext
15651cat >>conftest.$ac_ext <<_ACEOF
15652/* end confdefs.h. */ 9822/* end confdefs.h. */
15653 9823
15654#include <sys/types.h> 9824#include <sys/types.h>
@@ -15664,69 +9834,41 @@ main ()
15664 return 0; 9834 return 0;
15665} 9835}
15666_ACEOF 9836_ACEOF
15667rm -f conftest$ac_exeext 9837if ac_fn_c_try_run "$LINENO"; then :
15668if { (ac_try="$ac_link" 9838 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15669case "(($ac_try" in 9839$as_echo "yes" >&6; }
15670 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15671 *) ac_try_echo=$ac_try;;
15672esac
15673eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15674 (eval "$ac_link") 2>&5
15675 ac_status=$?
15676 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15677 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
15678 { (case "(($ac_try" in
15679 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15680 *) ac_try_echo=$ac_try;;
15681esac
15682eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15683 (eval "$ac_try") 2>&5
15684 ac_status=$?
15685 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15686 (exit $ac_status); }; }; then
15687 { echo "$as_me:$LINENO: result: yes" >&5
15688echo "${ECHO_T}yes" >&6; }
15689else 9840else
15690 echo "$as_me: program exited with status $ac_status" >&5
15691echo "$as_me: failed program was:" >&5
15692sed 's/^/| /' conftest.$ac_ext >&5
15693
15694( exit $ac_status )
15695 9841
15696 { echo "$as_me:$LINENO: result: no" >&5 9842 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15697echo "${ECHO_T}no" >&6; } 9843$as_echo "no" >&6; }
15698 9844
15699cat >>confdefs.h <<\_ACEOF 9845$as_echo "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
15700#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1
15701_ACEOF
15702 9846
15703 9847
15704fi 9848fi
15705rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 9849rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
9850 conftest.$ac_objext conftest.beam conftest.$ac_ext
15706fi 9851fi
15707 9852
15708 9853
15709 9854{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/pid/fd directory" >&5
15710{ echo "$as_me:$LINENO: checking for /proc/pid/fd directory" >&5 9855$as_echo_n "checking for /proc/pid/fd directory... " >&6; }
15711echo $ECHO_N "checking for /proc/pid/fd directory... $ECHO_C" >&6; }
15712if test -d "/proc/$$/fd" ; then 9856if test -d "/proc/$$/fd" ; then
15713 9857
15714cat >>confdefs.h <<\_ACEOF 9858$as_echo "#define HAVE_PROC_PID 1" >>confdefs.h
15715#define HAVE_PROC_PID 1
15716_ACEOF
15717 9859
15718 { echo "$as_me:$LINENO: result: yes" >&5 9860 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15719echo "${ECHO_T}yes" >&6; } 9861$as_echo "yes" >&6; }
15720else 9862else
15721 { echo "$as_me:$LINENO: result: no" >&5 9863 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15722echo "${ECHO_T}no" >&6; } 9864$as_echo "no" >&6; }
15723fi 9865fi
15724 9866
15725# Check whether user wants S/Key support 9867# Check whether user wants S/Key support
15726SKEY_MSG="no" 9868SKEY_MSG="no"
15727 9869
15728# Check whether --with-skey was given. 9870# Check whether --with-skey was given.
15729if test "${with_skey+set}" = set; then 9871if test "${with_skey+set}" = set; then :
15730 withval=$with_skey; 9872 withval=$with_skey;
15731 if test "x$withval" != "xno" ; then 9873 if test "x$withval" != "xno" ; then
15732 9874
@@ -15736,20 +9878,14 @@ if test "${with_skey+set}" = set; then
15736 fi 9878 fi
15737 9879
15738 9880
15739cat >>confdefs.h <<\_ACEOF 9881$as_echo "#define SKEY 1" >>confdefs.h
15740#define SKEY 1
15741_ACEOF
15742 9882
15743 LIBS="-lskey $LIBS" 9883 LIBS="-lskey $LIBS"
15744 SKEY_MSG="yes" 9884 SKEY_MSG="yes"
15745 9885
15746 { echo "$as_me:$LINENO: checking for s/key support" >&5 9886 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for s/key support" >&5
15747echo $ECHO_N "checking for s/key support... $ECHO_C" >&6; } 9887$as_echo_n "checking for s/key support... " >&6; }
15748 cat >conftest.$ac_ext <<_ACEOF 9888 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15749/* confdefs.h. */
15750_ACEOF
15751cat confdefs.h >>conftest.$ac_ext
15752cat >>conftest.$ac_ext <<_ACEOF
15753/* end confdefs.h. */ 9889/* end confdefs.h. */
15754 9890
15755#include <stdio.h> 9891#include <stdio.h>
@@ -15766,48 +9902,21 @@ main ()
15766 return 0; 9902 return 0;
15767} 9903}
15768_ACEOF 9904_ACEOF
15769rm -f conftest.$ac_objext conftest$ac_exeext 9905if ac_fn_c_try_link "$LINENO"; then :
15770if { (ac_try="$ac_link" 9906 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15771case "(($ac_try" in 9907$as_echo "yes" >&6; }
15772 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15773 *) ac_try_echo=$ac_try;;
15774esac
15775eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15776 (eval "$ac_link") 2>conftest.er1
15777 ac_status=$?
15778 grep -v '^ *+' conftest.er1 >conftest.err
15779 rm -f conftest.er1
15780 cat conftest.err >&5
15781 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15782 (exit $ac_status); } && {
15783 test -z "$ac_c_werror_flag" ||
15784 test ! -s conftest.err
15785 } && test -s conftest$ac_exeext &&
15786 $as_test_x conftest$ac_exeext; then
15787 { echo "$as_me:$LINENO: result: yes" >&5
15788echo "${ECHO_T}yes" >&6; }
15789else 9908else
15790 echo "$as_me: failed program was:" >&5
15791sed 's/^/| /' conftest.$ac_ext >&5
15792
15793 9909
15794 { echo "$as_me:$LINENO: result: no" >&5 9910 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15795echo "${ECHO_T}no" >&6; } 9911$as_echo "no" >&6; }
15796 { { echo "$as_me:$LINENO: error: ** Incomplete or missing s/key libraries." >&5 9912 as_fn_error $? "** Incomplete or missing s/key libraries." "$LINENO" 5
15797echo "$as_me: error: ** Incomplete or missing s/key libraries." >&2;}
15798 { (exit 1); exit 1; }; }
15799 9913
15800fi 9914fi
15801 9915rm -f core conftest.err conftest.$ac_objext \
15802rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9916 conftest$ac_exeext conftest.$ac_ext
15803 conftest$ac_exeext conftest.$ac_ext 9917 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if skeychallenge takes 4 arguments" >&5
15804 { echo "$as_me:$LINENO: checking if skeychallenge takes 4 arguments" >&5 9918$as_echo_n "checking if skeychallenge takes 4 arguments... " >&6; }
15805echo $ECHO_N "checking if skeychallenge takes 4 arguments... $ECHO_C" >&6; } 9919 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15806 cat >conftest.$ac_ext <<_ACEOF
15807/* confdefs.h. */
15808_ACEOF
15809cat confdefs.h >>conftest.$ac_ext
15810cat >>conftest.$ac_ext <<_ACEOF
15811/* end confdefs.h. */ 9920/* end confdefs.h. */
15812 9921
15813#include <stdio.h> 9922#include <stdio.h>
@@ -15823,41 +9932,19 @@ main ()
15823 return 0; 9932 return 0;
15824} 9933}
15825_ACEOF 9934_ACEOF
15826rm -f conftest.$ac_objext 9935if ac_fn_c_try_compile "$LINENO"; then :
15827if { (ac_try="$ac_compile"
15828case "(($ac_try" in
15829 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15830 *) ac_try_echo=$ac_try;;
15831esac
15832eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15833 (eval "$ac_compile") 2>conftest.er1
15834 ac_status=$?
15835 grep -v '^ *+' conftest.er1 >conftest.err
15836 rm -f conftest.er1
15837 cat conftest.err >&5
15838 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15839 (exit $ac_status); } && {
15840 test -z "$ac_c_werror_flag" ||
15841 test ! -s conftest.err
15842 } && test -s conftest.$ac_objext; then
15843 9936
15844 { echo "$as_me:$LINENO: result: yes" >&5 9937 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15845echo "${ECHO_T}yes" >&6; } 9938$as_echo "yes" >&6; }
15846 9939
15847cat >>confdefs.h <<\_ACEOF 9940$as_echo "#define SKEYCHALLENGE_4ARG 1" >>confdefs.h
15848#define SKEYCHALLENGE_4ARG 1
15849_ACEOF
15850 9941
15851else 9942else
15852 echo "$as_me: failed program was:" >&5
15853sed 's/^/| /' conftest.$ac_ext >&5
15854 9943
15855 9944 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15856 { echo "$as_me:$LINENO: result: no" >&5 9945$as_echo "no" >&6; }
15857echo "${ECHO_T}no" >&6; }
15858 9946
15859fi 9947fi
15860
15861rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 9948rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15862 fi 9949 fi
15863 9950
@@ -15869,7 +9956,7 @@ fi
15869LDNS_MSG="no" 9956LDNS_MSG="no"
15870 9957
15871# Check whether --with-ldns was given. 9958# Check whether --with-ldns was given.
15872if test "${with_ldns+set}" = set; then 9959if test "${with_ldns+set}" = set; then :
15873 withval=$with_ldns; 9960 withval=$with_ldns;
15874 if test "x$withval" != "xno" ; then 9961 if test "x$withval" != "xno" ; then
15875 9962
@@ -15879,20 +9966,14 @@ if test "${with_ldns+set}" = set; then
15879 fi 9966 fi
15880 9967
15881 9968
15882cat >>confdefs.h <<\_ACEOF 9969$as_echo "#define HAVE_LDNS 1" >>confdefs.h
15883#define HAVE_LDNS 1
15884_ACEOF
15885 9970
15886 LIBS="-lldns $LIBS" 9971 LIBS="-lldns $LIBS"
15887 LDNS_MSG="yes" 9972 LDNS_MSG="yes"
15888 9973
15889 { echo "$as_me:$LINENO: checking for ldns support" >&5 9974 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldns support" >&5
15890echo $ECHO_N "checking for ldns support... $ECHO_C" >&6; } 9975$as_echo_n "checking for ldns support... " >&6; }
15891 cat >conftest.$ac_ext <<_ACEOF 9976 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15892/* confdefs.h. */
15893_ACEOF
15894cat confdefs.h >>conftest.$ac_ext
15895cat >>conftest.$ac_ext <<_ACEOF
15896/* end confdefs.h. */ 9977/* end confdefs.h. */
15897 9978
15898#include <stdio.h> 9979#include <stdio.h>
@@ -15903,41 +9984,18 @@ int main() { ldns_status status = ldns_verify_trusted(NULL, NULL, NULL, NULL); s
15903 9984
15904 9985
15905_ACEOF 9986_ACEOF
15906rm -f conftest.$ac_objext conftest$ac_exeext 9987if ac_fn_c_try_link "$LINENO"; then :
15907if { (ac_try="$ac_link" 9988 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15908case "(($ac_try" in 9989$as_echo "yes" >&6; }
15909 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15910 *) ac_try_echo=$ac_try;;
15911esac
15912eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15913 (eval "$ac_link") 2>conftest.er1
15914 ac_status=$?
15915 grep -v '^ *+' conftest.er1 >conftest.err
15916 rm -f conftest.er1
15917 cat conftest.err >&5
15918 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15919 (exit $ac_status); } && {
15920 test -z "$ac_c_werror_flag" ||
15921 test ! -s conftest.err
15922 } && test -s conftest$ac_exeext &&
15923 $as_test_x conftest$ac_exeext; then
15924 { echo "$as_me:$LINENO: result: yes" >&5
15925echo "${ECHO_T}yes" >&6; }
15926else 9990else
15927 echo "$as_me: failed program was:" >&5
15928sed 's/^/| /' conftest.$ac_ext >&5
15929
15930 9991
15931 { echo "$as_me:$LINENO: result: no" >&5 9992 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15932echo "${ECHO_T}no" >&6; } 9993$as_echo "no" >&6; }
15933 { { echo "$as_me:$LINENO: error: ** Incomplete or missing ldns libraries." >&5 9994 as_fn_error $? "** Incomplete or missing ldns libraries." "$LINENO" 5
15934echo "$as_me: error: ** Incomplete or missing ldns libraries." >&2;}
15935 { (exit 1); exit 1; }; }
15936 9995
15937fi 9996fi
15938 9997rm -f core conftest.err conftest.$ac_objext \
15939rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 9998 conftest$ac_exeext conftest.$ac_ext
15940 conftest$ac_exeext conftest.$ac_ext
15941 fi 9999 fi
15942 10000
15943 10001
@@ -15948,16 +10006,16 @@ fi
15948LIBEDIT_MSG="no" 10006LIBEDIT_MSG="no"
15949 10007
15950# Check whether --with-libedit was given. 10008# Check whether --with-libedit was given.
15951if test "${with_libedit+set}" = set; then 10009if test "${with_libedit+set}" = set; then :
15952 withval=$with_libedit; if test "x$withval" != "xno" ; then 10010 withval=$with_libedit; if test "x$withval" != "xno" ; then
15953 if test "x$withval" = "xyes" ; then 10011 if test "x$withval" = "xyes" ; then
15954 if test -n "$ac_tool_prefix"; then 10012 if test -n "$ac_tool_prefix"; then
15955 # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. 10013 # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
15956set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 10014set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
15957{ echo "$as_me:$LINENO: checking for $ac_word" >&5 10015{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
15958echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 10016$as_echo_n "checking for $ac_word... " >&6; }
15959if test "${ac_cv_path_PKGCONFIG+set}" = set; then 10017if ${ac_cv_path_PKGCONFIG+:} false; then :
15960 echo $ECHO_N "(cached) $ECHO_C" >&6 10018 $as_echo_n "(cached) " >&6
15961else 10019else
15962 case $PKGCONFIG in 10020 case $PKGCONFIG in
15963 [\\/]* | ?:[\\/]*) 10021 [\\/]* | ?:[\\/]*)
@@ -15969,14 +10027,14 @@ for as_dir in $PATH
15969do 10027do
15970 IFS=$as_save_IFS 10028 IFS=$as_save_IFS
15971 test -z "$as_dir" && as_dir=. 10029 test -z "$as_dir" && as_dir=.
15972 for ac_exec_ext in '' $ac_executable_extensions; do 10030 for ac_exec_ext in '' $ac_executable_extensions; do
15973 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 10031 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
15974 ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext" 10032 ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
15975 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 10033 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
15976 break 2 10034 break 2
15977 fi 10035 fi
15978done 10036done
15979done 10037 done
15980IFS=$as_save_IFS 10038IFS=$as_save_IFS
15981 10039
15982 ;; 10040 ;;
@@ -15984,11 +10042,11 @@ esac
15984fi 10042fi
15985PKGCONFIG=$ac_cv_path_PKGCONFIG 10043PKGCONFIG=$ac_cv_path_PKGCONFIG
15986if test -n "$PKGCONFIG"; then 10044if test -n "$PKGCONFIG"; then
15987 { echo "$as_me:$LINENO: result: $PKGCONFIG" >&5 10045 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
15988echo "${ECHO_T}$PKGCONFIG" >&6; } 10046$as_echo "$PKGCONFIG" >&6; }
15989else 10047else
15990 { echo "$as_me:$LINENO: result: no" >&5 10048 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15991echo "${ECHO_T}no" >&6; } 10049$as_echo "no" >&6; }
15992fi 10050fi
15993 10051
15994 10052
@@ -15997,10 +10055,10 @@ if test -z "$ac_cv_path_PKGCONFIG"; then
15997 ac_pt_PKGCONFIG=$PKGCONFIG 10055 ac_pt_PKGCONFIG=$PKGCONFIG
15998 # Extract the first word of "pkg-config", so it can be a program name with args. 10056 # Extract the first word of "pkg-config", so it can be a program name with args.
15999set dummy pkg-config; ac_word=$2 10057set dummy pkg-config; ac_word=$2
16000{ echo "$as_me:$LINENO: checking for $ac_word" >&5 10058{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
16001echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 10059$as_echo_n "checking for $ac_word... " >&6; }
16002if test "${ac_cv_path_ac_pt_PKGCONFIG+set}" = set; then 10060if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
16003 echo $ECHO_N "(cached) $ECHO_C" >&6 10061 $as_echo_n "(cached) " >&6
16004else 10062else
16005 case $ac_pt_PKGCONFIG in 10063 case $ac_pt_PKGCONFIG in
16006 [\\/]* | ?:[\\/]*) 10064 [\\/]* | ?:[\\/]*)
@@ -16012,14 +10070,14 @@ for as_dir in $PATH
16012do 10070do
16013 IFS=$as_save_IFS 10071 IFS=$as_save_IFS
16014 test -z "$as_dir" && as_dir=. 10072 test -z "$as_dir" && as_dir=.
16015 for ac_exec_ext in '' $ac_executable_extensions; do 10073 for ac_exec_ext in '' $ac_executable_extensions; do
16016 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 10074 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
16017 ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext" 10075 ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
16018 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 10076 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
16019 break 2 10077 break 2
16020 fi 10078 fi
16021done 10079done
16022done 10080 done
16023IFS=$as_save_IFS 10081IFS=$as_save_IFS
16024 10082
16025 ;; 10083 ;;
@@ -16027,11 +10085,11 @@ esac
16027fi 10085fi
16028ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG 10086ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
16029if test -n "$ac_pt_PKGCONFIG"; then 10087if test -n "$ac_pt_PKGCONFIG"; then
16030 { echo "$as_me:$LINENO: result: $ac_pt_PKGCONFIG" >&5 10088 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
16031echo "${ECHO_T}$ac_pt_PKGCONFIG" >&6; } 10089$as_echo "$ac_pt_PKGCONFIG" >&6; }
16032else 10090else
16033 { echo "$as_me:$LINENO: result: no" >&5 10091 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16034echo "${ECHO_T}no" >&6; } 10092$as_echo "no" >&6; }
16035fi 10093fi
16036 10094
16037 if test "x$ac_pt_PKGCONFIG" = x; then 10095 if test "x$ac_pt_PKGCONFIG" = x; then
@@ -16039,12 +10097,8 @@ fi
16039 else 10097 else
16040 case $cross_compiling:$ac_tool_warned in 10098 case $cross_compiling:$ac_tool_warned in
16041yes:) 10099yes:)
16042{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools 10100{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
16043whose name does not start with the host triplet. If you think this 10101$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
16044configuration is useful to you, please write to autoconf@gnu.org." >&5
16045echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
16046whose name does not start with the host triplet. If you think this
16047configuration is useful to you, please write to autoconf@gnu.org." >&2;}
16048ac_tool_warned=yes ;; 10102ac_tool_warned=yes ;;
16049esac 10103esac
16050 PKGCONFIG=$ac_pt_PKGCONFIG 10104 PKGCONFIG=$ac_pt_PKGCONFIG
@@ -16054,15 +10108,15 @@ else
16054fi 10108fi
16055 10109
16056 if test "x$PKGCONFIG" != "xno"; then 10110 if test "x$PKGCONFIG" != "xno"; then
16057 { echo "$as_me:$LINENO: checking if $PKGCONFIG knows about libedit" >&5 10111 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about libedit" >&5
16058echo $ECHO_N "checking if $PKGCONFIG knows about libedit... $ECHO_C" >&6; } 10112$as_echo_n "checking if $PKGCONFIG knows about libedit... " >&6; }
16059 if "$PKGCONFIG" libedit; then 10113 if "$PKGCONFIG" libedit; then
16060 { echo "$as_me:$LINENO: result: yes" >&5 10114 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16061echo "${ECHO_T}yes" >&6; } 10115$as_echo "yes" >&6; }
16062 use_pkgconfig_for_libedit=yes 10116 use_pkgconfig_for_libedit=yes
16063 else 10117 else
16064 { echo "$as_me:$LINENO: result: no" >&5 10118 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16065echo "${ECHO_T}no" >&6; } 10119$as_echo "no" >&6; }
16066 fi 10120 fi
16067 fi 10121 fi
16068 else 10122 else
@@ -16080,19 +10134,15 @@ echo "${ECHO_T}no" >&6; }
16080 LIBEDIT="-ledit -lcurses" 10134 LIBEDIT="-ledit -lcurses"
16081 fi 10135 fi
16082 OTHERLIBS=`echo $LIBEDIT | sed 's/-ledit//'` 10136 OTHERLIBS=`echo $LIBEDIT | sed 's/-ledit//'`
16083 { echo "$as_me:$LINENO: checking for el_init in -ledit" >&5 10137 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for el_init in -ledit" >&5
16084echo $ECHO_N "checking for el_init in -ledit... $ECHO_C" >&6; } 10138$as_echo_n "checking for el_init in -ledit... " >&6; }
16085if test "${ac_cv_lib_edit_el_init+set}" = set; then 10139if ${ac_cv_lib_edit_el_init+:} false; then :
16086 echo $ECHO_N "(cached) $ECHO_C" >&6 10140 $as_echo_n "(cached) " >&6
16087else 10141else
16088 ac_check_lib_save_LIBS=$LIBS 10142 ac_check_lib_save_LIBS=$LIBS
16089LIBS="-ledit $OTHERLIBS 10143LIBS="-ledit $OTHERLIBS
16090 $LIBS" 10144 $LIBS"
16091cat >conftest.$ac_ext <<_ACEOF 10145cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16092/* confdefs.h. */
16093_ACEOF
16094cat confdefs.h >>conftest.$ac_ext
16095cat >>conftest.$ac_ext <<_ACEOF
16096/* end confdefs.h. */ 10146/* end confdefs.h. */
16097 10147
16098/* Override any GCC internal prototype to avoid an error. 10148/* Override any GCC internal prototype to avoid an error.
@@ -16110,60 +10160,31 @@ return el_init ();
16110 return 0; 10160 return 0;
16111} 10161}
16112_ACEOF 10162_ACEOF
16113rm -f conftest.$ac_objext conftest$ac_exeext 10163if ac_fn_c_try_link "$LINENO"; then :
16114if { (ac_try="$ac_link"
16115case "(($ac_try" in
16116 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16117 *) ac_try_echo=$ac_try;;
16118esac
16119eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16120 (eval "$ac_link") 2>conftest.er1
16121 ac_status=$?
16122 grep -v '^ *+' conftest.er1 >conftest.err
16123 rm -f conftest.er1
16124 cat conftest.err >&5
16125 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16126 (exit $ac_status); } && {
16127 test -z "$ac_c_werror_flag" ||
16128 test ! -s conftest.err
16129 } && test -s conftest$ac_exeext &&
16130 $as_test_x conftest$ac_exeext; then
16131 ac_cv_lib_edit_el_init=yes 10164 ac_cv_lib_edit_el_init=yes
16132else 10165else
16133 echo "$as_me: failed program was:" >&5 10166 ac_cv_lib_edit_el_init=no
16134sed 's/^/| /' conftest.$ac_ext >&5
16135
16136 ac_cv_lib_edit_el_init=no
16137fi 10167fi
16138 10168rm -f core conftest.err conftest.$ac_objext \
16139rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10169 conftest$ac_exeext conftest.$ac_ext
16140 conftest$ac_exeext conftest.$ac_ext
16141LIBS=$ac_check_lib_save_LIBS 10170LIBS=$ac_check_lib_save_LIBS
16142fi 10171fi
16143{ echo "$as_me:$LINENO: result: $ac_cv_lib_edit_el_init" >&5 10172{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_el_init" >&5
16144echo "${ECHO_T}$ac_cv_lib_edit_el_init" >&6; } 10173$as_echo "$ac_cv_lib_edit_el_init" >&6; }
16145if test $ac_cv_lib_edit_el_init = yes; then 10174if test "x$ac_cv_lib_edit_el_init" = xyes; then :
16146 10175
16147cat >>confdefs.h <<\_ACEOF 10176$as_echo "#define USE_LIBEDIT 1" >>confdefs.h
16148#define USE_LIBEDIT 1
16149_ACEOF
16150 10177
16151 LIBEDIT_MSG="yes" 10178 LIBEDIT_MSG="yes"
16152 10179
16153 10180
16154else 10181else
16155 { { echo "$as_me:$LINENO: error: libedit not found" >&5 10182 as_fn_error $? "libedit not found" "$LINENO" 5
16156echo "$as_me: error: libedit not found" >&2;}
16157 { (exit 1); exit 1; }; }
16158fi 10183fi
16159 10184
16160 { echo "$as_me:$LINENO: checking if libedit version is compatible" >&5 10185 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libedit version is compatible" >&5
16161echo $ECHO_N "checking if libedit version is compatible... $ECHO_C" >&6; } 10186$as_echo_n "checking if libedit version is compatible... " >&6; }
16162 cat >conftest.$ac_ext <<_ACEOF 10187 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16163/* confdefs.h. */
16164_ACEOF
16165cat confdefs.h >>conftest.$ac_ext
16166cat >>conftest.$ac_ext <<_ACEOF
16167/* end confdefs.h. */ 10188/* end confdefs.h. */
16168 #include <histedit.h> 10189 #include <histedit.h>
16169int 10190int
@@ -16178,37 +10199,15 @@ main ()
16178 return 0; 10199 return 0;
16179} 10200}
16180_ACEOF 10201_ACEOF
16181rm -f conftest.$ac_objext 10202if ac_fn_c_try_compile "$LINENO"; then :
16182if { (ac_try="$ac_compile" 10203 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16183case "(($ac_try" in 10204$as_echo "yes" >&6; }
16184 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16185 *) ac_try_echo=$ac_try;;
16186esac
16187eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16188 (eval "$ac_compile") 2>conftest.er1
16189 ac_status=$?
16190 grep -v '^ *+' conftest.er1 >conftest.err
16191 rm -f conftest.er1
16192 cat conftest.err >&5
16193 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16194 (exit $ac_status); } && {
16195 test -z "$ac_c_werror_flag" ||
16196 test ! -s conftest.err
16197 } && test -s conftest.$ac_objext; then
16198 { echo "$as_me:$LINENO: result: yes" >&5
16199echo "${ECHO_T}yes" >&6; }
16200else 10205else
16201 echo "$as_me: failed program was:" >&5 10206 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16202sed 's/^/| /' conftest.$ac_ext >&5 10207$as_echo "no" >&6; }
16203 10208 as_fn_error $? "libedit version is not compatible" "$LINENO" 5
16204 { echo "$as_me:$LINENO: result: no" >&5
16205echo "${ECHO_T}no" >&6; }
16206 { { echo "$as_me:$LINENO: error: libedit version is not compatible" >&5
16207echo "$as_me: error: libedit version is not compatible" >&2;}
16208 { (exit 1); exit 1; }; }
16209 10209
16210fi 10210fi
16211
16212rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 10211rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16213 fi 10212 fi
16214 10213
@@ -16218,95 +10217,43 @@ fi
16218AUDIT_MODULE=none 10217AUDIT_MODULE=none
16219 10218
16220# Check whether --with-audit was given. 10219# Check whether --with-audit was given.
16221if test "${with_audit+set}" = set; then 10220if test "${with_audit+set}" = set; then :
16222 withval=$with_audit; 10221 withval=$with_audit;
16223 { echo "$as_me:$LINENO: checking for supported audit module" >&5 10222 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported audit module" >&5
16224echo $ECHO_N "checking for supported audit module... $ECHO_C" >&6; } 10223$as_echo_n "checking for supported audit module... " >&6; }
16225 case "$withval" in 10224 case "$withval" in
16226 bsm) 10225 bsm)
16227 { echo "$as_me:$LINENO: result: bsm" >&5 10226 { $as_echo "$as_me:${as_lineno-$LINENO}: result: bsm" >&5
16228echo "${ECHO_T}bsm" >&6; } 10227$as_echo "bsm" >&6; }
16229 AUDIT_MODULE=bsm 10228 AUDIT_MODULE=bsm
16230 10229 for ac_header in bsm/audit.h
16231for ac_header in bsm/audit.h 10230do :
16232do 10231 ac_fn_c_check_header_compile "$LINENO" "bsm/audit.h" "ac_cv_header_bsm_audit_h" "
16233as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
16234{ echo "$as_me:$LINENO: checking for $ac_header" >&5
16235echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
16236if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
16237 echo $ECHO_N "(cached) $ECHO_C" >&6
16238else
16239 cat >conftest.$ac_ext <<_ACEOF
16240/* confdefs.h. */
16241_ACEOF
16242cat confdefs.h >>conftest.$ac_ext
16243cat >>conftest.$ac_ext <<_ACEOF
16244/* end confdefs.h. */
16245
16246#ifdef HAVE_TIME_H 10232#ifdef HAVE_TIME_H
16247# include <time.h> 10233# include <time.h>
16248#endif 10234#endif
16249 10235
16250 10236
16251 10237"
16252#include <$ac_header> 10238if test "x$ac_cv_header_bsm_audit_h" = xyes; then :
16253_ACEOF
16254rm -f conftest.$ac_objext
16255if { (ac_try="$ac_compile"
16256case "(($ac_try" in
16257 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16258 *) ac_try_echo=$ac_try;;
16259esac
16260eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16261 (eval "$ac_compile") 2>conftest.er1
16262 ac_status=$?
16263 grep -v '^ *+' conftest.er1 >conftest.err
16264 rm -f conftest.er1
16265 cat conftest.err >&5
16266 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16267 (exit $ac_status); } && {
16268 test -z "$ac_c_werror_flag" ||
16269 test ! -s conftest.err
16270 } && test -s conftest.$ac_objext; then
16271 eval "$as_ac_Header=yes"
16272else
16273 echo "$as_me: failed program was:" >&5
16274sed 's/^/| /' conftest.$ac_ext >&5
16275
16276 eval "$as_ac_Header=no"
16277fi
16278
16279rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16280fi
16281ac_res=`eval echo '${'$as_ac_Header'}'`
16282 { echo "$as_me:$LINENO: result: $ac_res" >&5
16283echo "${ECHO_T}$ac_res" >&6; }
16284if test `eval echo '${'$as_ac_Header'}'` = yes; then
16285 cat >>confdefs.h <<_ACEOF 10239 cat >>confdefs.h <<_ACEOF
16286#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 10240#define HAVE_BSM_AUDIT_H 1
16287_ACEOF 10241_ACEOF
16288 10242
16289else 10243else
16290 { { echo "$as_me:$LINENO: error: BSM enabled and bsm/audit.h not found" >&5 10244 as_fn_error $? "BSM enabled and bsm/audit.h not found" "$LINENO" 5
16291echo "$as_me: error: BSM enabled and bsm/audit.h not found" >&2;}
16292 { (exit 1); exit 1; }; }
16293fi 10245fi
16294 10246
16295done 10247done
16296 10248
16297 10249 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaudit in -lbsm" >&5
16298{ echo "$as_me:$LINENO: checking for getaudit in -lbsm" >&5 10250$as_echo_n "checking for getaudit in -lbsm... " >&6; }
16299echo $ECHO_N "checking for getaudit in -lbsm... $ECHO_C" >&6; } 10251if ${ac_cv_lib_bsm_getaudit+:} false; then :
16300if test "${ac_cv_lib_bsm_getaudit+set}" = set; then 10252 $as_echo_n "(cached) " >&6
16301 echo $ECHO_N "(cached) $ECHO_C" >&6
16302else 10253else
16303 ac_check_lib_save_LIBS=$LIBS 10254 ac_check_lib_save_LIBS=$LIBS
16304LIBS="-lbsm $LIBS" 10255LIBS="-lbsm $LIBS"
16305cat >conftest.$ac_ext <<_ACEOF 10256cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16306/* confdefs.h. */
16307_ACEOF
16308cat confdefs.h >>conftest.$ac_ext
16309cat >>conftest.$ac_ext <<_ACEOF
16310/* end confdefs.h. */ 10257/* end confdefs.h. */
16311 10258
16312/* Override any GCC internal prototype to avoid an error. 10259/* Override any GCC internal prototype to avoid an error.
@@ -16324,39 +10271,18 @@ return getaudit ();
16324 return 0; 10271 return 0;
16325} 10272}
16326_ACEOF 10273_ACEOF
16327rm -f conftest.$ac_objext conftest$ac_exeext 10274if ac_fn_c_try_link "$LINENO"; then :
16328if { (ac_try="$ac_link"
16329case "(($ac_try" in
16330 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16331 *) ac_try_echo=$ac_try;;
16332esac
16333eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16334 (eval "$ac_link") 2>conftest.er1
16335 ac_status=$?
16336 grep -v '^ *+' conftest.er1 >conftest.err
16337 rm -f conftest.er1
16338 cat conftest.err >&5
16339 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16340 (exit $ac_status); } && {
16341 test -z "$ac_c_werror_flag" ||
16342 test ! -s conftest.err
16343 } && test -s conftest$ac_exeext &&
16344 $as_test_x conftest$ac_exeext; then
16345 ac_cv_lib_bsm_getaudit=yes 10275 ac_cv_lib_bsm_getaudit=yes
16346else 10276else
16347 echo "$as_me: failed program was:" >&5 10277 ac_cv_lib_bsm_getaudit=no
16348sed 's/^/| /' conftest.$ac_ext >&5
16349
16350 ac_cv_lib_bsm_getaudit=no
16351fi 10278fi
16352 10279rm -f core conftest.err conftest.$ac_objext \
16353rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10280 conftest$ac_exeext conftest.$ac_ext
16354 conftest$ac_exeext conftest.$ac_ext
16355LIBS=$ac_check_lib_save_LIBS 10281LIBS=$ac_check_lib_save_LIBS
16356fi 10282fi
16357{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsm_getaudit" >&5 10283{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsm_getaudit" >&5
16358echo "${ECHO_T}$ac_cv_lib_bsm_getaudit" >&6; } 10284$as_echo "$ac_cv_lib_bsm_getaudit" >&6; }
16359if test $ac_cv_lib_bsm_getaudit = yes; then 10285if test "x$ac_cv_lib_bsm_getaudit" = xyes; then :
16360 cat >>confdefs.h <<_ACEOF 10286 cat >>confdefs.h <<_ACEOF
16361#define HAVE_LIBBSM 1 10287#define HAVE_LIBBSM 1
16362_ACEOF 10288_ACEOF
@@ -16364,362 +10290,55 @@ _ACEOF
16364 LIBS="-lbsm $LIBS" 10290 LIBS="-lbsm $LIBS"
16365 10291
16366else 10292else
16367 { { echo "$as_me:$LINENO: error: BSM enabled and required library not found" >&5 10293 as_fn_error $? "BSM enabled and required library not found" "$LINENO" 5
16368echo "$as_me: error: BSM enabled and required library not found" >&2;}
16369 { (exit 1); exit 1; }; }
16370fi 10294fi
16371 10295
16372 10296 for ac_func in getaudit
16373for ac_func in getaudit 10297do :
16374do 10298 ac_fn_c_check_func "$LINENO" "getaudit" "ac_cv_func_getaudit"
16375as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 10299if test "x$ac_cv_func_getaudit" = xyes; then :
16376{ echo "$as_me:$LINENO: checking for $ac_func" >&5
16377echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
16378if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
16379 echo $ECHO_N "(cached) $ECHO_C" >&6
16380else
16381 cat >conftest.$ac_ext <<_ACEOF
16382/* confdefs.h. */
16383_ACEOF
16384cat confdefs.h >>conftest.$ac_ext
16385cat >>conftest.$ac_ext <<_ACEOF
16386/* end confdefs.h. */
16387/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
16388 For example, HP-UX 11i <limits.h> declares gettimeofday. */
16389#define $ac_func innocuous_$ac_func
16390
16391/* System header to define __stub macros and hopefully few prototypes,
16392 which can conflict with char $ac_func (); below.
16393 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
16394 <limits.h> exists even on freestanding compilers. */
16395
16396#ifdef __STDC__
16397# include <limits.h>
16398#else
16399# include <assert.h>
16400#endif
16401
16402#undef $ac_func
16403
16404/* Override any GCC internal prototype to avoid an error.
16405 Use char because int might match the return type of a GCC
16406 builtin and then its argument prototype would still apply. */
16407#ifdef __cplusplus
16408extern "C"
16409#endif
16410char $ac_func ();
16411/* The GNU C library defines this for functions which it implements
16412 to always fail with ENOSYS. Some functions are actually named
16413 something starting with __ and the normal name is an alias. */
16414#if defined __stub_$ac_func || defined __stub___$ac_func
16415choke me
16416#endif
16417
16418int
16419main ()
16420{
16421return $ac_func ();
16422 ;
16423 return 0;
16424}
16425_ACEOF
16426rm -f conftest.$ac_objext conftest$ac_exeext
16427if { (ac_try="$ac_link"
16428case "(($ac_try" in
16429 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16430 *) ac_try_echo=$ac_try;;
16431esac
16432eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16433 (eval "$ac_link") 2>conftest.er1
16434 ac_status=$?
16435 grep -v '^ *+' conftest.er1 >conftest.err
16436 rm -f conftest.er1
16437 cat conftest.err >&5
16438 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16439 (exit $ac_status); } && {
16440 test -z "$ac_c_werror_flag" ||
16441 test ! -s conftest.err
16442 } && test -s conftest$ac_exeext &&
16443 $as_test_x conftest$ac_exeext; then
16444 eval "$as_ac_var=yes"
16445else
16446 echo "$as_me: failed program was:" >&5
16447sed 's/^/| /' conftest.$ac_ext >&5
16448
16449 eval "$as_ac_var=no"
16450fi
16451
16452rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
16453 conftest$ac_exeext conftest.$ac_ext
16454fi
16455ac_res=`eval echo '${'$as_ac_var'}'`
16456 { echo "$as_me:$LINENO: result: $ac_res" >&5
16457echo "${ECHO_T}$ac_res" >&6; }
16458if test `eval echo '${'$as_ac_var'}'` = yes; then
16459 cat >>confdefs.h <<_ACEOF 10300 cat >>confdefs.h <<_ACEOF
16460#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 10301#define HAVE_GETAUDIT 1
16461_ACEOF 10302_ACEOF
16462 10303
16463else 10304else
16464 { { echo "$as_me:$LINENO: error: BSM enabled and required function not found" >&5 10305 as_fn_error $? "BSM enabled and required function not found" "$LINENO" 5
16465echo "$as_me: error: BSM enabled and required function not found" >&2;}
16466 { (exit 1); exit 1; }; }
16467fi 10306fi
16468done 10307done
16469 10308
16470 # These are optional 10309 # These are optional
16471 10310 for ac_func in getaudit_addr aug_get_machine
16472 10311do :
16473for ac_func in getaudit_addr aug_get_machine 10312 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
16474do 10313ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
16475as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 10314if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
16476{ echo "$as_me:$LINENO: checking for $ac_func" >&5
16477echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
16478if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
16479 echo $ECHO_N "(cached) $ECHO_C" >&6
16480else
16481 cat >conftest.$ac_ext <<_ACEOF
16482/* confdefs.h. */
16483_ACEOF
16484cat confdefs.h >>conftest.$ac_ext
16485cat >>conftest.$ac_ext <<_ACEOF
16486/* end confdefs.h. */
16487/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
16488 For example, HP-UX 11i <limits.h> declares gettimeofday. */
16489#define $ac_func innocuous_$ac_func
16490
16491/* System header to define __stub macros and hopefully few prototypes,
16492 which can conflict with char $ac_func (); below.
16493 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
16494 <limits.h> exists even on freestanding compilers. */
16495
16496#ifdef __STDC__
16497# include <limits.h>
16498#else
16499# include <assert.h>
16500#endif
16501
16502#undef $ac_func
16503
16504/* Override any GCC internal prototype to avoid an error.
16505 Use char because int might match the return type of a GCC
16506 builtin and then its argument prototype would still apply. */
16507#ifdef __cplusplus
16508extern "C"
16509#endif
16510char $ac_func ();
16511/* The GNU C library defines this for functions which it implements
16512 to always fail with ENOSYS. Some functions are actually named
16513 something starting with __ and the normal name is an alias. */
16514#if defined __stub_$ac_func || defined __stub___$ac_func
16515choke me
16516#endif
16517
16518int
16519main ()
16520{
16521return $ac_func ();
16522 ;
16523 return 0;
16524}
16525_ACEOF
16526rm -f conftest.$ac_objext conftest$ac_exeext
16527if { (ac_try="$ac_link"
16528case "(($ac_try" in
16529 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16530 *) ac_try_echo=$ac_try;;
16531esac
16532eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16533 (eval "$ac_link") 2>conftest.er1
16534 ac_status=$?
16535 grep -v '^ *+' conftest.er1 >conftest.err
16536 rm -f conftest.er1
16537 cat conftest.err >&5
16538 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16539 (exit $ac_status); } && {
16540 test -z "$ac_c_werror_flag" ||
16541 test ! -s conftest.err
16542 } && test -s conftest$ac_exeext &&
16543 $as_test_x conftest$ac_exeext; then
16544 eval "$as_ac_var=yes"
16545else
16546 echo "$as_me: failed program was:" >&5
16547sed 's/^/| /' conftest.$ac_ext >&5
16548
16549 eval "$as_ac_var=no"
16550fi
16551
16552rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
16553 conftest$ac_exeext conftest.$ac_ext
16554fi
16555ac_res=`eval echo '${'$as_ac_var'}'`
16556 { echo "$as_me:$LINENO: result: $ac_res" >&5
16557echo "${ECHO_T}$ac_res" >&6; }
16558if test `eval echo '${'$as_ac_var'}'` = yes; then
16559 cat >>confdefs.h <<_ACEOF 10315 cat >>confdefs.h <<_ACEOF
16560#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 10316#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
16561_ACEOF 10317_ACEOF
16562 10318
16563fi 10319fi
16564done 10320done
16565 10321
16566 10322
16567cat >>confdefs.h <<\_ACEOF 10323$as_echo "#define USE_BSM_AUDIT 1" >>confdefs.h
16568#define USE_BSM_AUDIT 1
16569_ACEOF
16570 10324
16571 if test "$sol2ver" -ge 11; then 10325 if test "$sol2ver" -ge 11; then
16572 SSHDLIBS="$SSHDLIBS -lscf" 10326 SSHDLIBS="$SSHDLIBS -lscf"
16573 10327
16574cat >>confdefs.h <<\_ACEOF 10328$as_echo "#define BROKEN_BSM_API 1" >>confdefs.h
16575#define BROKEN_BSM_API 1
16576_ACEOF
16577 10329
16578 fi 10330 fi
16579 ;; 10331 ;;
16580 linux) 10332 linux)
16581 { echo "$as_me:$LINENO: result: linux" >&5 10333 { $as_echo "$as_me:${as_lineno-$LINENO}: result: linux" >&5
16582echo "${ECHO_T}linux" >&6; } 10334$as_echo "linux" >&6; }
16583 AUDIT_MODULE=linux 10335 AUDIT_MODULE=linux
16584 10336 for ac_header in libaudit.h
16585for ac_header in libaudit.h 10337do :
16586do 10338 ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default"
16587as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 10339if test "x$ac_cv_header_libaudit_h" = xyes; then :
16588if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
16589 { echo "$as_me:$LINENO: checking for $ac_header" >&5
16590echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
16591if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
16592 echo $ECHO_N "(cached) $ECHO_C" >&6
16593fi
16594ac_res=`eval echo '${'$as_ac_Header'}'`
16595 { echo "$as_me:$LINENO: result: $ac_res" >&5
16596echo "${ECHO_T}$ac_res" >&6; }
16597else
16598 # Is the header compilable?
16599{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
16600echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
16601cat >conftest.$ac_ext <<_ACEOF
16602/* confdefs.h. */
16603_ACEOF
16604cat confdefs.h >>conftest.$ac_ext
16605cat >>conftest.$ac_ext <<_ACEOF
16606/* end confdefs.h. */
16607$ac_includes_default
16608#include <$ac_header>
16609_ACEOF
16610rm -f conftest.$ac_objext
16611if { (ac_try="$ac_compile"
16612case "(($ac_try" in
16613 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16614 *) ac_try_echo=$ac_try;;
16615esac
16616eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16617 (eval "$ac_compile") 2>conftest.er1
16618 ac_status=$?
16619 grep -v '^ *+' conftest.er1 >conftest.err
16620 rm -f conftest.er1
16621 cat conftest.err >&5
16622 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16623 (exit $ac_status); } && {
16624 test -z "$ac_c_werror_flag" ||
16625 test ! -s conftest.err
16626 } && test -s conftest.$ac_objext; then
16627 ac_header_compiler=yes
16628else
16629 echo "$as_me: failed program was:" >&5
16630sed 's/^/| /' conftest.$ac_ext >&5
16631
16632 ac_header_compiler=no
16633fi
16634
16635rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16636{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
16637echo "${ECHO_T}$ac_header_compiler" >&6; }
16638
16639# Is the header present?
16640{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
16641echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
16642cat >conftest.$ac_ext <<_ACEOF
16643/* confdefs.h. */
16644_ACEOF
16645cat confdefs.h >>conftest.$ac_ext
16646cat >>conftest.$ac_ext <<_ACEOF
16647/* end confdefs.h. */
16648#include <$ac_header>
16649_ACEOF
16650if { (ac_try="$ac_cpp conftest.$ac_ext"
16651case "(($ac_try" in
16652 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16653 *) ac_try_echo=$ac_try;;
16654esac
16655eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16656 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
16657 ac_status=$?
16658 grep -v '^ *+' conftest.er1 >conftest.err
16659 rm -f conftest.er1
16660 cat conftest.err >&5
16661 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16662 (exit $ac_status); } >/dev/null && {
16663 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
16664 test ! -s conftest.err
16665 }; then
16666 ac_header_preproc=yes
16667else
16668 echo "$as_me: failed program was:" >&5
16669sed 's/^/| /' conftest.$ac_ext >&5
16670
16671 ac_header_preproc=no
16672fi
16673
16674rm -f conftest.err conftest.$ac_ext
16675{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
16676echo "${ECHO_T}$ac_header_preproc" >&6; }
16677
16678# So? What about this header?
16679case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
16680 yes:no: )
16681 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
16682echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
16683 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
16684echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
16685 ac_header_preproc=yes
16686 ;;
16687 no:yes:* )
16688 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
16689echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
16690 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
16691echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
16692 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
16693echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
16694 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
16695echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
16696 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
16697echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
16698 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
16699echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
16700 ( cat <<\_ASBOX
16701## ------------------------------------------- ##
16702## Report this to openssh-unix-dev@mindrot.org ##
16703## ------------------------------------------- ##
16704_ASBOX
16705 ) | sed "s/^/$as_me: WARNING: /" >&2
16706 ;;
16707esac
16708{ echo "$as_me:$LINENO: checking for $ac_header" >&5
16709echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
16710if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
16711 echo $ECHO_N "(cached) $ECHO_C" >&6
16712else
16713 eval "$as_ac_Header=\$ac_header_preproc"
16714fi
16715ac_res=`eval echo '${'$as_ac_Header'}'`
16716 { echo "$as_me:$LINENO: result: $ac_res" >&5
16717echo "${ECHO_T}$ac_res" >&6; }
16718
16719fi
16720if test `eval echo '${'$as_ac_Header'}'` = yes; then
16721 cat >>confdefs.h <<_ACEOF 10340 cat >>confdefs.h <<_ACEOF
16722#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 10341#define HAVE_LIBAUDIT_H 1
16723_ACEOF 10342_ACEOF
16724 10343
16725fi 10344fi
@@ -16728,29 +10347,23 @@ done
16728 10347
16729 SSHDLIBS="$SSHDLIBS -laudit" 10348 SSHDLIBS="$SSHDLIBS -laudit"
16730 10349
16731cat >>confdefs.h <<\_ACEOF 10350$as_echo "#define USE_LINUX_AUDIT 1" >>confdefs.h
16732#define USE_LINUX_AUDIT 1
16733_ACEOF
16734 10351
16735 ;; 10352 ;;
16736 debug) 10353 debug)
16737 AUDIT_MODULE=debug 10354 AUDIT_MODULE=debug
16738 { echo "$as_me:$LINENO: result: debug" >&5 10355 { $as_echo "$as_me:${as_lineno-$LINENO}: result: debug" >&5
16739echo "${ECHO_T}debug" >&6; } 10356$as_echo "debug" >&6; }
16740 10357
16741cat >>confdefs.h <<\_ACEOF 10358$as_echo "#define SSH_AUDIT_EVENTS 1" >>confdefs.h
16742#define SSH_AUDIT_EVENTS 1
16743_ACEOF
16744 10359
16745 ;; 10360 ;;
16746 no) 10361 no)
16747 { echo "$as_me:$LINENO: result: no" >&5 10362 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16748echo "${ECHO_T}no" >&6; } 10363$as_echo "no" >&6; }
16749 ;; 10364 ;;
16750 *) 10365 *)
16751 { { echo "$as_me:$LINENO: error: Unknown audit module $withval" >&5 10366 as_fn_error $? "Unknown audit module $withval" "$LINENO" 5
16752echo "$as_me: error: Unknown audit module $withval" >&2;}
16753 { (exit 1); exit 1; }; }
16754 ;; 10367 ;;
16755 esac 10368 esac
16756 10369
@@ -16759,7 +10372,7 @@ fi
16759 10372
16760 10373
16761# Check whether --with-pie was given. 10374# Check whether --with-pie was given.
16762if test "${with_pie+set}" = set; then 10375if test "${with_pie+set}" = set; then :
16763 withval=$with_pie; 10376 withval=$with_pie;
16764 if test "x$withval" = "xno"; then 10377 if test "x$withval" = "xno"; then
16765 use_pie=no 10378 use_pie=no
@@ -16780,13 +10393,9 @@ if test "x$use_toolchain_hardening" != "x1" && test "x$use_pie" = "xauto"; then
16780fi 10393fi
16781if test "x$use_pie" = "xauto"; then 10394if test "x$use_pie" = "xauto"; then
16782 # Automatic PIE requires gcc >= 4.x 10395 # Automatic PIE requires gcc >= 4.x
16783 { echo "$as_me:$LINENO: checking for gcc >= 4.x" >&5 10396 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc >= 4.x" >&5
16784echo $ECHO_N "checking for gcc >= 4.x... $ECHO_C" >&6; } 10397$as_echo_n "checking for gcc >= 4.x... " >&6; }
16785 cat >conftest.$ac_ext <<_ACEOF 10398 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16786/* confdefs.h. */
16787_ACEOF
16788cat confdefs.h >>conftest.$ac_ext
16789cat >>conftest.$ac_ext <<_ACEOF
16790/* end confdefs.h. */ 10399/* end confdefs.h. */
16791 10400
16792#if !defined(__GNUC__) || __GNUC__ < 4 10401#if !defined(__GNUC__) || __GNUC__ < 4
@@ -16794,52 +10403,28 @@ cat >>conftest.$ac_ext <<_ACEOF
16794#endif 10403#endif
16795 10404
16796_ACEOF 10405_ACEOF
16797rm -f conftest.$ac_objext 10406if ac_fn_c_try_compile "$LINENO"; then :
16798if { (ac_try="$ac_compile" 10407 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16799case "(($ac_try" in 10408$as_echo "yes" >&6; }
16800 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16801 *) ac_try_echo=$ac_try;;
16802esac
16803eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16804 (eval "$ac_compile") 2>conftest.er1
16805 ac_status=$?
16806 grep -v '^ *+' conftest.er1 >conftest.err
16807 rm -f conftest.er1
16808 cat conftest.err >&5
16809 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16810 (exit $ac_status); } && {
16811 test -z "$ac_c_werror_flag" ||
16812 test ! -s conftest.err
16813 } && test -s conftest.$ac_objext; then
16814 { echo "$as_me:$LINENO: result: yes" >&5
16815echo "${ECHO_T}yes" >&6; }
16816else 10409else
16817 echo "$as_me: failed program was:" >&5 10410 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16818sed 's/^/| /' conftest.$ac_ext >&5 10411$as_echo "no" >&6; }
16819
16820 { echo "$as_me:$LINENO: result: no" >&5
16821echo "${ECHO_T}no" >&6; }
16822 use_pie=no 10412 use_pie=no
16823 10413
16824fi 10414fi
16825
16826rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 10415rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16827fi 10416fi
16828if test "x$use_pie" != "xno"; then 10417if test "x$use_pie" != "xno"; then
16829 SAVED_CFLAGS="$CFLAGS" 10418 SAVED_CFLAGS="$CFLAGS"
16830 SAVED_LDFLAGS="$LDFLAGS" 10419 SAVED_LDFLAGS="$LDFLAGS"
16831 { 10420 {
16832 { echo "$as_me:$LINENO: checking if $CC supports compile flag -fPIE" >&5 10421 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fPIE" >&5
16833echo $ECHO_N "checking if $CC supports compile flag -fPIE... $ECHO_C" >&6; } 10422$as_echo_n "checking if $CC supports compile flag -fPIE... " >&6; }
16834 saved_CFLAGS="$CFLAGS" 10423 saved_CFLAGS="$CFLAGS"
16835 CFLAGS="$CFLAGS $WERROR -fPIE" 10424 CFLAGS="$CFLAGS $WERROR -fPIE"
16836 _define_flag="" 10425 _define_flag=""
16837 test "x$_define_flag" = "x" && _define_flag="-fPIE" 10426 test "x$_define_flag" = "x" && _define_flag="-fPIE"
16838 cat >conftest.$ac_ext <<_ACEOF 10427 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16839/* confdefs.h. */
16840_ACEOF
16841cat confdefs.h >>conftest.$ac_ext
16842cat >>conftest.$ac_ext <<_ACEOF
16843/* end confdefs.h. */ 10428/* end confdefs.h. */
16844 10429
16845#include <stdlib.h> 10430#include <stdlib.h>
@@ -16855,58 +10440,34 @@ int main(int argc, char **argv) {
16855} 10440}
16856 10441
16857_ACEOF 10442_ACEOF
16858rm -f conftest.$ac_objext 10443if ac_fn_c_try_compile "$LINENO"; then :
16859if { (ac_try="$ac_compile"
16860case "(($ac_try" in
16861 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16862 *) ac_try_echo=$ac_try;;
16863esac
16864eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16865 (eval "$ac_compile") 2>conftest.er1
16866 ac_status=$?
16867 grep -v '^ *+' conftest.er1 >conftest.err
16868 rm -f conftest.er1
16869 cat conftest.err >&5
16870 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16871 (exit $ac_status); } && {
16872 test -z "$ac_c_werror_flag" ||
16873 test ! -s conftest.err
16874 } && test -s conftest.$ac_objext; then
16875 10444
16876if `grep -i "unrecognized option" conftest.err >/dev/null` 10445if `grep -i "unrecognized option" conftest.err >/dev/null`
16877then 10446then
16878 { echo "$as_me:$LINENO: result: no" >&5 10447 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16879echo "${ECHO_T}no" >&6; } 10448$as_echo "no" >&6; }
16880 CFLAGS="$saved_CFLAGS" 10449 CFLAGS="$saved_CFLAGS"
16881else 10450else
16882 { echo "$as_me:$LINENO: result: yes" >&5 10451 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16883echo "${ECHO_T}yes" >&6; } 10452$as_echo "yes" >&6; }
16884 CFLAGS="$saved_CFLAGS $_define_flag" 10453 CFLAGS="$saved_CFLAGS $_define_flag"
16885fi 10454fi
16886else 10455else
16887 echo "$as_me: failed program was:" >&5 10456 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16888sed 's/^/| /' conftest.$ac_ext >&5 10457$as_echo "no" >&6; }
16889
16890 { echo "$as_me:$LINENO: result: no" >&5
16891echo "${ECHO_T}no" >&6; }
16892 CFLAGS="$saved_CFLAGS" 10458 CFLAGS="$saved_CFLAGS"
16893 10459
16894fi 10460fi
16895
16896rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 10461rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
16897} 10462}
16898 { 10463 {
16899 { echo "$as_me:$LINENO: checking if $LD supports link flag -pie" >&5 10464 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -pie" >&5
16900echo $ECHO_N "checking if $LD supports link flag -pie... $ECHO_C" >&6; } 10465$as_echo_n "checking if $LD supports link flag -pie... " >&6; }
16901 saved_LDFLAGS="$LDFLAGS" 10466 saved_LDFLAGS="$LDFLAGS"
16902 LDFLAGS="$LDFLAGS $WERROR -pie" 10467 LDFLAGS="$LDFLAGS $WERROR -pie"
16903 _define_flag="" 10468 _define_flag=""
16904 test "x$_define_flag" = "x" && _define_flag="-pie" 10469 test "x$_define_flag" = "x" && _define_flag="-pie"
16905 cat >conftest.$ac_ext <<_ACEOF 10470 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
16906/* confdefs.h. */
16907_ACEOF
16908cat confdefs.h >>conftest.$ac_ext
16909cat >>conftest.$ac_ext <<_ACEOF
16910/* end confdefs.h. */ 10471/* end confdefs.h. */
16911 10472
16912#include <stdlib.h> 10473#include <stdlib.h>
@@ -16917,171 +10478,40 @@ int main(int argc, char **argv) {
16917 float l = i * 2.1; 10478 float l = i * 2.1;
16918 double m = l / 0.5; 10479 double m = l / 0.5;
16919 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 10480 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
16920 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 10481 long long p = n * o;
10482 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
16921 exit(0); 10483 exit(0);
16922} 10484}
16923 10485
16924_ACEOF 10486_ACEOF
16925rm -f conftest.$ac_objext conftest$ac_exeext 10487if ac_fn_c_try_link "$LINENO"; then :
16926if { (ac_try="$ac_link" 10488 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16927case "(($ac_try" in 10489$as_echo "yes" >&6; }
16928 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
16929 *) ac_try_echo=$ac_try;;
16930esac
16931eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
16932 (eval "$ac_link") 2>conftest.er1
16933 ac_status=$?
16934 grep -v '^ *+' conftest.er1 >conftest.err
16935 rm -f conftest.er1
16936 cat conftest.err >&5
16937 echo "$as_me:$LINENO: \$? = $ac_status" >&5
16938 (exit $ac_status); } && {
16939 test -z "$ac_c_werror_flag" ||
16940 test ! -s conftest.err
16941 } && test -s conftest$ac_exeext &&
16942 $as_test_x conftest$ac_exeext; then
16943 { echo "$as_me:$LINENO: result: yes" >&5
16944echo "${ECHO_T}yes" >&6; }
16945 LDFLAGS="$saved_LDFLAGS $_define_flag" 10490 LDFLAGS="$saved_LDFLAGS $_define_flag"
16946else 10491else
16947 echo "$as_me: failed program was:" >&5 10492 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16948sed 's/^/| /' conftest.$ac_ext >&5 10493$as_echo "no" >&6; }
16949
16950 { echo "$as_me:$LINENO: result: no" >&5
16951echo "${ECHO_T}no" >&6; }
16952 LDFLAGS="$saved_LDFLAGS" 10494 LDFLAGS="$saved_LDFLAGS"
16953 10495
16954fi 10496fi
16955 10497rm -f core conftest.err conftest.$ac_objext \
16956rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10498 conftest$ac_exeext conftest.$ac_ext
16957 conftest$ac_exeext conftest.$ac_ext
16958} 10499}
16959 # We use both -fPIE and -pie or neither. 10500 # We use both -fPIE and -pie or neither.
16960 { echo "$as_me:$LINENO: checking whether both -fPIE and -pie are supported" >&5 10501 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether both -fPIE and -pie are supported" >&5
16961echo $ECHO_N "checking whether both -fPIE and -pie are supported... $ECHO_C" >&6; } 10502$as_echo_n "checking whether both -fPIE and -pie are supported... " >&6; }
16962 if echo "x $CFLAGS" | grep ' -fPIE' >/dev/null 2>&1 && \ 10503 if echo "x $CFLAGS" | grep ' -fPIE' >/dev/null 2>&1 && \
16963 echo "x $LDFLAGS" | grep ' -pie' >/dev/null 2>&1 ; then 10504 echo "x $LDFLAGS" | grep ' -pie' >/dev/null 2>&1 ; then
16964 { echo "$as_me:$LINENO: result: yes" >&5 10505 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
16965echo "${ECHO_T}yes" >&6; } 10506$as_echo "yes" >&6; }
16966 else 10507 else
16967 { echo "$as_me:$LINENO: result: no" >&5 10508 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
16968echo "${ECHO_T}no" >&6; } 10509$as_echo "no" >&6; }
16969 CFLAGS="$SAVED_CFLAGS" 10510 CFLAGS="$SAVED_CFLAGS"
16970 LDFLAGS="$SAVED_LDFLAGS" 10511 LDFLAGS="$SAVED_LDFLAGS"
16971 fi 10512 fi
16972fi 10513fi
16973 10514
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085for ac_func in \ 10515for ac_func in \
17086 Blowfish_initstate \ 10516 Blowfish_initstate \
17087 Blowfish_expandstate \ 10517 Blowfish_expandstate \
@@ -17133,7 +10563,6 @@ for ac_func in \
17133 memmove \ 10563 memmove \
17134 memset_s \ 10564 memset_s \
17135 mkdtemp \ 10565 mkdtemp \
17136 mmap \
17137 ngetaddrinfo \ 10566 ngetaddrinfo \
17138 nsleep \ 10567 nsleep \
17139 ogetaddrinfo \ 10568 ogetaddrinfo \
@@ -17169,6 +10598,7 @@ for ac_func in \
17169 socketpair \ 10598 socketpair \
17170 statfs \ 10599 statfs \
17171 statvfs \ 10600 statvfs \
10601 strcasestr \
17172 strdup \ 10602 strdup \
17173 strerror \ 10603 strerror \
17174 strlcat \ 10604 strlcat \
@@ -17195,93 +10625,12 @@ for ac_func in \
17195 waitpid \ 10625 waitpid \
17196 warn \ 10626 warn \
17197 10627
17198do 10628do :
17199as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 10629 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
17200{ echo "$as_me:$LINENO: checking for $ac_func" >&5 10630ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
17201echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 10631if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
17202if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
17203 echo $ECHO_N "(cached) $ECHO_C" >&6
17204else
17205 cat >conftest.$ac_ext <<_ACEOF
17206/* confdefs.h. */
17207_ACEOF
17208cat confdefs.h >>conftest.$ac_ext
17209cat >>conftest.$ac_ext <<_ACEOF
17210/* end confdefs.h. */
17211/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
17212 For example, HP-UX 11i <limits.h> declares gettimeofday. */
17213#define $ac_func innocuous_$ac_func
17214
17215/* System header to define __stub macros and hopefully few prototypes,
17216 which can conflict with char $ac_func (); below.
17217 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
17218 <limits.h> exists even on freestanding compilers. */
17219
17220#ifdef __STDC__
17221# include <limits.h>
17222#else
17223# include <assert.h>
17224#endif
17225
17226#undef $ac_func
17227
17228/* Override any GCC internal prototype to avoid an error.
17229 Use char because int might match the return type of a GCC
17230 builtin and then its argument prototype would still apply. */
17231#ifdef __cplusplus
17232extern "C"
17233#endif
17234char $ac_func ();
17235/* The GNU C library defines this for functions which it implements
17236 to always fail with ENOSYS. Some functions are actually named
17237 something starting with __ and the normal name is an alias. */
17238#if defined __stub_$ac_func || defined __stub___$ac_func
17239choke me
17240#endif
17241
17242int
17243main ()
17244{
17245return $ac_func ();
17246 ;
17247 return 0;
17248}
17249_ACEOF
17250rm -f conftest.$ac_objext conftest$ac_exeext
17251if { (ac_try="$ac_link"
17252case "(($ac_try" in
17253 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17254 *) ac_try_echo=$ac_try;;
17255esac
17256eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17257 (eval "$ac_link") 2>conftest.er1
17258 ac_status=$?
17259 grep -v '^ *+' conftest.er1 >conftest.err
17260 rm -f conftest.er1
17261 cat conftest.err >&5
17262 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17263 (exit $ac_status); } && {
17264 test -z "$ac_c_werror_flag" ||
17265 test ! -s conftest.err
17266 } && test -s conftest$ac_exeext &&
17267 $as_test_x conftest$ac_exeext; then
17268 eval "$as_ac_var=yes"
17269else
17270 echo "$as_me: failed program was:" >&5
17271sed 's/^/| /' conftest.$ac_ext >&5
17272
17273 eval "$as_ac_var=no"
17274fi
17275
17276rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
17277 conftest$ac_exeext conftest.$ac_ext
17278fi
17279ac_res=`eval echo '${'$as_ac_var'}'`
17280 { echo "$as_me:$LINENO: result: $ac_res" >&5
17281echo "${ECHO_T}$ac_res" >&6; }
17282if test `eval echo '${'$as_ac_var'}'` = yes; then
17283 cat >>confdefs.h <<_ACEOF 10632 cat >>confdefs.h <<_ACEOF
17284#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 10633#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
17285_ACEOF 10634_ACEOF
17286 10635
17287fi 10636fi
@@ -17290,110 +10639,61 @@ done
17290 10639
17291saved_CFLAGS="$CFLAGS" 10640saved_CFLAGS="$CFLAGS"
17292CFLAGS="$CFLAGS -D_XOPEN_SOURCE" 10641CFLAGS="$CFLAGS -D_XOPEN_SOURCE"
10642for ac_func in mblen mbtowc nl_langinfo wcwidth
10643do :
10644 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
10645ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
10646if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
10647 cat >>confdefs.h <<_ACEOF
10648#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
10649_ACEOF
17293 10650
10651fi
10652done
17294 10653
10654CFLAGS="$saved_CFLAGS"
17295 10655
10656TEST_SSH_UTF8=${TEST_SSH_UTF8:=yes}
10657{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for utf8 locale support" >&5
10658$as_echo_n "checking for utf8 locale support... " >&6; }
10659if test "$cross_compiling" = yes; then :
10660 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
10661$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
17296 10662
17297for ac_func in mblen mbtowc nl_langinfo wcwidth
17298do
17299as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
17300{ echo "$as_me:$LINENO: checking for $ac_func" >&5
17301echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
17302if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
17303 echo $ECHO_N "(cached) $ECHO_C" >&6
17304else 10663else
17305 cat >conftest.$ac_ext <<_ACEOF 10664 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17306/* confdefs.h. */
17307_ACEOF
17308cat confdefs.h >>conftest.$ac_ext
17309cat >>conftest.$ac_ext <<_ACEOF
17310/* end confdefs.h. */ 10665/* end confdefs.h. */
17311/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
17312 For example, HP-UX 11i <limits.h> declares gettimeofday. */
17313#define $ac_func innocuous_$ac_func
17314
17315/* System header to define __stub macros and hopefully few prototypes,
17316 which can conflict with char $ac_func (); below.
17317 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
17318 <limits.h> exists even on freestanding compilers. */
17319
17320#ifdef __STDC__
17321# include <limits.h>
17322#else
17323# include <assert.h>
17324#endif
17325
17326#undef $ac_func
17327 10666
17328/* Override any GCC internal prototype to avoid an error. 10667#include <locale.h>
17329 Use char because int might match the return type of a GCC 10668#include <stdlib.h>
17330 builtin and then its argument prototype would still apply. */
17331#ifdef __cplusplus
17332extern "C"
17333#endif
17334char $ac_func ();
17335/* The GNU C library defines this for functions which it implements
17336 to always fail with ENOSYS. Some functions are actually named
17337 something starting with __ and the normal name is an alias. */
17338#if defined __stub_$ac_func || defined __stub___$ac_func
17339choke me
17340#endif
17341 10669
17342int 10670int
17343main () 10671main ()
17344{ 10672{
17345return $ac_func (); 10673
10674 char *loc = setlocale(LC_CTYPE, "en_US.UTF-8");
10675 if (loc != NULL)
10676 exit(0);
10677 exit(1);
10678
17346 ; 10679 ;
17347 return 0; 10680 return 0;
17348} 10681}
17349_ACEOF 10682_ACEOF
17350rm -f conftest.$ac_objext conftest$ac_exeext 10683if ac_fn_c_try_run "$LINENO"; then :
17351if { (ac_try="$ac_link" 10684 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
17352case "(($ac_try" in 10685$as_echo "yes" >&6; }
17353 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17354 *) ac_try_echo=$ac_try;;
17355esac
17356eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17357 (eval "$ac_link") 2>conftest.er1
17358 ac_status=$?
17359 grep -v '^ *+' conftest.er1 >conftest.err
17360 rm -f conftest.er1
17361 cat conftest.err >&5
17362 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17363 (exit $ac_status); } && {
17364 test -z "$ac_c_werror_flag" ||
17365 test ! -s conftest.err
17366 } && test -s conftest$ac_exeext &&
17367 $as_test_x conftest$ac_exeext; then
17368 eval "$as_ac_var=yes"
17369else 10686else
17370 echo "$as_me: failed program was:" >&5 10687 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
17371sed 's/^/| /' conftest.$ac_ext >&5 10688$as_echo "no" >&6; }
17372 10689 TEST_SSH_UTF8=no
17373 eval "$as_ac_var=no"
17374fi
17375
17376rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
17377 conftest$ac_exeext conftest.$ac_ext
17378fi 10690fi
17379ac_res=`eval echo '${'$as_ac_var'}'` 10691rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
17380 { echo "$as_me:$LINENO: result: $ac_res" >&5 10692 conftest.$ac_objext conftest.beam conftest.$ac_ext
17381echo "${ECHO_T}$ac_res" >&6; }
17382if test `eval echo '${'$as_ac_var'}'` = yes; then
17383 cat >>confdefs.h <<_ACEOF
17384#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
17385_ACEOF
17386
17387fi 10693fi
17388done
17389 10694
17390CFLAGS="$saved_CFLAGS"
17391 10695
17392cat >conftest.$ac_ext <<_ACEOF 10696cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17393/* confdefs.h. */
17394_ACEOF
17395cat confdefs.h >>conftest.$ac_ext
17396cat >>conftest.$ac_ext <<_ACEOF
17397/* end confdefs.h. */ 10697/* end confdefs.h. */
17398 #include <ctype.h> 10698 #include <ctype.h>
17399int 10699int
@@ -17404,43 +10704,18 @@ main ()
17404 return 0; 10704 return 0;
17405} 10705}
17406_ACEOF 10706_ACEOF
17407rm -f conftest.$ac_objext conftest$ac_exeext 10707if ac_fn_c_try_link "$LINENO"; then :
17408if { (ac_try="$ac_link"
17409case "(($ac_try" in
17410 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17411 *) ac_try_echo=$ac_try;;
17412esac
17413eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17414 (eval "$ac_link") 2>conftest.er1
17415 ac_status=$?
17416 grep -v '^ *+' conftest.er1 >conftest.err
17417 rm -f conftest.er1
17418 cat conftest.err >&5
17419 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17420 (exit $ac_status); } && {
17421 test -z "$ac_c_werror_flag" ||
17422 test ! -s conftest.err
17423 } && test -s conftest$ac_exeext &&
17424 $as_test_x conftest$ac_exeext; then
17425
17426cat >>confdefs.h <<\_ACEOF
17427#define HAVE_ISBLANK 1
17428_ACEOF
17429 10708
17430 10709$as_echo "#define HAVE_ISBLANK 1" >>confdefs.h
17431else
17432 echo "$as_me: failed program was:" >&5
17433sed 's/^/| /' conftest.$ac_ext >&5
17434 10710
17435 10711
17436fi 10712fi
17437 10713rm -f core conftest.err conftest.$ac_objext \
17438rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10714 conftest$ac_exeext conftest.$ac_ext
17439 conftest$ac_exeext conftest.$ac_ext
17440 10715
17441disable_pkcs11= 10716disable_pkcs11=
17442# Check whether --enable-pkcs11 was given. 10717# Check whether --enable-pkcs11 was given.
17443if test "${enable_pkcs11+set}" = set; then 10718if test "${enable_pkcs11+set}" = set; then :
17444 enableval=$enable_pkcs11; 10719 enableval=$enable_pkcs11;
17445 if test "x$enableval" = "xno" ; then 10720 if test "x$enableval" = "xno" ; then
17446 disable_pkcs11=1 10721 disable_pkcs11=1
@@ -17453,17 +10728,13 @@ fi
17453# PKCS11 depends on OpenSSL. 10728# PKCS11 depends on OpenSSL.
17454if test "x$openssl" = "xyes" && test "x$disable_pkcs11" = "x"; then 10729if test "x$openssl" = "xyes" && test "x$disable_pkcs11" = "x"; then
17455 # PKCS#11 support requires dlopen() and co 10730 # PKCS#11 support requires dlopen() and co
17456 { echo "$as_me:$LINENO: checking for library containing dlopen" >&5 10731 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
17457echo $ECHO_N "checking for library containing dlopen... $ECHO_C" >&6; } 10732$as_echo_n "checking for library containing dlopen... " >&6; }
17458if test "${ac_cv_search_dlopen+set}" = set; then 10733if ${ac_cv_search_dlopen+:} false; then :
17459 echo $ECHO_N "(cached) $ECHO_C" >&6 10734 $as_echo_n "(cached) " >&6
17460else 10735else
17461 ac_func_search_save_LIBS=$LIBS 10736 ac_func_search_save_LIBS=$LIBS
17462cat >conftest.$ac_ext <<_ACEOF 10737cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17463/* confdefs.h. */
17464_ACEOF
17465cat confdefs.h >>conftest.$ac_ext
17466cat >>conftest.$ac_ext <<_ACEOF
17467/* end confdefs.h. */ 10738/* end confdefs.h. */
17468 10739
17469/* Override any GCC internal prototype to avoid an error. 10740/* Override any GCC internal prototype to avoid an error.
@@ -17488,55 +10759,30 @@ for ac_lib in '' dl; do
17488 ac_res=-l$ac_lib 10759 ac_res=-l$ac_lib
17489 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 10760 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
17490 fi 10761 fi
17491 rm -f conftest.$ac_objext conftest$ac_exeext 10762 if ac_fn_c_try_link "$LINENO"; then :
17492if { (ac_try="$ac_link"
17493case "(($ac_try" in
17494 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17495 *) ac_try_echo=$ac_try;;
17496esac
17497eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17498 (eval "$ac_link") 2>conftest.er1
17499 ac_status=$?
17500 grep -v '^ *+' conftest.er1 >conftest.err
17501 rm -f conftest.er1
17502 cat conftest.err >&5
17503 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17504 (exit $ac_status); } && {
17505 test -z "$ac_c_werror_flag" ||
17506 test ! -s conftest.err
17507 } && test -s conftest$ac_exeext &&
17508 $as_test_x conftest$ac_exeext; then
17509 ac_cv_search_dlopen=$ac_res 10763 ac_cv_search_dlopen=$ac_res
17510else
17511 echo "$as_me: failed program was:" >&5
17512sed 's/^/| /' conftest.$ac_ext >&5
17513
17514
17515fi 10764fi
17516 10765rm -f core conftest.err conftest.$ac_objext \
17517rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10766 conftest$ac_exeext
17518 conftest$ac_exeext 10767 if ${ac_cv_search_dlopen+:} false; then :
17519 if test "${ac_cv_search_dlopen+set}" = set; then
17520 break 10768 break
17521fi 10769fi
17522done 10770done
17523if test "${ac_cv_search_dlopen+set}" = set; then 10771if ${ac_cv_search_dlopen+:} false; then :
17524 : 10772
17525else 10773else
17526 ac_cv_search_dlopen=no 10774 ac_cv_search_dlopen=no
17527fi 10775fi
17528rm conftest.$ac_ext 10776rm conftest.$ac_ext
17529LIBS=$ac_func_search_save_LIBS 10777LIBS=$ac_func_search_save_LIBS
17530fi 10778fi
17531{ echo "$as_me:$LINENO: result: $ac_cv_search_dlopen" >&5 10779{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
17532echo "${ECHO_T}$ac_cv_search_dlopen" >&6; } 10780$as_echo "$ac_cv_search_dlopen" >&6; }
17533ac_res=$ac_cv_search_dlopen 10781ac_res=$ac_cv_search_dlopen
17534if test "$ac_res" != no; then 10782if test "$ac_res" != no; then :
17535 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 10783 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
17536 10784
17537cat >>confdefs.h <<\_ACEOF 10785$as_echo "#define ENABLE_PKCS11 /**/" >>confdefs.h
17538#define ENABLE_PKCS11
17539_ACEOF
17540 10786
17541 10787
17542fi 10788fi
@@ -17544,106 +10790,17 @@ fi
17544fi 10790fi
17545 10791
17546# IRIX has a const char return value for gai_strerror() 10792# IRIX has a const char return value for gai_strerror()
17547
17548for ac_func in gai_strerror 10793for ac_func in gai_strerror
17549do 10794do :
17550as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 10795 ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
17551{ echo "$as_me:$LINENO: checking for $ac_func" >&5 10796if test "x$ac_cv_func_gai_strerror" = xyes; then :
17552echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
17553if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
17554 echo $ECHO_N "(cached) $ECHO_C" >&6
17555else
17556 cat >conftest.$ac_ext <<_ACEOF
17557/* confdefs.h. */
17558_ACEOF
17559cat confdefs.h >>conftest.$ac_ext
17560cat >>conftest.$ac_ext <<_ACEOF
17561/* end confdefs.h. */
17562/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
17563 For example, HP-UX 11i <limits.h> declares gettimeofday. */
17564#define $ac_func innocuous_$ac_func
17565
17566/* System header to define __stub macros and hopefully few prototypes,
17567 which can conflict with char $ac_func (); below.
17568 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
17569 <limits.h> exists even on freestanding compilers. */
17570
17571#ifdef __STDC__
17572# include <limits.h>
17573#else
17574# include <assert.h>
17575#endif
17576
17577#undef $ac_func
17578
17579/* Override any GCC internal prototype to avoid an error.
17580 Use char because int might match the return type of a GCC
17581 builtin and then its argument prototype would still apply. */
17582#ifdef __cplusplus
17583extern "C"
17584#endif
17585char $ac_func ();
17586/* The GNU C library defines this for functions which it implements
17587 to always fail with ENOSYS. Some functions are actually named
17588 something starting with __ and the normal name is an alias. */
17589#if defined __stub_$ac_func || defined __stub___$ac_func
17590choke me
17591#endif
17592
17593int
17594main ()
17595{
17596return $ac_func ();
17597 ;
17598 return 0;
17599}
17600_ACEOF
17601rm -f conftest.$ac_objext conftest$ac_exeext
17602if { (ac_try="$ac_link"
17603case "(($ac_try" in
17604 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17605 *) ac_try_echo=$ac_try;;
17606esac
17607eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17608 (eval "$ac_link") 2>conftest.er1
17609 ac_status=$?
17610 grep -v '^ *+' conftest.er1 >conftest.err
17611 rm -f conftest.er1
17612 cat conftest.err >&5
17613 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17614 (exit $ac_status); } && {
17615 test -z "$ac_c_werror_flag" ||
17616 test ! -s conftest.err
17617 } && test -s conftest$ac_exeext &&
17618 $as_test_x conftest$ac_exeext; then
17619 eval "$as_ac_var=yes"
17620else
17621 echo "$as_me: failed program was:" >&5
17622sed 's/^/| /' conftest.$ac_ext >&5
17623
17624 eval "$as_ac_var=no"
17625fi
17626
17627rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
17628 conftest$ac_exeext conftest.$ac_ext
17629fi
17630ac_res=`eval echo '${'$as_ac_var'}'`
17631 { echo "$as_me:$LINENO: result: $ac_res" >&5
17632echo "${ECHO_T}$ac_res" >&6; }
17633if test `eval echo '${'$as_ac_var'}'` = yes; then
17634 cat >>confdefs.h <<_ACEOF 10797 cat >>confdefs.h <<_ACEOF
17635#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
17636_ACEOF
17637
17638 cat >>confdefs.h <<\_ACEOF
17639#define HAVE_GAI_STRERROR 1 10798#define HAVE_GAI_STRERROR 1
17640_ACEOF 10799_ACEOF
17641 10800
17642 cat >conftest.$ac_ext <<_ACEOF 10801 $as_echo "#define HAVE_GAI_STRERROR 1" >>confdefs.h
17643/* confdefs.h. */ 10802
17644_ACEOF 10803 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17645cat confdefs.h >>conftest.$ac_ext
17646cat >>conftest.$ac_ext <<_ACEOF
17647/* end confdefs.h. */ 10804/* end confdefs.h. */
17648 10805
17649#include <sys/types.h> 10806#include <sys/types.h>
@@ -17663,52 +10820,24 @@ main ()
17663 return 0; 10820 return 0;
17664} 10821}
17665_ACEOF 10822_ACEOF
17666rm -f conftest.$ac_objext 10823if ac_fn_c_try_compile "$LINENO"; then :
17667if { (ac_try="$ac_compile"
17668case "(($ac_try" in
17669 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17670 *) ac_try_echo=$ac_try;;
17671esac
17672eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17673 (eval "$ac_compile") 2>conftest.er1
17674 ac_status=$?
17675 grep -v '^ *+' conftest.er1 >conftest.err
17676 rm -f conftest.er1
17677 cat conftest.err >&5
17678 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17679 (exit $ac_status); } && {
17680 test -z "$ac_c_werror_flag" ||
17681 test ! -s conftest.err
17682 } && test -s conftest.$ac_objext; then
17683
17684
17685cat >>confdefs.h <<\_ACEOF
17686#define HAVE_CONST_GAI_STRERROR_PROTO 1
17687_ACEOF
17688 10824
17689else
17690 echo "$as_me: failed program was:" >&5
17691sed 's/^/| /' conftest.$ac_ext >&5
17692 10825
10826$as_echo "#define HAVE_CONST_GAI_STRERROR_PROTO 1" >>confdefs.h
17693 10827
17694fi 10828fi
17695
17696rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 10829rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
17697fi 10830fi
17698done 10831done
17699 10832
17700 10833
17701{ echo "$as_me:$LINENO: checking for library containing nanosleep" >&5 10834{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
17702echo $ECHO_N "checking for library containing nanosleep... $ECHO_C" >&6; } 10835$as_echo_n "checking for library containing nanosleep... " >&6; }
17703if test "${ac_cv_search_nanosleep+set}" = set; then 10836if ${ac_cv_search_nanosleep+:} false; then :
17704 echo $ECHO_N "(cached) $ECHO_C" >&6 10837 $as_echo_n "(cached) " >&6
17705else 10838else
17706 ac_func_search_save_LIBS=$LIBS 10839 ac_func_search_save_LIBS=$LIBS
17707cat >conftest.$ac_ext <<_ACEOF 10840cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17708/* confdefs.h. */
17709_ACEOF
17710cat confdefs.h >>conftest.$ac_ext
17711cat >>conftest.$ac_ext <<_ACEOF
17712/* end confdefs.h. */ 10841/* end confdefs.h. */
17713 10842
17714/* Override any GCC internal prototype to avoid an error. 10843/* Override any GCC internal prototype to avoid an error.
@@ -17733,70 +10862,41 @@ for ac_lib in '' rt posix4; do
17733 ac_res=-l$ac_lib 10862 ac_res=-l$ac_lib
17734 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 10863 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
17735 fi 10864 fi
17736 rm -f conftest.$ac_objext conftest$ac_exeext 10865 if ac_fn_c_try_link "$LINENO"; then :
17737if { (ac_try="$ac_link"
17738case "(($ac_try" in
17739 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17740 *) ac_try_echo=$ac_try;;
17741esac
17742eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17743 (eval "$ac_link") 2>conftest.er1
17744 ac_status=$?
17745 grep -v '^ *+' conftest.er1 >conftest.err
17746 rm -f conftest.er1
17747 cat conftest.err >&5
17748 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17749 (exit $ac_status); } && {
17750 test -z "$ac_c_werror_flag" ||
17751 test ! -s conftest.err
17752 } && test -s conftest$ac_exeext &&
17753 $as_test_x conftest$ac_exeext; then
17754 ac_cv_search_nanosleep=$ac_res 10866 ac_cv_search_nanosleep=$ac_res
17755else
17756 echo "$as_me: failed program was:" >&5
17757sed 's/^/| /' conftest.$ac_ext >&5
17758
17759
17760fi 10867fi
17761 10868rm -f core conftest.err conftest.$ac_objext \
17762rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10869 conftest$ac_exeext
17763 conftest$ac_exeext 10870 if ${ac_cv_search_nanosleep+:} false; then :
17764 if test "${ac_cv_search_nanosleep+set}" = set; then
17765 break 10871 break
17766fi 10872fi
17767done 10873done
17768if test "${ac_cv_search_nanosleep+set}" = set; then 10874if ${ac_cv_search_nanosleep+:} false; then :
17769 : 10875
17770else 10876else
17771 ac_cv_search_nanosleep=no 10877 ac_cv_search_nanosleep=no
17772fi 10878fi
17773rm conftest.$ac_ext 10879rm conftest.$ac_ext
17774LIBS=$ac_func_search_save_LIBS 10880LIBS=$ac_func_search_save_LIBS
17775fi 10881fi
17776{ echo "$as_me:$LINENO: result: $ac_cv_search_nanosleep" >&5 10882{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
17777echo "${ECHO_T}$ac_cv_search_nanosleep" >&6; } 10883$as_echo "$ac_cv_search_nanosleep" >&6; }
17778ac_res=$ac_cv_search_nanosleep 10884ac_res=$ac_cv_search_nanosleep
17779if test "$ac_res" != no; then 10885if test "$ac_res" != no; then :
17780 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 10886 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
17781 10887
17782cat >>confdefs.h <<\_ACEOF 10888$as_echo "#define HAVE_NANOSLEEP 1" >>confdefs.h
17783#define HAVE_NANOSLEEP 1
17784_ACEOF
17785 10889
17786fi 10890fi
17787 10891
17788 10892
17789{ echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5 10893{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
17790echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6; } 10894$as_echo_n "checking for library containing clock_gettime... " >&6; }
17791if test "${ac_cv_search_clock_gettime+set}" = set; then 10895if ${ac_cv_search_clock_gettime+:} false; then :
17792 echo $ECHO_N "(cached) $ECHO_C" >&6 10896 $as_echo_n "(cached) " >&6
17793else 10897else
17794 ac_func_search_save_LIBS=$LIBS 10898 ac_func_search_save_LIBS=$LIBS
17795cat >conftest.$ac_ext <<_ACEOF 10899cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17796/* confdefs.h. */
17797_ACEOF
17798cat confdefs.h >>conftest.$ac_ext
17799cat >>conftest.$ac_ext <<_ACEOF
17800/* end confdefs.h. */ 10900/* end confdefs.h. */
17801 10901
17802/* Override any GCC internal prototype to avoid an error. 10902/* Override any GCC internal prototype to avoid an error.
@@ -17821,201 +10921,42 @@ for ac_lib in '' rt; do
17821 ac_res=-l$ac_lib 10921 ac_res=-l$ac_lib
17822 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 10922 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
17823 fi 10923 fi
17824 rm -f conftest.$ac_objext conftest$ac_exeext 10924 if ac_fn_c_try_link "$LINENO"; then :
17825if { (ac_try="$ac_link"
17826case "(($ac_try" in
17827 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17828 *) ac_try_echo=$ac_try;;
17829esac
17830eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17831 (eval "$ac_link") 2>conftest.er1
17832 ac_status=$?
17833 grep -v '^ *+' conftest.er1 >conftest.err
17834 rm -f conftest.er1
17835 cat conftest.err >&5
17836 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17837 (exit $ac_status); } && {
17838 test -z "$ac_c_werror_flag" ||
17839 test ! -s conftest.err
17840 } && test -s conftest$ac_exeext &&
17841 $as_test_x conftest$ac_exeext; then
17842 ac_cv_search_clock_gettime=$ac_res 10925 ac_cv_search_clock_gettime=$ac_res
17843else
17844 echo "$as_me: failed program was:" >&5
17845sed 's/^/| /' conftest.$ac_ext >&5
17846
17847
17848fi 10926fi
17849 10927rm -f core conftest.err conftest.$ac_objext \
17850rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 10928 conftest$ac_exeext
17851 conftest$ac_exeext 10929 if ${ac_cv_search_clock_gettime+:} false; then :
17852 if test "${ac_cv_search_clock_gettime+set}" = set; then
17853 break 10930 break
17854fi 10931fi
17855done 10932done
17856if test "${ac_cv_search_clock_gettime+set}" = set; then 10933if ${ac_cv_search_clock_gettime+:} false; then :
17857 : 10934
17858else 10935else
17859 ac_cv_search_clock_gettime=no 10936 ac_cv_search_clock_gettime=no
17860fi 10937fi
17861rm conftest.$ac_ext 10938rm conftest.$ac_ext
17862LIBS=$ac_func_search_save_LIBS 10939LIBS=$ac_func_search_save_LIBS
17863fi 10940fi
17864{ echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5 10941{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
17865echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6; } 10942$as_echo "$ac_cv_search_clock_gettime" >&6; }
17866ac_res=$ac_cv_search_clock_gettime 10943ac_res=$ac_cv_search_clock_gettime
17867if test "$ac_res" != no; then 10944if test "$ac_res" != no; then :
17868 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 10945 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
17869 10946
17870cat >>confdefs.h <<\_ACEOF 10947$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
17871#define HAVE_CLOCK_GETTIME 1
17872_ACEOF
17873 10948
17874fi 10949fi
17875 10950
17876 10951
17877{ echo "$as_me:$LINENO: checking whether getrusage is declared" >&5 10952ac_fn_c_check_decl "$LINENO" "getrusage" "ac_cv_have_decl_getrusage" "$ac_includes_default"
17878echo $ECHO_N "checking whether getrusage is declared... $ECHO_C" >&6; } 10953if test "x$ac_cv_have_decl_getrusage" = xyes; then :
17879if test "${ac_cv_have_decl_getrusage+set}" = set; then 10954 for ac_func in getrusage
17880 echo $ECHO_N "(cached) $ECHO_C" >&6 10955do :
17881else 10956 ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage"
17882 cat >conftest.$ac_ext <<_ACEOF 10957if test "x$ac_cv_func_getrusage" = xyes; then :
17883/* confdefs.h. */
17884_ACEOF
17885cat confdefs.h >>conftest.$ac_ext
17886cat >>conftest.$ac_ext <<_ACEOF
17887/* end confdefs.h. */
17888$ac_includes_default
17889int
17890main ()
17891{
17892#ifndef getrusage
17893 (void) getrusage;
17894#endif
17895
17896 ;
17897 return 0;
17898}
17899_ACEOF
17900rm -f conftest.$ac_objext
17901if { (ac_try="$ac_compile"
17902case "(($ac_try" in
17903 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17904 *) ac_try_echo=$ac_try;;
17905esac
17906eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17907 (eval "$ac_compile") 2>conftest.er1
17908 ac_status=$?
17909 grep -v '^ *+' conftest.er1 >conftest.err
17910 rm -f conftest.er1
17911 cat conftest.err >&5
17912 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17913 (exit $ac_status); } && {
17914 test -z "$ac_c_werror_flag" ||
17915 test ! -s conftest.err
17916 } && test -s conftest.$ac_objext; then
17917 ac_cv_have_decl_getrusage=yes
17918else
17919 echo "$as_me: failed program was:" >&5
17920sed 's/^/| /' conftest.$ac_ext >&5
17921
17922 ac_cv_have_decl_getrusage=no
17923fi
17924
17925rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
17926fi
17927{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getrusage" >&5
17928echo "${ECHO_T}$ac_cv_have_decl_getrusage" >&6; }
17929if test $ac_cv_have_decl_getrusage = yes; then
17930
17931for ac_func in getrusage
17932do
17933as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
17934{ echo "$as_me:$LINENO: checking for $ac_func" >&5
17935echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
17936if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
17937 echo $ECHO_N "(cached) $ECHO_C" >&6
17938else
17939 cat >conftest.$ac_ext <<_ACEOF
17940/* confdefs.h. */
17941_ACEOF
17942cat confdefs.h >>conftest.$ac_ext
17943cat >>conftest.$ac_ext <<_ACEOF
17944/* end confdefs.h. */
17945/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
17946 For example, HP-UX 11i <limits.h> declares gettimeofday. */
17947#define $ac_func innocuous_$ac_func
17948
17949/* System header to define __stub macros and hopefully few prototypes,
17950 which can conflict with char $ac_func (); below.
17951 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
17952 <limits.h> exists even on freestanding compilers. */
17953
17954#ifdef __STDC__
17955# include <limits.h>
17956#else
17957# include <assert.h>
17958#endif
17959
17960#undef $ac_func
17961
17962/* Override any GCC internal prototype to avoid an error.
17963 Use char because int might match the return type of a GCC
17964 builtin and then its argument prototype would still apply. */
17965#ifdef __cplusplus
17966extern "C"
17967#endif
17968char $ac_func ();
17969/* The GNU C library defines this for functions which it implements
17970 to always fail with ENOSYS. Some functions are actually named
17971 something starting with __ and the normal name is an alias. */
17972#if defined __stub_$ac_func || defined __stub___$ac_func
17973choke me
17974#endif
17975
17976int
17977main ()
17978{
17979return $ac_func ();
17980 ;
17981 return 0;
17982}
17983_ACEOF
17984rm -f conftest.$ac_objext conftest$ac_exeext
17985if { (ac_try="$ac_link"
17986case "(($ac_try" in
17987 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17988 *) ac_try_echo=$ac_try;;
17989esac
17990eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17991 (eval "$ac_link") 2>conftest.er1
17992 ac_status=$?
17993 grep -v '^ *+' conftest.er1 >conftest.err
17994 rm -f conftest.er1
17995 cat conftest.err >&5
17996 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17997 (exit $ac_status); } && {
17998 test -z "$ac_c_werror_flag" ||
17999 test ! -s conftest.err
18000 } && test -s conftest$ac_exeext &&
18001 $as_test_x conftest$ac_exeext; then
18002 eval "$as_ac_var=yes"
18003else
18004 echo "$as_me: failed program was:" >&5
18005sed 's/^/| /' conftest.$ac_ext >&5
18006
18007 eval "$as_ac_var=no"
18008fi
18009
18010rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
18011 conftest$ac_exeext conftest.$ac_ext
18012fi
18013ac_res=`eval echo '${'$as_ac_var'}'`
18014 { echo "$as_me:$LINENO: result: $ac_res" >&5
18015echo "${ECHO_T}$ac_res" >&6; }
18016if test `eval echo '${'$as_ac_var'}'` = yes; then
18017 cat >>confdefs.h <<_ACEOF 10958 cat >>confdefs.h <<_ACEOF
18018#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 10959#define HAVE_GETRUSAGE 1
18019_ACEOF 10960_ACEOF
18020 10961
18021fi 10962fi
@@ -18023,153 +10964,19 @@ done
18023 10964
18024fi 10965fi
18025 10966
18026{ echo "$as_me:$LINENO: checking whether strsep is declared" >&5 10967ac_fn_c_check_decl "$LINENO" "strsep" "ac_cv_have_decl_strsep" "
18027echo $ECHO_N "checking whether strsep is declared... $ECHO_C" >&6; }
18028if test "${ac_cv_have_decl_strsep+set}" = set; then
18029 echo $ECHO_N "(cached) $ECHO_C" >&6
18030else
18031 cat >conftest.$ac_ext <<_ACEOF
18032/* confdefs.h. */
18033_ACEOF
18034cat confdefs.h >>conftest.$ac_ext
18035cat >>conftest.$ac_ext <<_ACEOF
18036/* end confdefs.h. */
18037
18038#ifdef HAVE_STRING_H 10968#ifdef HAVE_STRING_H
18039# include <string.h> 10969# include <string.h>
18040#endif 10970#endif
18041 10971
18042 10972"
18043int 10973if test "x$ac_cv_have_decl_strsep" = xyes; then :
18044main () 10974 for ac_func in strsep
18045{ 10975do :
18046#ifndef strsep 10976 ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep"
18047 (void) strsep; 10977if test "x$ac_cv_func_strsep" = xyes; then :
18048#endif
18049
18050 ;
18051 return 0;
18052}
18053_ACEOF
18054rm -f conftest.$ac_objext
18055if { (ac_try="$ac_compile"
18056case "(($ac_try" in
18057 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18058 *) ac_try_echo=$ac_try;;
18059esac
18060eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18061 (eval "$ac_compile") 2>conftest.er1
18062 ac_status=$?
18063 grep -v '^ *+' conftest.er1 >conftest.err
18064 rm -f conftest.er1
18065 cat conftest.err >&5
18066 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18067 (exit $ac_status); } && {
18068 test -z "$ac_c_werror_flag" ||
18069 test ! -s conftest.err
18070 } && test -s conftest.$ac_objext; then
18071 ac_cv_have_decl_strsep=yes
18072else
18073 echo "$as_me: failed program was:" >&5
18074sed 's/^/| /' conftest.$ac_ext >&5
18075
18076 ac_cv_have_decl_strsep=no
18077fi
18078
18079rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18080fi
18081{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsep" >&5
18082echo "${ECHO_T}$ac_cv_have_decl_strsep" >&6; }
18083if test $ac_cv_have_decl_strsep = yes; then
18084
18085for ac_func in strsep
18086do
18087as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
18088{ echo "$as_me:$LINENO: checking for $ac_func" >&5
18089echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
18090if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
18091 echo $ECHO_N "(cached) $ECHO_C" >&6
18092else
18093 cat >conftest.$ac_ext <<_ACEOF
18094/* confdefs.h. */
18095_ACEOF
18096cat confdefs.h >>conftest.$ac_ext
18097cat >>conftest.$ac_ext <<_ACEOF
18098/* end confdefs.h. */
18099/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
18100 For example, HP-UX 11i <limits.h> declares gettimeofday. */
18101#define $ac_func innocuous_$ac_func
18102
18103/* System header to define __stub macros and hopefully few prototypes,
18104 which can conflict with char $ac_func (); below.
18105 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
18106 <limits.h> exists even on freestanding compilers. */
18107
18108#ifdef __STDC__
18109# include <limits.h>
18110#else
18111# include <assert.h>
18112#endif
18113
18114#undef $ac_func
18115
18116/* Override any GCC internal prototype to avoid an error.
18117 Use char because int might match the return type of a GCC
18118 builtin and then its argument prototype would still apply. */
18119#ifdef __cplusplus
18120extern "C"
18121#endif
18122char $ac_func ();
18123/* The GNU C library defines this for functions which it implements
18124 to always fail with ENOSYS. Some functions are actually named
18125 something starting with __ and the normal name is an alias. */
18126#if defined __stub_$ac_func || defined __stub___$ac_func
18127choke me
18128#endif
18129
18130int
18131main ()
18132{
18133return $ac_func ();
18134 ;
18135 return 0;
18136}
18137_ACEOF
18138rm -f conftest.$ac_objext conftest$ac_exeext
18139if { (ac_try="$ac_link"
18140case "(($ac_try" in
18141 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18142 *) ac_try_echo=$ac_try;;
18143esac
18144eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18145 (eval "$ac_link") 2>conftest.er1
18146 ac_status=$?
18147 grep -v '^ *+' conftest.er1 >conftest.err
18148 rm -f conftest.er1
18149 cat conftest.err >&5
18150 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18151 (exit $ac_status); } && {
18152 test -z "$ac_c_werror_flag" ||
18153 test ! -s conftest.err
18154 } && test -s conftest$ac_exeext &&
18155 $as_test_x conftest$ac_exeext; then
18156 eval "$as_ac_var=yes"
18157else
18158 echo "$as_me: failed program was:" >&5
18159sed 's/^/| /' conftest.$ac_ext >&5
18160
18161 eval "$as_ac_var=no"
18162fi
18163
18164rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
18165 conftest$ac_exeext conftest.$ac_ext
18166fi
18167ac_res=`eval echo '${'$as_ac_var'}'`
18168 { echo "$as_me:$LINENO: result: $ac_res" >&5
18169echo "${ECHO_T}$ac_res" >&6; }
18170if test `eval echo '${'$as_ac_var'}'` = yes; then
18171 cat >>confdefs.h <<_ACEOF 10978 cat >>confdefs.h <<_ACEOF
18172#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 10979#define HAVE_STRSEP 1
18173_ACEOF 10980_ACEOF
18174 10981
18175fi 10982fi
@@ -18178,155 +10985,19 @@ done
18178fi 10985fi
18179 10986
18180 10987
18181{ echo "$as_me:$LINENO: checking whether tcsendbreak is declared" >&5 10988ac_fn_c_check_decl "$LINENO" "tcsendbreak" "ac_cv_have_decl_tcsendbreak" "#include <termios.h>
18182echo $ECHO_N "checking whether tcsendbreak is declared... $ECHO_C" >&6; }
18183if test "${ac_cv_have_decl_tcsendbreak+set}" = set; then
18184 echo $ECHO_N "(cached) $ECHO_C" >&6
18185else
18186 cat >conftest.$ac_ext <<_ACEOF
18187/* confdefs.h. */
18188_ACEOF
18189cat confdefs.h >>conftest.$ac_ext
18190cat >>conftest.$ac_ext <<_ACEOF
18191/* end confdefs.h. */
18192#include <termios.h>
18193
18194
18195int
18196main ()
18197{
18198#ifndef tcsendbreak
18199 (void) tcsendbreak;
18200#endif
18201 10989
18202 ; 10990"
18203 return 0; 10991if test "x$ac_cv_have_decl_tcsendbreak" = xyes; then :
18204} 10992 $as_echo "#define HAVE_TCSENDBREAK 1" >>confdefs.h
18205_ACEOF
18206rm -f conftest.$ac_objext
18207if { (ac_try="$ac_compile"
18208case "(($ac_try" in
18209 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18210 *) ac_try_echo=$ac_try;;
18211esac
18212eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18213 (eval "$ac_compile") 2>conftest.er1
18214 ac_status=$?
18215 grep -v '^ *+' conftest.er1 >conftest.err
18216 rm -f conftest.er1
18217 cat conftest.err >&5
18218 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18219 (exit $ac_status); } && {
18220 test -z "$ac_c_werror_flag" ||
18221 test ! -s conftest.err
18222 } && test -s conftest.$ac_objext; then
18223 ac_cv_have_decl_tcsendbreak=yes
18224else
18225 echo "$as_me: failed program was:" >&5
18226sed 's/^/| /' conftest.$ac_ext >&5
18227
18228 ac_cv_have_decl_tcsendbreak=no
18229fi
18230
18231rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18232fi
18233{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tcsendbreak" >&5
18234echo "${ECHO_T}$ac_cv_have_decl_tcsendbreak" >&6; }
18235if test $ac_cv_have_decl_tcsendbreak = yes; then
18236 cat >>confdefs.h <<\_ACEOF
18237#define HAVE_TCSENDBREAK 1
18238_ACEOF
18239
18240else
18241
18242for ac_func in tcsendbreak
18243do
18244as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
18245{ echo "$as_me:$LINENO: checking for $ac_func" >&5
18246echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
18247if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
18248 echo $ECHO_N "(cached) $ECHO_C" >&6
18249else
18250 cat >conftest.$ac_ext <<_ACEOF
18251/* confdefs.h. */
18252_ACEOF
18253cat confdefs.h >>conftest.$ac_ext
18254cat >>conftest.$ac_ext <<_ACEOF
18255/* end confdefs.h. */
18256/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
18257 For example, HP-UX 11i <limits.h> declares gettimeofday. */
18258#define $ac_func innocuous_$ac_func
18259
18260/* System header to define __stub macros and hopefully few prototypes,
18261 which can conflict with char $ac_func (); below.
18262 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
18263 <limits.h> exists even on freestanding compilers. */
18264
18265#ifdef __STDC__
18266# include <limits.h>
18267#else
18268# include <assert.h>
18269#endif
18270
18271#undef $ac_func
18272
18273/* Override any GCC internal prototype to avoid an error.
18274 Use char because int might match the return type of a GCC
18275 builtin and then its argument prototype would still apply. */
18276#ifdef __cplusplus
18277extern "C"
18278#endif
18279char $ac_func ();
18280/* The GNU C library defines this for functions which it implements
18281 to always fail with ENOSYS. Some functions are actually named
18282 something starting with __ and the normal name is an alias. */
18283#if defined __stub_$ac_func || defined __stub___$ac_func
18284choke me
18285#endif
18286 10993
18287int
18288main ()
18289{
18290return $ac_func ();
18291 ;
18292 return 0;
18293}
18294_ACEOF
18295rm -f conftest.$ac_objext conftest$ac_exeext
18296if { (ac_try="$ac_link"
18297case "(($ac_try" in
18298 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18299 *) ac_try_echo=$ac_try;;
18300esac
18301eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18302 (eval "$ac_link") 2>conftest.er1
18303 ac_status=$?
18304 grep -v '^ *+' conftest.er1 >conftest.err
18305 rm -f conftest.er1
18306 cat conftest.err >&5
18307 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18308 (exit $ac_status); } && {
18309 test -z "$ac_c_werror_flag" ||
18310 test ! -s conftest.err
18311 } && test -s conftest$ac_exeext &&
18312 $as_test_x conftest$ac_exeext; then
18313 eval "$as_ac_var=yes"
18314else 10994else
18315 echo "$as_me: failed program was:" >&5 10995 for ac_func in tcsendbreak
18316sed 's/^/| /' conftest.$ac_ext >&5 10996do :
18317 10997 ac_fn_c_check_func "$LINENO" "tcsendbreak" "ac_cv_func_tcsendbreak"
18318 eval "$as_ac_var=no" 10998if test "x$ac_cv_func_tcsendbreak" = xyes; then :
18319fi
18320
18321rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
18322 conftest$ac_exeext conftest.$ac_ext
18323fi
18324ac_res=`eval echo '${'$as_ac_var'}'`
18325 { echo "$as_me:$LINENO: result: $ac_res" >&5
18326echo "${ECHO_T}$ac_res" >&6; }
18327if test `eval echo '${'$as_ac_var'}'` = yes; then
18328 cat >>confdefs.h <<_ACEOF 10999 cat >>confdefs.h <<_ACEOF
18329#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11000#define HAVE_TCSENDBREAK 1
18330_ACEOF 11001_ACEOF
18331 11002
18332fi 11003fi
@@ -18335,161 +11006,36 @@ done
18335fi 11006fi
18336 11007
18337 11008
18338{ echo "$as_me:$LINENO: checking whether h_errno is declared" >&5 11009ac_fn_c_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "#include <netdb.h>
18339echo $ECHO_N "checking whether h_errno is declared... $ECHO_C" >&6; } 11010"
18340if test "${ac_cv_have_decl_h_errno+set}" = set; then 11011if test "x$ac_cv_have_decl_h_errno" = xyes; then :
18341 echo $ECHO_N "(cached) $ECHO_C" >&6 11012 ac_have_decl=1
18342else
18343 cat >conftest.$ac_ext <<_ACEOF
18344/* confdefs.h. */
18345_ACEOF
18346cat confdefs.h >>conftest.$ac_ext
18347cat >>conftest.$ac_ext <<_ACEOF
18348/* end confdefs.h. */
18349#include <netdb.h>
18350
18351int
18352main ()
18353{
18354#ifndef h_errno
18355 (void) h_errno;
18356#endif
18357
18358 ;
18359 return 0;
18360}
18361_ACEOF
18362rm -f conftest.$ac_objext
18363if { (ac_try="$ac_compile"
18364case "(($ac_try" in
18365 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18366 *) ac_try_echo=$ac_try;;
18367esac
18368eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18369 (eval "$ac_compile") 2>conftest.er1
18370 ac_status=$?
18371 grep -v '^ *+' conftest.er1 >conftest.err
18372 rm -f conftest.er1
18373 cat conftest.err >&5
18374 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18375 (exit $ac_status); } && {
18376 test -z "$ac_c_werror_flag" ||
18377 test ! -s conftest.err
18378 } && test -s conftest.$ac_objext; then
18379 ac_cv_have_decl_h_errno=yes
18380else 11013else
18381 echo "$as_me: failed program was:" >&5 11014 ac_have_decl=0
18382sed 's/^/| /' conftest.$ac_ext >&5
18383
18384 ac_cv_have_decl_h_errno=no
18385fi
18386
18387rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18388fi 11015fi
18389{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_h_errno" >&5
18390echo "${ECHO_T}$ac_cv_have_decl_h_errno" >&6; }
18391if test $ac_cv_have_decl_h_errno = yes; then
18392 11016
18393cat >>confdefs.h <<_ACEOF 11017cat >>confdefs.h <<_ACEOF
18394#define HAVE_DECL_H_ERRNO 1 11018#define HAVE_DECL_H_ERRNO $ac_have_decl
18395_ACEOF 11019_ACEOF
18396 11020
18397 11021
18398else 11022ac_fn_c_check_decl "$LINENO" "SHUT_RD" "ac_cv_have_decl_SHUT_RD" "
18399 cat >>confdefs.h <<_ACEOF
18400#define HAVE_DECL_H_ERRNO 0
18401_ACEOF
18402
18403
18404fi
18405
18406
18407
18408{ echo "$as_me:$LINENO: checking whether SHUT_RD is declared" >&5
18409echo $ECHO_N "checking whether SHUT_RD is declared... $ECHO_C" >&6; }
18410if test "${ac_cv_have_decl_SHUT_RD+set}" = set; then
18411 echo $ECHO_N "(cached) $ECHO_C" >&6
18412else
18413 cat >conftest.$ac_ext <<_ACEOF
18414/* confdefs.h. */
18415_ACEOF
18416cat confdefs.h >>conftest.$ac_ext
18417cat >>conftest.$ac_ext <<_ACEOF
18418/* end confdefs.h. */
18419
18420#include <sys/types.h> 11023#include <sys/types.h>
18421#include <sys/socket.h> 11024#include <sys/socket.h>
18422 11025
18423 11026"
18424int 11027if test "x$ac_cv_have_decl_SHUT_RD" = xyes; then :
18425main () 11028 ac_have_decl=1
18426{
18427#ifndef SHUT_RD
18428 (void) SHUT_RD;
18429#endif
18430
18431 ;
18432 return 0;
18433}
18434_ACEOF
18435rm -f conftest.$ac_objext
18436if { (ac_try="$ac_compile"
18437case "(($ac_try" in
18438 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18439 *) ac_try_echo=$ac_try;;
18440esac
18441eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18442 (eval "$ac_compile") 2>conftest.er1
18443 ac_status=$?
18444 grep -v '^ *+' conftest.er1 >conftest.err
18445 rm -f conftest.er1
18446 cat conftest.err >&5
18447 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18448 (exit $ac_status); } && {
18449 test -z "$ac_c_werror_flag" ||
18450 test ! -s conftest.err
18451 } && test -s conftest.$ac_objext; then
18452 ac_cv_have_decl_SHUT_RD=yes
18453else 11029else
18454 echo "$as_me: failed program was:" >&5 11030 ac_have_decl=0
18455sed 's/^/| /' conftest.$ac_ext >&5
18456
18457 ac_cv_have_decl_SHUT_RD=no
18458fi 11031fi
18459 11032
18460rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18461fi
18462{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_SHUT_RD" >&5
18463echo "${ECHO_T}$ac_cv_have_decl_SHUT_RD" >&6; }
18464if test $ac_cv_have_decl_SHUT_RD = yes; then
18465
18466cat >>confdefs.h <<_ACEOF 11033cat >>confdefs.h <<_ACEOF
18467#define HAVE_DECL_SHUT_RD 1 11034#define HAVE_DECL_SHUT_RD $ac_have_decl
18468_ACEOF
18469
18470
18471else
18472 cat >>confdefs.h <<_ACEOF
18473#define HAVE_DECL_SHUT_RD 0
18474_ACEOF 11035_ACEOF
18475 11036
18476 11037
18477fi 11038ac_fn_c_check_decl "$LINENO" "O_NONBLOCK" "ac_cv_have_decl_O_NONBLOCK" "
18478
18479
18480
18481{ echo "$as_me:$LINENO: checking whether O_NONBLOCK is declared" >&5
18482echo $ECHO_N "checking whether O_NONBLOCK is declared... $ECHO_C" >&6; }
18483if test "${ac_cv_have_decl_O_NONBLOCK+set}" = set; then
18484 echo $ECHO_N "(cached) $ECHO_C" >&6
18485else
18486 cat >conftest.$ac_ext <<_ACEOF
18487/* confdefs.h. */
18488_ACEOF
18489cat confdefs.h >>conftest.$ac_ext
18490cat >>conftest.$ac_ext <<_ACEOF
18491/* end confdefs.h. */
18492
18493#include <sys/types.h> 11039#include <sys/types.h>
18494#ifdef HAVE_SYS_STAT_H 11040#ifdef HAVE_SYS_STAT_H
18495# include <sys/stat.h> 11041# include <sys/stat.h>
@@ -18498,295 +11044,67 @@ cat >>conftest.$ac_ext <<_ACEOF
18498# include <fcntl.h> 11044# include <fcntl.h>
18499#endif 11045#endif
18500 11046
18501 11047"
18502int 11048if test "x$ac_cv_have_decl_O_NONBLOCK" = xyes; then :
18503main () 11049 ac_have_decl=1
18504{
18505#ifndef O_NONBLOCK
18506 (void) O_NONBLOCK;
18507#endif
18508
18509 ;
18510 return 0;
18511}
18512_ACEOF
18513rm -f conftest.$ac_objext
18514if { (ac_try="$ac_compile"
18515case "(($ac_try" in
18516 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18517 *) ac_try_echo=$ac_try;;
18518esac
18519eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18520 (eval "$ac_compile") 2>conftest.er1
18521 ac_status=$?
18522 grep -v '^ *+' conftest.er1 >conftest.err
18523 rm -f conftest.er1
18524 cat conftest.err >&5
18525 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18526 (exit $ac_status); } && {
18527 test -z "$ac_c_werror_flag" ||
18528 test ! -s conftest.err
18529 } && test -s conftest.$ac_objext; then
18530 ac_cv_have_decl_O_NONBLOCK=yes
18531else 11050else
18532 echo "$as_me: failed program was:" >&5 11051 ac_have_decl=0
18533sed 's/^/| /' conftest.$ac_ext >&5
18534
18535 ac_cv_have_decl_O_NONBLOCK=no
18536fi 11052fi
18537 11053
18538rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18539fi
18540{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_O_NONBLOCK" >&5
18541echo "${ECHO_T}$ac_cv_have_decl_O_NONBLOCK" >&6; }
18542if test $ac_cv_have_decl_O_NONBLOCK = yes; then
18543
18544cat >>confdefs.h <<_ACEOF 11054cat >>confdefs.h <<_ACEOF
18545#define HAVE_DECL_O_NONBLOCK 1 11055#define HAVE_DECL_O_NONBLOCK $ac_have_decl
18546_ACEOF
18547
18548
18549else
18550 cat >>confdefs.h <<_ACEOF
18551#define HAVE_DECL_O_NONBLOCK 0
18552_ACEOF 11056_ACEOF
18553 11057
18554 11058
18555fi 11059ac_fn_c_check_decl "$LINENO" "writev" "ac_cv_have_decl_writev" "
18556
18557
18558
18559{ echo "$as_me:$LINENO: checking whether writev is declared" >&5
18560echo $ECHO_N "checking whether writev is declared... $ECHO_C" >&6; }
18561if test "${ac_cv_have_decl_writev+set}" = set; then
18562 echo $ECHO_N "(cached) $ECHO_C" >&6
18563else
18564 cat >conftest.$ac_ext <<_ACEOF
18565/* confdefs.h. */
18566_ACEOF
18567cat confdefs.h >>conftest.$ac_ext
18568cat >>conftest.$ac_ext <<_ACEOF
18569/* end confdefs.h. */
18570
18571#include <sys/types.h> 11060#include <sys/types.h>
18572#include <sys/uio.h> 11061#include <sys/uio.h>
18573#include <unistd.h> 11062#include <unistd.h>
18574 11063
18575 11064"
18576int 11065if test "x$ac_cv_have_decl_writev" = xyes; then :
18577main () 11066 ac_have_decl=1
18578{
18579#ifndef writev
18580 (void) writev;
18581#endif
18582
18583 ;
18584 return 0;
18585}
18586_ACEOF
18587rm -f conftest.$ac_objext
18588if { (ac_try="$ac_compile"
18589case "(($ac_try" in
18590 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18591 *) ac_try_echo=$ac_try;;
18592esac
18593eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18594 (eval "$ac_compile") 2>conftest.er1
18595 ac_status=$?
18596 grep -v '^ *+' conftest.er1 >conftest.err
18597 rm -f conftest.er1
18598 cat conftest.err >&5
18599 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18600 (exit $ac_status); } && {
18601 test -z "$ac_c_werror_flag" ||
18602 test ! -s conftest.err
18603 } && test -s conftest.$ac_objext; then
18604 ac_cv_have_decl_writev=yes
18605else 11067else
18606 echo "$as_me: failed program was:" >&5 11068 ac_have_decl=0
18607sed 's/^/| /' conftest.$ac_ext >&5
18608
18609 ac_cv_have_decl_writev=no
18610fi 11069fi
18611 11070
18612rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18613fi
18614{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_writev" >&5
18615echo "${ECHO_T}$ac_cv_have_decl_writev" >&6; }
18616if test $ac_cv_have_decl_writev = yes; then
18617
18618cat >>confdefs.h <<_ACEOF 11071cat >>confdefs.h <<_ACEOF
18619#define HAVE_DECL_WRITEV 1 11072#define HAVE_DECL_WRITEV $ac_have_decl
18620_ACEOF
18621
18622
18623else
18624 cat >>confdefs.h <<_ACEOF
18625#define HAVE_DECL_WRITEV 0
18626_ACEOF 11073_ACEOF
18627 11074
18628 11075
18629fi 11076ac_fn_c_check_decl "$LINENO" "MAXSYMLINKS" "ac_cv_have_decl_MAXSYMLINKS" "
18630
18631
18632
18633{ echo "$as_me:$LINENO: checking whether MAXSYMLINKS is declared" >&5
18634echo $ECHO_N "checking whether MAXSYMLINKS is declared... $ECHO_C" >&6; }
18635if test "${ac_cv_have_decl_MAXSYMLINKS+set}" = set; then
18636 echo $ECHO_N "(cached) $ECHO_C" >&6
18637else
18638 cat >conftest.$ac_ext <<_ACEOF
18639/* confdefs.h. */
18640_ACEOF
18641cat confdefs.h >>conftest.$ac_ext
18642cat >>conftest.$ac_ext <<_ACEOF
18643/* end confdefs.h. */
18644
18645#include <sys/param.h> 11077#include <sys/param.h>
18646 11078
18647 11079"
18648int 11080if test "x$ac_cv_have_decl_MAXSYMLINKS" = xyes; then :
18649main () 11081 ac_have_decl=1
18650{
18651#ifndef MAXSYMLINKS
18652 (void) MAXSYMLINKS;
18653#endif
18654
18655 ;
18656 return 0;
18657}
18658_ACEOF
18659rm -f conftest.$ac_objext
18660if { (ac_try="$ac_compile"
18661case "(($ac_try" in
18662 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18663 *) ac_try_echo=$ac_try;;
18664esac
18665eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18666 (eval "$ac_compile") 2>conftest.er1
18667 ac_status=$?
18668 grep -v '^ *+' conftest.er1 >conftest.err
18669 rm -f conftest.er1
18670 cat conftest.err >&5
18671 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18672 (exit $ac_status); } && {
18673 test -z "$ac_c_werror_flag" ||
18674 test ! -s conftest.err
18675 } && test -s conftest.$ac_objext; then
18676 ac_cv_have_decl_MAXSYMLINKS=yes
18677else 11082else
18678 echo "$as_me: failed program was:" >&5 11083 ac_have_decl=0
18679sed 's/^/| /' conftest.$ac_ext >&5
18680
18681 ac_cv_have_decl_MAXSYMLINKS=no
18682fi
18683
18684rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18685fi 11084fi
18686{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_MAXSYMLINKS" >&5
18687echo "${ECHO_T}$ac_cv_have_decl_MAXSYMLINKS" >&6; }
18688if test $ac_cv_have_decl_MAXSYMLINKS = yes; then
18689 11085
18690cat >>confdefs.h <<_ACEOF 11086cat >>confdefs.h <<_ACEOF
18691#define HAVE_DECL_MAXSYMLINKS 1 11087#define HAVE_DECL_MAXSYMLINKS $ac_have_decl
18692_ACEOF 11088_ACEOF
18693 11089
18694 11090
18695else 11091ac_fn_c_check_decl "$LINENO" "offsetof" "ac_cv_have_decl_offsetof" "
18696 cat >>confdefs.h <<_ACEOF
18697#define HAVE_DECL_MAXSYMLINKS 0
18698_ACEOF
18699
18700
18701fi
18702
18703
18704
18705{ echo "$as_me:$LINENO: checking whether offsetof is declared" >&5
18706echo $ECHO_N "checking whether offsetof is declared... $ECHO_C" >&6; }
18707if test "${ac_cv_have_decl_offsetof+set}" = set; then
18708 echo $ECHO_N "(cached) $ECHO_C" >&6
18709else
18710 cat >conftest.$ac_ext <<_ACEOF
18711/* confdefs.h. */
18712_ACEOF
18713cat confdefs.h >>conftest.$ac_ext
18714cat >>conftest.$ac_ext <<_ACEOF
18715/* end confdefs.h. */
18716
18717#include <stddef.h> 11092#include <stddef.h>
18718 11093
18719 11094"
18720int 11095if test "x$ac_cv_have_decl_offsetof" = xyes; then :
18721main () 11096 ac_have_decl=1
18722{
18723#ifndef offsetof
18724 (void) offsetof;
18725#endif
18726
18727 ;
18728 return 0;
18729}
18730_ACEOF
18731rm -f conftest.$ac_objext
18732if { (ac_try="$ac_compile"
18733case "(($ac_try" in
18734 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18735 *) ac_try_echo=$ac_try;;
18736esac
18737eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18738 (eval "$ac_compile") 2>conftest.er1
18739 ac_status=$?
18740 grep -v '^ *+' conftest.er1 >conftest.err
18741 rm -f conftest.er1
18742 cat conftest.err >&5
18743 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18744 (exit $ac_status); } && {
18745 test -z "$ac_c_werror_flag" ||
18746 test ! -s conftest.err
18747 } && test -s conftest.$ac_objext; then
18748 ac_cv_have_decl_offsetof=yes
18749else 11097else
18750 echo "$as_me: failed program was:" >&5 11098 ac_have_decl=0
18751sed 's/^/| /' conftest.$ac_ext >&5
18752
18753 ac_cv_have_decl_offsetof=no
18754fi 11099fi
18755 11100
18756rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18757fi
18758{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_offsetof" >&5
18759echo "${ECHO_T}$ac_cv_have_decl_offsetof" >&6; }
18760if test $ac_cv_have_decl_offsetof = yes; then
18761
18762cat >>confdefs.h <<_ACEOF 11101cat >>confdefs.h <<_ACEOF
18763#define HAVE_DECL_OFFSETOF 1 11102#define HAVE_DECL_OFFSETOF $ac_have_decl
18764_ACEOF
18765
18766
18767else
18768 cat >>confdefs.h <<_ACEOF
18769#define HAVE_DECL_OFFSETOF 0
18770_ACEOF 11103_ACEOF
18771 11104
18772 11105
18773fi
18774
18775
18776
18777# extra bits for select(2) 11106# extra bits for select(2)
18778{ echo "$as_me:$LINENO: checking whether howmany is declared" >&5 11107ac_fn_c_check_decl "$LINENO" "howmany" "ac_cv_have_decl_howmany" "
18779echo $ECHO_N "checking whether howmany is declared... $ECHO_C" >&6; }
18780if test "${ac_cv_have_decl_howmany+set}" = set; then
18781 echo $ECHO_N "(cached) $ECHO_C" >&6
18782else
18783 cat >conftest.$ac_ext <<_ACEOF
18784/* confdefs.h. */
18785_ACEOF
18786cat confdefs.h >>conftest.$ac_ext
18787cat >>conftest.$ac_ext <<_ACEOF
18788/* end confdefs.h. */
18789
18790#include <sys/param.h> 11108#include <sys/param.h>
18791#include <sys/types.h> 11109#include <sys/types.h>
18792#ifdef HAVE_SYS_SYSMACROS_H 11110#ifdef HAVE_SYS_SYSMACROS_H
@@ -18802,73 +11120,17 @@ cat >>conftest.$ac_ext <<_ACEOF
18802#include <unistd.h> 11120#include <unistd.h>
18803#endif 11121#endif
18804 11122
18805 11123"
18806int 11124if test "x$ac_cv_have_decl_howmany" = xyes; then :
18807main () 11125 ac_have_decl=1
18808{
18809#ifndef howmany
18810 (void) howmany;
18811#endif
18812
18813 ;
18814 return 0;
18815}
18816_ACEOF
18817rm -f conftest.$ac_objext
18818if { (ac_try="$ac_compile"
18819case "(($ac_try" in
18820 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18821 *) ac_try_echo=$ac_try;;
18822esac
18823eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18824 (eval "$ac_compile") 2>conftest.er1
18825 ac_status=$?
18826 grep -v '^ *+' conftest.er1 >conftest.err
18827 rm -f conftest.er1
18828 cat conftest.err >&5
18829 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18830 (exit $ac_status); } && {
18831 test -z "$ac_c_werror_flag" ||
18832 test ! -s conftest.err
18833 } && test -s conftest.$ac_objext; then
18834 ac_cv_have_decl_howmany=yes
18835else 11126else
18836 echo "$as_me: failed program was:" >&5 11127 ac_have_decl=0
18837sed 's/^/| /' conftest.$ac_ext >&5
18838
18839 ac_cv_have_decl_howmany=no
18840fi 11128fi
18841 11129
18842rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18843fi
18844{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_howmany" >&5
18845echo "${ECHO_T}$ac_cv_have_decl_howmany" >&6; }
18846if test $ac_cv_have_decl_howmany = yes; then
18847
18848cat >>confdefs.h <<_ACEOF 11130cat >>confdefs.h <<_ACEOF
18849#define HAVE_DECL_HOWMANY 1 11131#define HAVE_DECL_HOWMANY $ac_have_decl
18850_ACEOF
18851
18852
18853else
18854 cat >>confdefs.h <<_ACEOF
18855#define HAVE_DECL_HOWMANY 0
18856_ACEOF 11132_ACEOF
18857 11133ac_fn_c_check_decl "$LINENO" "NFDBITS" "ac_cv_have_decl_NFDBITS" "
18858
18859fi
18860{ echo "$as_me:$LINENO: checking whether NFDBITS is declared" >&5
18861echo $ECHO_N "checking whether NFDBITS is declared... $ECHO_C" >&6; }
18862if test "${ac_cv_have_decl_NFDBITS+set}" = set; then
18863 echo $ECHO_N "(cached) $ECHO_C" >&6
18864else
18865 cat >conftest.$ac_ext <<_ACEOF
18866/* confdefs.h. */
18867_ACEOF
18868cat confdefs.h >>conftest.$ac_ext
18869cat >>conftest.$ac_ext <<_ACEOF
18870/* end confdefs.h. */
18871
18872#include <sys/param.h> 11134#include <sys/param.h>
18873#include <sys/types.h> 11135#include <sys/types.h>
18874#ifdef HAVE_SYS_SYSMACROS_H 11136#ifdef HAVE_SYS_SYSMACROS_H
@@ -18884,75 +11146,18 @@ cat >>conftest.$ac_ext <<_ACEOF
18884#include <unistd.h> 11146#include <unistd.h>
18885#endif 11147#endif
18886 11148
18887 11149"
18888int 11150if test "x$ac_cv_have_decl_NFDBITS" = xyes; then :
18889main () 11151 ac_have_decl=1
18890{
18891#ifndef NFDBITS
18892 (void) NFDBITS;
18893#endif
18894
18895 ;
18896 return 0;
18897}
18898_ACEOF
18899rm -f conftest.$ac_objext
18900if { (ac_try="$ac_compile"
18901case "(($ac_try" in
18902 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18903 *) ac_try_echo=$ac_try;;
18904esac
18905eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18906 (eval "$ac_compile") 2>conftest.er1
18907 ac_status=$?
18908 grep -v '^ *+' conftest.er1 >conftest.err
18909 rm -f conftest.er1
18910 cat conftest.err >&5
18911 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18912 (exit $ac_status); } && {
18913 test -z "$ac_c_werror_flag" ||
18914 test ! -s conftest.err
18915 } && test -s conftest.$ac_objext; then
18916 ac_cv_have_decl_NFDBITS=yes
18917else 11152else
18918 echo "$as_me: failed program was:" >&5 11153 ac_have_decl=0
18919sed 's/^/| /' conftest.$ac_ext >&5
18920
18921 ac_cv_have_decl_NFDBITS=no
18922fi
18923
18924rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18925fi 11154fi
18926{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_NFDBITS" >&5
18927echo "${ECHO_T}$ac_cv_have_decl_NFDBITS" >&6; }
18928if test $ac_cv_have_decl_NFDBITS = yes; then
18929 11155
18930cat >>confdefs.h <<_ACEOF 11156cat >>confdefs.h <<_ACEOF
18931#define HAVE_DECL_NFDBITS 1 11157#define HAVE_DECL_NFDBITS $ac_have_decl
18932_ACEOF
18933
18934
18935else
18936 cat >>confdefs.h <<_ACEOF
18937#define HAVE_DECL_NFDBITS 0
18938_ACEOF 11158_ACEOF
18939 11159
18940 11160ac_fn_c_check_type "$LINENO" "fd_mask" "ac_cv_type_fd_mask" "
18941fi
18942
18943
18944{ echo "$as_me:$LINENO: checking for fd_mask" >&5
18945echo $ECHO_N "checking for fd_mask... $ECHO_C" >&6; }
18946if test "${ac_cv_type_fd_mask+set}" = set; then
18947 echo $ECHO_N "(cached) $ECHO_C" >&6
18948else
18949 cat >conftest.$ac_ext <<_ACEOF
18950/* confdefs.h. */
18951_ACEOF
18952cat confdefs.h >>conftest.$ac_ext
18953cat >>conftest.$ac_ext <<_ACEOF
18954/* end confdefs.h. */
18955
18956#include <sys/param.h> 11161#include <sys/param.h>
18957#include <sys/types.h> 11162#include <sys/types.h>
18958#ifdef HAVE_SYS_SELECT_H 11163#ifdef HAVE_SYS_SELECT_H
@@ -18965,49 +11170,8 @@ cat >>conftest.$ac_ext <<_ACEOF
18965#include <unistd.h> 11170#include <unistd.h>
18966#endif 11171#endif
18967 11172
18968 11173"
18969typedef fd_mask ac__type_new_; 11174if test "x$ac_cv_type_fd_mask" = xyes; then :
18970int
18971main ()
18972{
18973if ((ac__type_new_ *) 0)
18974 return 0;
18975if (sizeof (ac__type_new_))
18976 return 0;
18977 ;
18978 return 0;
18979}
18980_ACEOF
18981rm -f conftest.$ac_objext
18982if { (ac_try="$ac_compile"
18983case "(($ac_try" in
18984 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
18985 *) ac_try_echo=$ac_try;;
18986esac
18987eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
18988 (eval "$ac_compile") 2>conftest.er1
18989 ac_status=$?
18990 grep -v '^ *+' conftest.er1 >conftest.err
18991 rm -f conftest.er1
18992 cat conftest.err >&5
18993 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18994 (exit $ac_status); } && {
18995 test -z "$ac_c_werror_flag" ||
18996 test ! -s conftest.err
18997 } && test -s conftest.$ac_objext; then
18998 ac_cv_type_fd_mask=yes
18999else
19000 echo "$as_me: failed program was:" >&5
19001sed 's/^/| /' conftest.$ac_ext >&5
19002
19003 ac_cv_type_fd_mask=no
19004fi
19005
19006rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
19007fi
19008{ echo "$as_me:$LINENO: result: $ac_cv_type_fd_mask" >&5
19009echo "${ECHO_T}$ac_cv_type_fd_mask" >&6; }
19010if test $ac_cv_type_fd_mask = yes; then
19011 11175
19012cat >>confdefs.h <<_ACEOF 11176cat >>confdefs.h <<_ACEOF
19013#define HAVE_FD_MASK 1 11177#define HAVE_FD_MASK 1
@@ -19017,109 +11181,22 @@ _ACEOF
19017fi 11181fi
19018 11182
19019 11183
19020
19021for ac_func in setresuid 11184for ac_func in setresuid
19022do 11185do :
19023as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11186 ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
19024{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11187if test "x$ac_cv_func_setresuid" = xyes; then :
19025echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
19026if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19027 echo $ECHO_N "(cached) $ECHO_C" >&6
19028else
19029 cat >conftest.$ac_ext <<_ACEOF
19030/* confdefs.h. */
19031_ACEOF
19032cat confdefs.h >>conftest.$ac_ext
19033cat >>conftest.$ac_ext <<_ACEOF
19034/* end confdefs.h. */
19035/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19036 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19037#define $ac_func innocuous_$ac_func
19038
19039/* System header to define __stub macros and hopefully few prototypes,
19040 which can conflict with char $ac_func (); below.
19041 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19042 <limits.h> exists even on freestanding compilers. */
19043
19044#ifdef __STDC__
19045# include <limits.h>
19046#else
19047# include <assert.h>
19048#endif
19049
19050#undef $ac_func
19051
19052/* Override any GCC internal prototype to avoid an error.
19053 Use char because int might match the return type of a GCC
19054 builtin and then its argument prototype would still apply. */
19055#ifdef __cplusplus
19056extern "C"
19057#endif
19058char $ac_func ();
19059/* The GNU C library defines this for functions which it implements
19060 to always fail with ENOSYS. Some functions are actually named
19061 something starting with __ and the normal name is an alias. */
19062#if defined __stub_$ac_func || defined __stub___$ac_func
19063choke me
19064#endif
19065
19066int
19067main ()
19068{
19069return $ac_func ();
19070 ;
19071 return 0;
19072}
19073_ACEOF
19074rm -f conftest.$ac_objext conftest$ac_exeext
19075if { (ac_try="$ac_link"
19076case "(($ac_try" in
19077 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19078 *) ac_try_echo=$ac_try;;
19079esac
19080eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19081 (eval "$ac_link") 2>conftest.er1
19082 ac_status=$?
19083 grep -v '^ *+' conftest.er1 >conftest.err
19084 rm -f conftest.er1
19085 cat conftest.err >&5
19086 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19087 (exit $ac_status); } && {
19088 test -z "$ac_c_werror_flag" ||
19089 test ! -s conftest.err
19090 } && test -s conftest$ac_exeext &&
19091 $as_test_x conftest$ac_exeext; then
19092 eval "$as_ac_var=yes"
19093else
19094 echo "$as_me: failed program was:" >&5
19095sed 's/^/| /' conftest.$ac_ext >&5
19096
19097 eval "$as_ac_var=no"
19098fi
19099
19100rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19101 conftest$ac_exeext conftest.$ac_ext
19102fi
19103ac_res=`eval echo '${'$as_ac_var'}'`
19104 { echo "$as_me:$LINENO: result: $ac_res" >&5
19105echo "${ECHO_T}$ac_res" >&6; }
19106if test `eval echo '${'$as_ac_var'}'` = yes; then
19107 cat >>confdefs.h <<_ACEOF 11188 cat >>confdefs.h <<_ACEOF
19108#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11189#define HAVE_SETRESUID 1
19109_ACEOF 11190_ACEOF
19110 11191
19111 { echo "$as_me:$LINENO: checking if setresuid seems to work" >&5 11192 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if setresuid seems to work" >&5
19112echo $ECHO_N "checking if setresuid seems to work... $ECHO_C" >&6; } 11193$as_echo_n "checking if setresuid seems to work... " >&6; }
19113 if test "$cross_compiling" = yes; then 11194 if test "$cross_compiling" = yes; then :
19114 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking setresuid" >&5 11195 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
19115echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;} 11196$as_echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
19116 11197
19117else 11198else
19118 cat >conftest.$ac_ext <<_ACEOF 11199 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
19119/* confdefs.h. */
19120_ACEOF
19121cat confdefs.h >>conftest.$ac_ext
19122cat >>conftest.$ac_ext <<_ACEOF
19123/* end confdefs.h. */ 11200/* end confdefs.h. */
19124 11201
19125#include <stdlib.h> 11202#include <stdlib.h>
@@ -19140,154 +11217,41 @@ main ()
19140 return 0; 11217 return 0;
19141} 11218}
19142_ACEOF 11219_ACEOF
19143rm -f conftest$ac_exeext 11220if ac_fn_c_try_run "$LINENO"; then :
19144if { (ac_try="$ac_link" 11221 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
19145case "(($ac_try" in 11222$as_echo "yes" >&6; }
19146 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19147 *) ac_try_echo=$ac_try;;
19148esac
19149eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19150 (eval "$ac_link") 2>&5
19151 ac_status=$?
19152 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19153 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
19154 { (case "(($ac_try" in
19155 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19156 *) ac_try_echo=$ac_try;;
19157esac
19158eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19159 (eval "$ac_try") 2>&5
19160 ac_status=$?
19161 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19162 (exit $ac_status); }; }; then
19163 { echo "$as_me:$LINENO: result: yes" >&5
19164echo "${ECHO_T}yes" >&6; }
19165else 11223else
19166 echo "$as_me: program exited with status $ac_status" >&5
19167echo "$as_me: failed program was:" >&5
19168sed 's/^/| /' conftest.$ac_ext >&5
19169 11224
19170( exit $ac_status ) 11225$as_echo "#define BROKEN_SETRESUID 1" >>confdefs.h
19171 11226
19172cat >>confdefs.h <<\_ACEOF 11227 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
19173#define BROKEN_SETRESUID 1 11228$as_echo "not implemented" >&6; }
19174_ACEOF
19175
19176 { echo "$as_me:$LINENO: result: not implemented" >&5
19177echo "${ECHO_T}not implemented" >&6; }
19178fi 11229fi
19179rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11230rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11231 conftest.$ac_objext conftest.beam conftest.$ac_ext
19180fi 11232fi
19181 11233
19182 11234
19183
19184fi 11235fi
19185done 11236done
19186 11237
19187 11238
19188
19189for ac_func in setresgid 11239for ac_func in setresgid
19190do 11240do :
19191as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11241 ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid"
19192{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11242if test "x$ac_cv_func_setresgid" = xyes; then :
19193echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
19194if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19195 echo $ECHO_N "(cached) $ECHO_C" >&6
19196else
19197 cat >conftest.$ac_ext <<_ACEOF
19198/* confdefs.h. */
19199_ACEOF
19200cat confdefs.h >>conftest.$ac_ext
19201cat >>conftest.$ac_ext <<_ACEOF
19202/* end confdefs.h. */
19203/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19204 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19205#define $ac_func innocuous_$ac_func
19206
19207/* System header to define __stub macros and hopefully few prototypes,
19208 which can conflict with char $ac_func (); below.
19209 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19210 <limits.h> exists even on freestanding compilers. */
19211
19212#ifdef __STDC__
19213# include <limits.h>
19214#else
19215# include <assert.h>
19216#endif
19217
19218#undef $ac_func
19219
19220/* Override any GCC internal prototype to avoid an error.
19221 Use char because int might match the return type of a GCC
19222 builtin and then its argument prototype would still apply. */
19223#ifdef __cplusplus
19224extern "C"
19225#endif
19226char $ac_func ();
19227/* The GNU C library defines this for functions which it implements
19228 to always fail with ENOSYS. Some functions are actually named
19229 something starting with __ and the normal name is an alias. */
19230#if defined __stub_$ac_func || defined __stub___$ac_func
19231choke me
19232#endif
19233
19234int
19235main ()
19236{
19237return $ac_func ();
19238 ;
19239 return 0;
19240}
19241_ACEOF
19242rm -f conftest.$ac_objext conftest$ac_exeext
19243if { (ac_try="$ac_link"
19244case "(($ac_try" in
19245 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19246 *) ac_try_echo=$ac_try;;
19247esac
19248eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19249 (eval "$ac_link") 2>conftest.er1
19250 ac_status=$?
19251 grep -v '^ *+' conftest.er1 >conftest.err
19252 rm -f conftest.er1
19253 cat conftest.err >&5
19254 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19255 (exit $ac_status); } && {
19256 test -z "$ac_c_werror_flag" ||
19257 test ! -s conftest.err
19258 } && test -s conftest$ac_exeext &&
19259 $as_test_x conftest$ac_exeext; then
19260 eval "$as_ac_var=yes"
19261else
19262 echo "$as_me: failed program was:" >&5
19263sed 's/^/| /' conftest.$ac_ext >&5
19264
19265 eval "$as_ac_var=no"
19266fi
19267
19268rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19269 conftest$ac_exeext conftest.$ac_ext
19270fi
19271ac_res=`eval echo '${'$as_ac_var'}'`
19272 { echo "$as_me:$LINENO: result: $ac_res" >&5
19273echo "${ECHO_T}$ac_res" >&6; }
19274if test `eval echo '${'$as_ac_var'}'` = yes; then
19275 cat >>confdefs.h <<_ACEOF 11243 cat >>confdefs.h <<_ACEOF
19276#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11244#define HAVE_SETRESGID 1
19277_ACEOF 11245_ACEOF
19278 11246
19279 { echo "$as_me:$LINENO: checking if setresgid seems to work" >&5 11247 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if setresgid seems to work" >&5
19280echo $ECHO_N "checking if setresgid seems to work... $ECHO_C" >&6; } 11248$as_echo_n "checking if setresgid seems to work... " >&6; }
19281 if test "$cross_compiling" = yes; then 11249 if test "$cross_compiling" = yes; then :
19282 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking setresuid" >&5 11250 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
19283echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;} 11251$as_echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
19284 11252
19285else 11253else
19286 cat >conftest.$ac_ext <<_ACEOF 11254 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
19287/* confdefs.h. */
19288_ACEOF
19289cat confdefs.h >>conftest.$ac_ext
19290cat >>conftest.$ac_ext <<_ACEOF
19291/* end confdefs.h. */ 11255/* end confdefs.h. */
19292 11256
19293#include <stdlib.h> 11257#include <stdlib.h>
@@ -19308,154 +11272,41 @@ main ()
19308 return 0; 11272 return 0;
19309} 11273}
19310_ACEOF 11274_ACEOF
19311rm -f conftest$ac_exeext 11275if ac_fn_c_try_run "$LINENO"; then :
19312if { (ac_try="$ac_link" 11276 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
19313case "(($ac_try" in 11277$as_echo "yes" >&6; }
19314 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19315 *) ac_try_echo=$ac_try;;
19316esac
19317eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19318 (eval "$ac_link") 2>&5
19319 ac_status=$?
19320 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19321 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
19322 { (case "(($ac_try" in
19323 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19324 *) ac_try_echo=$ac_try;;
19325esac
19326eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19327 (eval "$ac_try") 2>&5
19328 ac_status=$?
19329 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19330 (exit $ac_status); }; }; then
19331 { echo "$as_me:$LINENO: result: yes" >&5
19332echo "${ECHO_T}yes" >&6; }
19333else 11278else
19334 echo "$as_me: program exited with status $ac_status" >&5
19335echo "$as_me: failed program was:" >&5
19336sed 's/^/| /' conftest.$ac_ext >&5
19337 11279
19338( exit $ac_status ) 11280$as_echo "#define BROKEN_SETRESGID 1" >>confdefs.h
19339 11281
19340cat >>confdefs.h <<\_ACEOF 11282 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
19341#define BROKEN_SETRESGID 1 11283$as_echo "not implemented" >&6; }
19342_ACEOF
19343
19344 { echo "$as_me:$LINENO: result: not implemented" >&5
19345echo "${ECHO_T}not implemented" >&6; }
19346fi 11284fi
19347rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11285rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11286 conftest.$ac_objext conftest.beam conftest.$ac_ext
19348fi 11287fi
19349 11288
19350 11289
19351
19352fi 11290fi
19353done 11291done
19354 11292
19355 11293
19356
19357for ac_func in realpath 11294for ac_func in realpath
19358do 11295do :
19359as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11296 ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath"
19360{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11297if test "x$ac_cv_func_realpath" = xyes; then :
19361echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
19362if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19363 echo $ECHO_N "(cached) $ECHO_C" >&6
19364else
19365 cat >conftest.$ac_ext <<_ACEOF
19366/* confdefs.h. */
19367_ACEOF
19368cat confdefs.h >>conftest.$ac_ext
19369cat >>conftest.$ac_ext <<_ACEOF
19370/* end confdefs.h. */
19371/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19372 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19373#define $ac_func innocuous_$ac_func
19374
19375/* System header to define __stub macros and hopefully few prototypes,
19376 which can conflict with char $ac_func (); below.
19377 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19378 <limits.h> exists even on freestanding compilers. */
19379
19380#ifdef __STDC__
19381# include <limits.h>
19382#else
19383# include <assert.h>
19384#endif
19385
19386#undef $ac_func
19387
19388/* Override any GCC internal prototype to avoid an error.
19389 Use char because int might match the return type of a GCC
19390 builtin and then its argument prototype would still apply. */
19391#ifdef __cplusplus
19392extern "C"
19393#endif
19394char $ac_func ();
19395/* The GNU C library defines this for functions which it implements
19396 to always fail with ENOSYS. Some functions are actually named
19397 something starting with __ and the normal name is an alias. */
19398#if defined __stub_$ac_func || defined __stub___$ac_func
19399choke me
19400#endif
19401
19402int
19403main ()
19404{
19405return $ac_func ();
19406 ;
19407 return 0;
19408}
19409_ACEOF
19410rm -f conftest.$ac_objext conftest$ac_exeext
19411if { (ac_try="$ac_link"
19412case "(($ac_try" in
19413 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19414 *) ac_try_echo=$ac_try;;
19415esac
19416eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19417 (eval "$ac_link") 2>conftest.er1
19418 ac_status=$?
19419 grep -v '^ *+' conftest.er1 >conftest.err
19420 rm -f conftest.er1
19421 cat conftest.err >&5
19422 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19423 (exit $ac_status); } && {
19424 test -z "$ac_c_werror_flag" ||
19425 test ! -s conftest.err
19426 } && test -s conftest$ac_exeext &&
19427 $as_test_x conftest$ac_exeext; then
19428 eval "$as_ac_var=yes"
19429else
19430 echo "$as_me: failed program was:" >&5
19431sed 's/^/| /' conftest.$ac_ext >&5
19432
19433 eval "$as_ac_var=no"
19434fi
19435
19436rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19437 conftest$ac_exeext conftest.$ac_ext
19438fi
19439ac_res=`eval echo '${'$as_ac_var'}'`
19440 { echo "$as_me:$LINENO: result: $ac_res" >&5
19441echo "${ECHO_T}$ac_res" >&6; }
19442if test `eval echo '${'$as_ac_var'}'` = yes; then
19443 cat >>confdefs.h <<_ACEOF 11298 cat >>confdefs.h <<_ACEOF
19444#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11299#define HAVE_REALPATH 1
19445_ACEOF 11300_ACEOF
19446 11301
19447 { echo "$as_me:$LINENO: checking if realpath works with non-existent files" >&5 11302 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if realpath works with non-existent files" >&5
19448echo $ECHO_N "checking if realpath works with non-existent files... $ECHO_C" >&6; } 11303$as_echo_n "checking if realpath works with non-existent files... " >&6; }
19449 if test "$cross_compiling" = yes; then 11304 if test "$cross_compiling" = yes; then :
19450 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming working" >&5 11305 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming working" >&5
19451echo "$as_me: WARNING: cross compiling: assuming working" >&2;} 11306$as_echo "$as_me: WARNING: cross compiling: assuming working" >&2;}
19452 11307
19453else 11308else
19454 cat >conftest.$ac_ext <<_ACEOF 11309 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
19455/* confdefs.h. */
19456_ACEOF
19457cat confdefs.h >>conftest.$ac_ext
19458cat >>conftest.$ac_ext <<_ACEOF
19459/* end confdefs.h. */ 11310/* end confdefs.h. */
19460 11311
19461#include <limits.h> 11312#include <limits.h>
@@ -19476,729 +11327,110 @@ main ()
19476 return 0; 11327 return 0;
19477} 11328}
19478_ACEOF 11329_ACEOF
19479rm -f conftest$ac_exeext 11330if ac_fn_c_try_run "$LINENO"; then :
19480if { (ac_try="$ac_link" 11331 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
19481case "(($ac_try" in 11332$as_echo "yes" >&6; }
19482 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19483 *) ac_try_echo=$ac_try;;
19484esac
19485eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19486 (eval "$ac_link") 2>&5
19487 ac_status=$?
19488 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19489 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
19490 { (case "(($ac_try" in
19491 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19492 *) ac_try_echo=$ac_try;;
19493esac
19494eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19495 (eval "$ac_try") 2>&5
19496 ac_status=$?
19497 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19498 (exit $ac_status); }; }; then
19499 { echo "$as_me:$LINENO: result: yes" >&5
19500echo "${ECHO_T}yes" >&6; }
19501else 11333else
19502 echo "$as_me: program exited with status $ac_status" >&5
19503echo "$as_me: failed program was:" >&5
19504sed 's/^/| /' conftest.$ac_ext >&5
19505
19506( exit $ac_status )
19507 11334
19508cat >>confdefs.h <<\_ACEOF 11335$as_echo "#define BROKEN_REALPATH 1" >>confdefs.h
19509#define BROKEN_REALPATH 1
19510_ACEOF
19511 11336
19512 { echo "$as_me:$LINENO: result: no" >&5 11337 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
19513echo "${ECHO_T}no" >&6; } 11338$as_echo "no" >&6; }
19514fi 11339fi
19515rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11340rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11341 conftest.$ac_objext conftest.beam conftest.$ac_ext
19516fi 11342fi
19517 11343
19518 11344
19519
19520fi 11345fi
19521done 11346done
19522 11347
19523 11348
19524
19525
19526for ac_func in gettimeofday time 11349for ac_func in gettimeofday time
19527do 11350do :
19528as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11351 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
19529{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11352ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
19530echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 11353if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
19531if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19532 echo $ECHO_N "(cached) $ECHO_C" >&6
19533else
19534 cat >conftest.$ac_ext <<_ACEOF
19535/* confdefs.h. */
19536_ACEOF
19537cat confdefs.h >>conftest.$ac_ext
19538cat >>conftest.$ac_ext <<_ACEOF
19539/* end confdefs.h. */
19540/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19541 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19542#define $ac_func innocuous_$ac_func
19543
19544/* System header to define __stub macros and hopefully few prototypes,
19545 which can conflict with char $ac_func (); below.
19546 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19547 <limits.h> exists even on freestanding compilers. */
19548
19549#ifdef __STDC__
19550# include <limits.h>
19551#else
19552# include <assert.h>
19553#endif
19554
19555#undef $ac_func
19556
19557/* Override any GCC internal prototype to avoid an error.
19558 Use char because int might match the return type of a GCC
19559 builtin and then its argument prototype would still apply. */
19560#ifdef __cplusplus
19561extern "C"
19562#endif
19563char $ac_func ();
19564/* The GNU C library defines this for functions which it implements
19565 to always fail with ENOSYS. Some functions are actually named
19566 something starting with __ and the normal name is an alias. */
19567#if defined __stub_$ac_func || defined __stub___$ac_func
19568choke me
19569#endif
19570
19571int
19572main ()
19573{
19574return $ac_func ();
19575 ;
19576 return 0;
19577}
19578_ACEOF
19579rm -f conftest.$ac_objext conftest$ac_exeext
19580if { (ac_try="$ac_link"
19581case "(($ac_try" in
19582 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19583 *) ac_try_echo=$ac_try;;
19584esac
19585eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19586 (eval "$ac_link") 2>conftest.er1
19587 ac_status=$?
19588 grep -v '^ *+' conftest.er1 >conftest.err
19589 rm -f conftest.er1
19590 cat conftest.err >&5
19591 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19592 (exit $ac_status); } && {
19593 test -z "$ac_c_werror_flag" ||
19594 test ! -s conftest.err
19595 } && test -s conftest$ac_exeext &&
19596 $as_test_x conftest$ac_exeext; then
19597 eval "$as_ac_var=yes"
19598else
19599 echo "$as_me: failed program was:" >&5
19600sed 's/^/| /' conftest.$ac_ext >&5
19601
19602 eval "$as_ac_var=no"
19603fi
19604
19605rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19606 conftest$ac_exeext conftest.$ac_ext
19607fi
19608ac_res=`eval echo '${'$as_ac_var'}'`
19609 { echo "$as_me:$LINENO: result: $ac_res" >&5
19610echo "${ECHO_T}$ac_res" >&6; }
19611if test `eval echo '${'$as_ac_var'}'` = yes; then
19612 cat >>confdefs.h <<_ACEOF 11354 cat >>confdefs.h <<_ACEOF
19613#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11355#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
19614_ACEOF 11356_ACEOF
19615 11357
19616fi 11358fi
19617done 11359done
19618 11360
19619
19620
19621
19622
19623
19624
19625for ac_func in endutent getutent getutid getutline pututline setutent 11361for ac_func in endutent getutent getutid getutline pututline setutent
19626do 11362do :
19627as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11363 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
19628{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11364ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
19629echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 11365if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
19630if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19631 echo $ECHO_N "(cached) $ECHO_C" >&6
19632else
19633 cat >conftest.$ac_ext <<_ACEOF
19634/* confdefs.h. */
19635_ACEOF
19636cat confdefs.h >>conftest.$ac_ext
19637cat >>conftest.$ac_ext <<_ACEOF
19638/* end confdefs.h. */
19639/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19640 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19641#define $ac_func innocuous_$ac_func
19642
19643/* System header to define __stub macros and hopefully few prototypes,
19644 which can conflict with char $ac_func (); below.
19645 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19646 <limits.h> exists even on freestanding compilers. */
19647
19648#ifdef __STDC__
19649# include <limits.h>
19650#else
19651# include <assert.h>
19652#endif
19653
19654#undef $ac_func
19655
19656/* Override any GCC internal prototype to avoid an error.
19657 Use char because int might match the return type of a GCC
19658 builtin and then its argument prototype would still apply. */
19659#ifdef __cplusplus
19660extern "C"
19661#endif
19662char $ac_func ();
19663/* The GNU C library defines this for functions which it implements
19664 to always fail with ENOSYS. Some functions are actually named
19665 something starting with __ and the normal name is an alias. */
19666#if defined __stub_$ac_func || defined __stub___$ac_func
19667choke me
19668#endif
19669
19670int
19671main ()
19672{
19673return $ac_func ();
19674 ;
19675 return 0;
19676}
19677_ACEOF
19678rm -f conftest.$ac_objext conftest$ac_exeext
19679if { (ac_try="$ac_link"
19680case "(($ac_try" in
19681 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19682 *) ac_try_echo=$ac_try;;
19683esac
19684eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19685 (eval "$ac_link") 2>conftest.er1
19686 ac_status=$?
19687 grep -v '^ *+' conftest.er1 >conftest.err
19688 rm -f conftest.er1
19689 cat conftest.err >&5
19690 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19691 (exit $ac_status); } && {
19692 test -z "$ac_c_werror_flag" ||
19693 test ! -s conftest.err
19694 } && test -s conftest$ac_exeext &&
19695 $as_test_x conftest$ac_exeext; then
19696 eval "$as_ac_var=yes"
19697else
19698 echo "$as_me: failed program was:" >&5
19699sed 's/^/| /' conftest.$ac_ext >&5
19700
19701 eval "$as_ac_var=no"
19702fi
19703
19704rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19705 conftest$ac_exeext conftest.$ac_ext
19706fi
19707ac_res=`eval echo '${'$as_ac_var'}'`
19708 { echo "$as_me:$LINENO: result: $ac_res" >&5
19709echo "${ECHO_T}$ac_res" >&6; }
19710if test `eval echo '${'$as_ac_var'}'` = yes; then
19711 cat >>confdefs.h <<_ACEOF 11366 cat >>confdefs.h <<_ACEOF
19712#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11367#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
19713_ACEOF 11368_ACEOF
19714 11369
19715fi 11370fi
19716done 11371done
19717 11372
19718
19719for ac_func in utmpname 11373for ac_func in utmpname
19720do 11374do :
19721as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11375 ac_fn_c_check_func "$LINENO" "utmpname" "ac_cv_func_utmpname"
19722{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11376if test "x$ac_cv_func_utmpname" = xyes; then :
19723echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
19724if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19725 echo $ECHO_N "(cached) $ECHO_C" >&6
19726else
19727 cat >conftest.$ac_ext <<_ACEOF
19728/* confdefs.h. */
19729_ACEOF
19730cat confdefs.h >>conftest.$ac_ext
19731cat >>conftest.$ac_ext <<_ACEOF
19732/* end confdefs.h. */
19733/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19734 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19735#define $ac_func innocuous_$ac_func
19736
19737/* System header to define __stub macros and hopefully few prototypes,
19738 which can conflict with char $ac_func (); below.
19739 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19740 <limits.h> exists even on freestanding compilers. */
19741
19742#ifdef __STDC__
19743# include <limits.h>
19744#else
19745# include <assert.h>
19746#endif
19747
19748#undef $ac_func
19749
19750/* Override any GCC internal prototype to avoid an error.
19751 Use char because int might match the return type of a GCC
19752 builtin and then its argument prototype would still apply. */
19753#ifdef __cplusplus
19754extern "C"
19755#endif
19756char $ac_func ();
19757/* The GNU C library defines this for functions which it implements
19758 to always fail with ENOSYS. Some functions are actually named
19759 something starting with __ and the normal name is an alias. */
19760#if defined __stub_$ac_func || defined __stub___$ac_func
19761choke me
19762#endif
19763
19764int
19765main ()
19766{
19767return $ac_func ();
19768 ;
19769 return 0;
19770}
19771_ACEOF
19772rm -f conftest.$ac_objext conftest$ac_exeext
19773if { (ac_try="$ac_link"
19774case "(($ac_try" in
19775 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19776 *) ac_try_echo=$ac_try;;
19777esac
19778eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19779 (eval "$ac_link") 2>conftest.er1
19780 ac_status=$?
19781 grep -v '^ *+' conftest.er1 >conftest.err
19782 rm -f conftest.er1
19783 cat conftest.err >&5
19784 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19785 (exit $ac_status); } && {
19786 test -z "$ac_c_werror_flag" ||
19787 test ! -s conftest.err
19788 } && test -s conftest$ac_exeext &&
19789 $as_test_x conftest$ac_exeext; then
19790 eval "$as_ac_var=yes"
19791else
19792 echo "$as_me: failed program was:" >&5
19793sed 's/^/| /' conftest.$ac_ext >&5
19794
19795 eval "$as_ac_var=no"
19796fi
19797
19798rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19799 conftest$ac_exeext conftest.$ac_ext
19800fi
19801ac_res=`eval echo '${'$as_ac_var'}'`
19802 { echo "$as_me:$LINENO: result: $ac_res" >&5
19803echo "${ECHO_T}$ac_res" >&6; }
19804if test `eval echo '${'$as_ac_var'}'` = yes; then
19805 cat >>confdefs.h <<_ACEOF 11377 cat >>confdefs.h <<_ACEOF
19806#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11378#define HAVE_UTMPNAME 1
19807_ACEOF 11379_ACEOF
19808 11380
19809fi 11381fi
19810done 11382done
19811 11383
19812
19813
19814
19815
19816
19817
19818for ac_func in endutxent getutxent getutxid getutxline getutxuser pututxline 11384for ac_func in endutxent getutxent getutxid getutxline getutxuser pututxline
19819do 11385do :
19820as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11386 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
19821{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11387ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
19822echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 11388if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
19823if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19824 echo $ECHO_N "(cached) $ECHO_C" >&6
19825else
19826 cat >conftest.$ac_ext <<_ACEOF
19827/* confdefs.h. */
19828_ACEOF
19829cat confdefs.h >>conftest.$ac_ext
19830cat >>conftest.$ac_ext <<_ACEOF
19831/* end confdefs.h. */
19832/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19833 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19834#define $ac_func innocuous_$ac_func
19835
19836/* System header to define __stub macros and hopefully few prototypes,
19837 which can conflict with char $ac_func (); below.
19838 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19839 <limits.h> exists even on freestanding compilers. */
19840
19841#ifdef __STDC__
19842# include <limits.h>
19843#else
19844# include <assert.h>
19845#endif
19846
19847#undef $ac_func
19848
19849/* Override any GCC internal prototype to avoid an error.
19850 Use char because int might match the return type of a GCC
19851 builtin and then its argument prototype would still apply. */
19852#ifdef __cplusplus
19853extern "C"
19854#endif
19855char $ac_func ();
19856/* The GNU C library defines this for functions which it implements
19857 to always fail with ENOSYS. Some functions are actually named
19858 something starting with __ and the normal name is an alias. */
19859#if defined __stub_$ac_func || defined __stub___$ac_func
19860choke me
19861#endif
19862
19863int
19864main ()
19865{
19866return $ac_func ();
19867 ;
19868 return 0;
19869}
19870_ACEOF
19871rm -f conftest.$ac_objext conftest$ac_exeext
19872if { (ac_try="$ac_link"
19873case "(($ac_try" in
19874 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19875 *) ac_try_echo=$ac_try;;
19876esac
19877eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19878 (eval "$ac_link") 2>conftest.er1
19879 ac_status=$?
19880 grep -v '^ *+' conftest.er1 >conftest.err
19881 rm -f conftest.er1
19882 cat conftest.err >&5
19883 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19884 (exit $ac_status); } && {
19885 test -z "$ac_c_werror_flag" ||
19886 test ! -s conftest.err
19887 } && test -s conftest$ac_exeext &&
19888 $as_test_x conftest$ac_exeext; then
19889 eval "$as_ac_var=yes"
19890else
19891 echo "$as_me: failed program was:" >&5
19892sed 's/^/| /' conftest.$ac_ext >&5
19893
19894 eval "$as_ac_var=no"
19895fi
19896
19897rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19898 conftest$ac_exeext conftest.$ac_ext
19899fi
19900ac_res=`eval echo '${'$as_ac_var'}'`
19901 { echo "$as_me:$LINENO: result: $ac_res" >&5
19902echo "${ECHO_T}$ac_res" >&6; }
19903if test `eval echo '${'$as_ac_var'}'` = yes; then
19904 cat >>confdefs.h <<_ACEOF 11389 cat >>confdefs.h <<_ACEOF
19905#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11390#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
19906_ACEOF 11391_ACEOF
19907 11392
19908fi 11393fi
19909done 11394done
19910 11395
19911
19912
19913
19914for ac_func in setutxdb setutxent utmpxname 11396for ac_func in setutxdb setutxent utmpxname
19915do 11397do :
19916as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11398 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
19917{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11399ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
19918echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 11400if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
19919if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
19920 echo $ECHO_N "(cached) $ECHO_C" >&6
19921else
19922 cat >conftest.$ac_ext <<_ACEOF
19923/* confdefs.h. */
19924_ACEOF
19925cat confdefs.h >>conftest.$ac_ext
19926cat >>conftest.$ac_ext <<_ACEOF
19927/* end confdefs.h. */
19928/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
19929 For example, HP-UX 11i <limits.h> declares gettimeofday. */
19930#define $ac_func innocuous_$ac_func
19931
19932/* System header to define __stub macros and hopefully few prototypes,
19933 which can conflict with char $ac_func (); below.
19934 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
19935 <limits.h> exists even on freestanding compilers. */
19936
19937#ifdef __STDC__
19938# include <limits.h>
19939#else
19940# include <assert.h>
19941#endif
19942
19943#undef $ac_func
19944
19945/* Override any GCC internal prototype to avoid an error.
19946 Use char because int might match the return type of a GCC
19947 builtin and then its argument prototype would still apply. */
19948#ifdef __cplusplus
19949extern "C"
19950#endif
19951char $ac_func ();
19952/* The GNU C library defines this for functions which it implements
19953 to always fail with ENOSYS. Some functions are actually named
19954 something starting with __ and the normal name is an alias. */
19955#if defined __stub_$ac_func || defined __stub___$ac_func
19956choke me
19957#endif
19958
19959int
19960main ()
19961{
19962return $ac_func ();
19963 ;
19964 return 0;
19965}
19966_ACEOF
19967rm -f conftest.$ac_objext conftest$ac_exeext
19968if { (ac_try="$ac_link"
19969case "(($ac_try" in
19970 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
19971 *) ac_try_echo=$ac_try;;
19972esac
19973eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
19974 (eval "$ac_link") 2>conftest.er1
19975 ac_status=$?
19976 grep -v '^ *+' conftest.er1 >conftest.err
19977 rm -f conftest.er1
19978 cat conftest.err >&5
19979 echo "$as_me:$LINENO: \$? = $ac_status" >&5
19980 (exit $ac_status); } && {
19981 test -z "$ac_c_werror_flag" ||
19982 test ! -s conftest.err
19983 } && test -s conftest$ac_exeext &&
19984 $as_test_x conftest$ac_exeext; then
19985 eval "$as_ac_var=yes"
19986else
19987 echo "$as_me: failed program was:" >&5
19988sed 's/^/| /' conftest.$ac_ext >&5
19989
19990 eval "$as_ac_var=no"
19991fi
19992
19993rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
19994 conftest$ac_exeext conftest.$ac_ext
19995fi
19996ac_res=`eval echo '${'$as_ac_var'}'`
19997 { echo "$as_me:$LINENO: result: $ac_res" >&5
19998echo "${ECHO_T}$ac_res" >&6; }
19999if test `eval echo '${'$as_ac_var'}'` = yes; then
20000 cat >>confdefs.h <<_ACEOF 11401 cat >>confdefs.h <<_ACEOF
20001#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11402#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
20002_ACEOF 11403_ACEOF
20003 11404
20004fi 11405fi
20005done 11406done
20006 11407
20007
20008for ac_func in getlastlogxbyname 11408for ac_func in getlastlogxbyname
20009do 11409do :
20010as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 11410 ac_fn_c_check_func "$LINENO" "getlastlogxbyname" "ac_cv_func_getlastlogxbyname"
20011{ echo "$as_me:$LINENO: checking for $ac_func" >&5 11411if test "x$ac_cv_func_getlastlogxbyname" = xyes; then :
20012echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
20013if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
20014 echo $ECHO_N "(cached) $ECHO_C" >&6
20015else
20016 cat >conftest.$ac_ext <<_ACEOF
20017/* confdefs.h. */
20018_ACEOF
20019cat confdefs.h >>conftest.$ac_ext
20020cat >>conftest.$ac_ext <<_ACEOF
20021/* end confdefs.h. */
20022/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
20023 For example, HP-UX 11i <limits.h> declares gettimeofday. */
20024#define $ac_func innocuous_$ac_func
20025
20026/* System header to define __stub macros and hopefully few prototypes,
20027 which can conflict with char $ac_func (); below.
20028 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
20029 <limits.h> exists even on freestanding compilers. */
20030
20031#ifdef __STDC__
20032# include <limits.h>
20033#else
20034# include <assert.h>
20035#endif
20036
20037#undef $ac_func
20038
20039/* Override any GCC internal prototype to avoid an error.
20040 Use char because int might match the return type of a GCC
20041 builtin and then its argument prototype would still apply. */
20042#ifdef __cplusplus
20043extern "C"
20044#endif
20045char $ac_func ();
20046/* The GNU C library defines this for functions which it implements
20047 to always fail with ENOSYS. Some functions are actually named
20048 something starting with __ and the normal name is an alias. */
20049#if defined __stub_$ac_func || defined __stub___$ac_func
20050choke me
20051#endif
20052
20053int
20054main ()
20055{
20056return $ac_func ();
20057 ;
20058 return 0;
20059}
20060_ACEOF
20061rm -f conftest.$ac_objext conftest$ac_exeext
20062if { (ac_try="$ac_link"
20063case "(($ac_try" in
20064 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20065 *) ac_try_echo=$ac_try;;
20066esac
20067eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20068 (eval "$ac_link") 2>conftest.er1
20069 ac_status=$?
20070 grep -v '^ *+' conftest.er1 >conftest.err
20071 rm -f conftest.er1
20072 cat conftest.err >&5
20073 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20074 (exit $ac_status); } && {
20075 test -z "$ac_c_werror_flag" ||
20076 test ! -s conftest.err
20077 } && test -s conftest$ac_exeext &&
20078 $as_test_x conftest$ac_exeext; then
20079 eval "$as_ac_var=yes"
20080else
20081 echo "$as_me: failed program was:" >&5
20082sed 's/^/| /' conftest.$ac_ext >&5
20083
20084 eval "$as_ac_var=no"
20085fi
20086
20087rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
20088 conftest$ac_exeext conftest.$ac_ext
20089fi
20090ac_res=`eval echo '${'$as_ac_var'}'`
20091 { echo "$as_me:$LINENO: result: $ac_res" >&5
20092echo "${ECHO_T}$ac_res" >&6; }
20093if test `eval echo '${'$as_ac_var'}'` = yes; then
20094 cat >>confdefs.h <<_ACEOF 11412 cat >>confdefs.h <<_ACEOF
20095#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 11413#define HAVE_GETLASTLOGXBYNAME 1
20096_ACEOF 11414_ACEOF
20097 11415
20098fi 11416fi
20099done 11417done
20100 11418
20101 11419
20102{ echo "$as_me:$LINENO: checking for daemon" >&5 11420ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon"
20103echo $ECHO_N "checking for daemon... $ECHO_C" >&6; } 11421if test "x$ac_cv_func_daemon" = xyes; then :
20104if test "${ac_cv_func_daemon+set}" = set; then
20105 echo $ECHO_N "(cached) $ECHO_C" >&6
20106else
20107 cat >conftest.$ac_ext <<_ACEOF
20108/* confdefs.h. */
20109_ACEOF
20110cat confdefs.h >>conftest.$ac_ext
20111cat >>conftest.$ac_ext <<_ACEOF
20112/* end confdefs.h. */
20113/* Define daemon to an innocuous variant, in case <limits.h> declares daemon.
20114 For example, HP-UX 11i <limits.h> declares gettimeofday. */
20115#define daemon innocuous_daemon
20116
20117/* System header to define __stub macros and hopefully few prototypes,
20118 which can conflict with char daemon (); below.
20119 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
20120 <limits.h> exists even on freestanding compilers. */
20121 11422
20122#ifdef __STDC__ 11423$as_echo "#define HAVE_DAEMON 1" >>confdefs.h
20123# include <limits.h>
20124#else
20125# include <assert.h>
20126#endif
20127
20128#undef daemon
20129
20130/* Override any GCC internal prototype to avoid an error.
20131 Use char because int might match the return type of a GCC
20132 builtin and then its argument prototype would still apply. */
20133#ifdef __cplusplus
20134extern "C"
20135#endif
20136char daemon ();
20137/* The GNU C library defines this for functions which it implements
20138 to always fail with ENOSYS. Some functions are actually named
20139 something starting with __ and the normal name is an alias. */
20140#if defined __stub_daemon || defined __stub___daemon
20141choke me
20142#endif
20143
20144int
20145main ()
20146{
20147return daemon ();
20148 ;
20149 return 0;
20150}
20151_ACEOF
20152rm -f conftest.$ac_objext conftest$ac_exeext
20153if { (ac_try="$ac_link"
20154case "(($ac_try" in
20155 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20156 *) ac_try_echo=$ac_try;;
20157esac
20158eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20159 (eval "$ac_link") 2>conftest.er1
20160 ac_status=$?
20161 grep -v '^ *+' conftest.er1 >conftest.err
20162 rm -f conftest.er1
20163 cat conftest.err >&5
20164 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20165 (exit $ac_status); } && {
20166 test -z "$ac_c_werror_flag" ||
20167 test ! -s conftest.err
20168 } && test -s conftest$ac_exeext &&
20169 $as_test_x conftest$ac_exeext; then
20170 ac_cv_func_daemon=yes
20171else
20172 echo "$as_me: failed program was:" >&5
20173sed 's/^/| /' conftest.$ac_ext >&5
20174
20175 ac_cv_func_daemon=no
20176fi
20177
20178rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
20179 conftest$ac_exeext conftest.$ac_ext
20180fi
20181{ echo "$as_me:$LINENO: result: $ac_cv_func_daemon" >&5
20182echo "${ECHO_T}$ac_cv_func_daemon" >&6; }
20183if test $ac_cv_func_daemon = yes; then
20184
20185cat >>confdefs.h <<\_ACEOF
20186#define HAVE_DAEMON 1
20187_ACEOF
20188 11424
20189else 11425else
20190 { echo "$as_me:$LINENO: checking for daemon in -lbsd" >&5 11426 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for daemon in -lbsd" >&5
20191echo $ECHO_N "checking for daemon in -lbsd... $ECHO_C" >&6; } 11427$as_echo_n "checking for daemon in -lbsd... " >&6; }
20192if test "${ac_cv_lib_bsd_daemon+set}" = set; then 11428if ${ac_cv_lib_bsd_daemon+:} false; then :
20193 echo $ECHO_N "(cached) $ECHO_C" >&6 11429 $as_echo_n "(cached) " >&6
20194else 11430else
20195 ac_check_lib_save_LIBS=$LIBS 11431 ac_check_lib_save_LIBS=$LIBS
20196LIBS="-lbsd $LIBS" 11432LIBS="-lbsd $LIBS"
20197cat >conftest.$ac_ext <<_ACEOF 11433cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20198/* confdefs.h. */
20199_ACEOF
20200cat confdefs.h >>conftest.$ac_ext
20201cat >>conftest.$ac_ext <<_ACEOF
20202/* end confdefs.h. */ 11434/* end confdefs.h. */
20203 11435
20204/* Override any GCC internal prototype to avoid an error. 11436/* Override any GCC internal prototype to avoid an error.
@@ -20216,42 +11448,19 @@ return daemon ();
20216 return 0; 11448 return 0;
20217} 11449}
20218_ACEOF 11450_ACEOF
20219rm -f conftest.$ac_objext conftest$ac_exeext 11451if ac_fn_c_try_link "$LINENO"; then :
20220if { (ac_try="$ac_link"
20221case "(($ac_try" in
20222 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20223 *) ac_try_echo=$ac_try;;
20224esac
20225eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20226 (eval "$ac_link") 2>conftest.er1
20227 ac_status=$?
20228 grep -v '^ *+' conftest.er1 >conftest.err
20229 rm -f conftest.er1
20230 cat conftest.err >&5
20231 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20232 (exit $ac_status); } && {
20233 test -z "$ac_c_werror_flag" ||
20234 test ! -s conftest.err
20235 } && test -s conftest$ac_exeext &&
20236 $as_test_x conftest$ac_exeext; then
20237 ac_cv_lib_bsd_daemon=yes 11452 ac_cv_lib_bsd_daemon=yes
20238else 11453else
20239 echo "$as_me: failed program was:" >&5 11454 ac_cv_lib_bsd_daemon=no
20240sed 's/^/| /' conftest.$ac_ext >&5
20241
20242 ac_cv_lib_bsd_daemon=no
20243fi 11455fi
20244 11456rm -f core conftest.err conftest.$ac_objext \
20245rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 11457 conftest$ac_exeext conftest.$ac_ext
20246 conftest$ac_exeext conftest.$ac_ext
20247LIBS=$ac_check_lib_save_LIBS 11458LIBS=$ac_check_lib_save_LIBS
20248fi 11459fi
20249{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_daemon" >&5 11460{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_daemon" >&5
20250echo "${ECHO_T}$ac_cv_lib_bsd_daemon" >&6; } 11461$as_echo "$ac_cv_lib_bsd_daemon" >&6; }
20251if test $ac_cv_lib_bsd_daemon = yes; then 11462if test "x$ac_cv_lib_bsd_daemon" = xyes; then :
20252 LIBS="$LIBS -lbsd"; cat >>confdefs.h <<\_ACEOF 11463 LIBS="$LIBS -lbsd"; $as_echo "#define HAVE_DAEMON 1" >>confdefs.h
20253#define HAVE_DAEMON 1
20254_ACEOF
20255 11464
20256fi 11465fi
20257 11466
@@ -20259,106 +11468,20 @@ fi
20259fi 11468fi
20260 11469
20261 11470
20262{ echo "$as_me:$LINENO: checking for getpagesize" >&5 11471ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
20263echo $ECHO_N "checking for getpagesize... $ECHO_C" >&6; } 11472if test "x$ac_cv_func_getpagesize" = xyes; then :
20264if test "${ac_cv_func_getpagesize+set}" = set; then
20265 echo $ECHO_N "(cached) $ECHO_C" >&6
20266else
20267 cat >conftest.$ac_ext <<_ACEOF
20268/* confdefs.h. */
20269_ACEOF
20270cat confdefs.h >>conftest.$ac_ext
20271cat >>conftest.$ac_ext <<_ACEOF
20272/* end confdefs.h. */
20273/* Define getpagesize to an innocuous variant, in case <limits.h> declares getpagesize.
20274 For example, HP-UX 11i <limits.h> declares gettimeofday. */
20275#define getpagesize innocuous_getpagesize
20276
20277/* System header to define __stub macros and hopefully few prototypes,
20278 which can conflict with char getpagesize (); below.
20279 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
20280 <limits.h> exists even on freestanding compilers. */
20281
20282#ifdef __STDC__
20283# include <limits.h>
20284#else
20285# include <assert.h>
20286#endif
20287 11473
20288#undef getpagesize 11474$as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h
20289
20290/* Override any GCC internal prototype to avoid an error.
20291 Use char because int might match the return type of a GCC
20292 builtin and then its argument prototype would still apply. */
20293#ifdef __cplusplus
20294extern "C"
20295#endif
20296char getpagesize ();
20297/* The GNU C library defines this for functions which it implements
20298 to always fail with ENOSYS. Some functions are actually named
20299 something starting with __ and the normal name is an alias. */
20300#if defined __stub_getpagesize || defined __stub___getpagesize
20301choke me
20302#endif
20303
20304int
20305main ()
20306{
20307return getpagesize ();
20308 ;
20309 return 0;
20310}
20311_ACEOF
20312rm -f conftest.$ac_objext conftest$ac_exeext
20313if { (ac_try="$ac_link"
20314case "(($ac_try" in
20315 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20316 *) ac_try_echo=$ac_try;;
20317esac
20318eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20319 (eval "$ac_link") 2>conftest.er1
20320 ac_status=$?
20321 grep -v '^ *+' conftest.er1 >conftest.err
20322 rm -f conftest.er1
20323 cat conftest.err >&5
20324 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20325 (exit $ac_status); } && {
20326 test -z "$ac_c_werror_flag" ||
20327 test ! -s conftest.err
20328 } && test -s conftest$ac_exeext &&
20329 $as_test_x conftest$ac_exeext; then
20330 ac_cv_func_getpagesize=yes
20331else
20332 echo "$as_me: failed program was:" >&5
20333sed 's/^/| /' conftest.$ac_ext >&5
20334
20335 ac_cv_func_getpagesize=no
20336fi
20337
20338rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
20339 conftest$ac_exeext conftest.$ac_ext
20340fi
20341{ echo "$as_me:$LINENO: result: $ac_cv_func_getpagesize" >&5
20342echo "${ECHO_T}$ac_cv_func_getpagesize" >&6; }
20343if test $ac_cv_func_getpagesize = yes; then
20344
20345cat >>confdefs.h <<\_ACEOF
20346#define HAVE_GETPAGESIZE 1
20347_ACEOF
20348 11475
20349else 11476else
20350 { echo "$as_me:$LINENO: checking for getpagesize in -lucb" >&5 11477 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize in -lucb" >&5
20351echo $ECHO_N "checking for getpagesize in -lucb... $ECHO_C" >&6; } 11478$as_echo_n "checking for getpagesize in -lucb... " >&6; }
20352if test "${ac_cv_lib_ucb_getpagesize+set}" = set; then 11479if ${ac_cv_lib_ucb_getpagesize+:} false; then :
20353 echo $ECHO_N "(cached) $ECHO_C" >&6 11480 $as_echo_n "(cached) " >&6
20354else 11481else
20355 ac_check_lib_save_LIBS=$LIBS 11482 ac_check_lib_save_LIBS=$LIBS
20356LIBS="-lucb $LIBS" 11483LIBS="-lucb $LIBS"
20357cat >conftest.$ac_ext <<_ACEOF 11484cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20358/* confdefs.h. */
20359_ACEOF
20360cat confdefs.h >>conftest.$ac_ext
20361cat >>conftest.$ac_ext <<_ACEOF
20362/* end confdefs.h. */ 11485/* end confdefs.h. */
20363 11486
20364/* Override any GCC internal prototype to avoid an error. 11487/* Override any GCC internal prototype to avoid an error.
@@ -20376,42 +11499,19 @@ return getpagesize ();
20376 return 0; 11499 return 0;
20377} 11500}
20378_ACEOF 11501_ACEOF
20379rm -f conftest.$ac_objext conftest$ac_exeext 11502if ac_fn_c_try_link "$LINENO"; then :
20380if { (ac_try="$ac_link"
20381case "(($ac_try" in
20382 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20383 *) ac_try_echo=$ac_try;;
20384esac
20385eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20386 (eval "$ac_link") 2>conftest.er1
20387 ac_status=$?
20388 grep -v '^ *+' conftest.er1 >conftest.err
20389 rm -f conftest.er1
20390 cat conftest.err >&5
20391 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20392 (exit $ac_status); } && {
20393 test -z "$ac_c_werror_flag" ||
20394 test ! -s conftest.err
20395 } && test -s conftest$ac_exeext &&
20396 $as_test_x conftest$ac_exeext; then
20397 ac_cv_lib_ucb_getpagesize=yes 11503 ac_cv_lib_ucb_getpagesize=yes
20398else 11504else
20399 echo "$as_me: failed program was:" >&5 11505 ac_cv_lib_ucb_getpagesize=no
20400sed 's/^/| /' conftest.$ac_ext >&5
20401
20402 ac_cv_lib_ucb_getpagesize=no
20403fi 11506fi
20404 11507rm -f core conftest.err conftest.$ac_objext \
20405rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 11508 conftest$ac_exeext conftest.$ac_ext
20406 conftest$ac_exeext conftest.$ac_ext
20407LIBS=$ac_check_lib_save_LIBS 11509LIBS=$ac_check_lib_save_LIBS
20408fi 11510fi
20409{ echo "$as_me:$LINENO: result: $ac_cv_lib_ucb_getpagesize" >&5 11511{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ucb_getpagesize" >&5
20410echo "${ECHO_T}$ac_cv_lib_ucb_getpagesize" >&6; } 11512$as_echo "$ac_cv_lib_ucb_getpagesize" >&6; }
20411if test $ac_cv_lib_ucb_getpagesize = yes; then 11513if test "x$ac_cv_lib_ucb_getpagesize" = xyes; then :
20412 LIBS="$LIBS -lucb"; cat >>confdefs.h <<\_ACEOF 11514 LIBS="$LIBS -lucb"; $as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h
20413#define HAVE_GETPAGESIZE 1
20414_ACEOF
20415 11515
20416fi 11516fi
20417 11517
@@ -20421,18 +11521,14 @@ fi
20421 11521
20422# Check for broken snprintf 11522# Check for broken snprintf
20423if test "x$ac_cv_func_snprintf" = "xyes" ; then 11523if test "x$ac_cv_func_snprintf" = "xyes" ; then
20424 { echo "$as_me:$LINENO: checking whether snprintf correctly terminates long strings" >&5 11524 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf correctly terminates long strings" >&5
20425echo $ECHO_N "checking whether snprintf correctly terminates long strings... $ECHO_C" >&6; } 11525$as_echo_n "checking whether snprintf correctly terminates long strings... " >&6; }
20426 if test "$cross_compiling" = yes; then 11526 if test "$cross_compiling" = yes; then :
20427 { echo "$as_me:$LINENO: WARNING: cross compiling: Assuming working snprintf()" >&5 11527 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
20428echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;} 11528$as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
20429 11529
20430else 11530else
20431 cat >conftest.$ac_ext <<_ACEOF 11531 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20432/* confdefs.h. */
20433_ACEOF
20434cat confdefs.h >>conftest.$ac_ext
20435cat >>conftest.$ac_ext <<_ACEOF
20436/* end confdefs.h. */ 11532/* end confdefs.h. */
20437 #include <stdio.h> 11533 #include <stdio.h>
20438int 11534int
@@ -20447,67 +11543,37 @@ main ()
20447 return 0; 11543 return 0;
20448} 11544}
20449_ACEOF 11545_ACEOF
20450rm -f conftest$ac_exeext 11546if ac_fn_c_try_run "$LINENO"; then :
20451if { (ac_try="$ac_link" 11547 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20452case "(($ac_try" in 11548$as_echo "yes" >&6; }
20453 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20454 *) ac_try_echo=$ac_try;;
20455esac
20456eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20457 (eval "$ac_link") 2>&5
20458 ac_status=$?
20459 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20460 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20461 { (case "(($ac_try" in
20462 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20463 *) ac_try_echo=$ac_try;;
20464esac
20465eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20466 (eval "$ac_try") 2>&5
20467 ac_status=$?
20468 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20469 (exit $ac_status); }; }; then
20470 { echo "$as_me:$LINENO: result: yes" >&5
20471echo "${ECHO_T}yes" >&6; }
20472else 11549else
20473 echo "$as_me: program exited with status $ac_status" >&5
20474echo "$as_me: failed program was:" >&5
20475sed 's/^/| /' conftest.$ac_ext >&5
20476 11550
20477( exit $ac_status ) 11551 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11552$as_echo "no" >&6; }
20478 11553
20479 { echo "$as_me:$LINENO: result: no" >&5 11554$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
20480echo "${ECHO_T}no" >&6; }
20481 11555
20482cat >>confdefs.h <<\_ACEOF 11556 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5
20483#define BROKEN_SNPRINTF 1 11557$as_echo "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;}
20484_ACEOF
20485
20486 { echo "$as_me:$LINENO: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5
20487echo "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;}
20488 11558
20489fi 11559fi
20490rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11560rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11561 conftest.$ac_objext conftest.beam conftest.$ac_ext
20491fi 11562fi
20492 11563
20493
20494fi 11564fi
20495 11565
20496# We depend on vsnprintf returning the right thing on overflow: the 11566# We depend on vsnprintf returning the right thing on overflow: the
20497# number of characters it tried to create (as per SUSv3) 11567# number of characters it tried to create (as per SUSv3)
20498if test "x$ac_cv_func_vsnprintf" = "xyes" ; then 11568if test "x$ac_cv_func_vsnprintf" = "xyes" ; then
20499 { echo "$as_me:$LINENO: checking whether vsnprintf returns correct values on overflow" >&5 11569 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf returns correct values on overflow" >&5
20500echo $ECHO_N "checking whether vsnprintf returns correct values on overflow... $ECHO_C" >&6; } 11570$as_echo_n "checking whether vsnprintf returns correct values on overflow... " >&6; }
20501 if test "$cross_compiling" = yes; then 11571 if test "$cross_compiling" = yes; then :
20502 { echo "$as_me:$LINENO: WARNING: cross compiling: Assuming working vsnprintf()" >&5 11572 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working vsnprintf()" >&5
20503echo "$as_me: WARNING: cross compiling: Assuming working vsnprintf()" >&2;} 11573$as_echo "$as_me: WARNING: cross compiling: Assuming working vsnprintf()" >&2;}
20504 11574
20505else 11575else
20506 cat >conftest.$ac_ext <<_ACEOF 11576 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20507/* confdefs.h. */
20508_ACEOF
20509cat confdefs.h >>conftest.$ac_ext
20510cat >>conftest.$ac_ext <<_ACEOF
20511/* end confdefs.h. */ 11577/* end confdefs.h. */
20512 11578
20513#include <sys/types.h> 11579#include <sys/types.h>
@@ -20540,62 +11606,32 @@ return 0;
20540 return 0; 11606 return 0;
20541} 11607}
20542_ACEOF 11608_ACEOF
20543rm -f conftest$ac_exeext 11609if ac_fn_c_try_run "$LINENO"; then :
20544if { (ac_try="$ac_link" 11610 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20545case "(($ac_try" in 11611$as_echo "yes" >&6; }
20546 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20547 *) ac_try_echo=$ac_try;;
20548esac
20549eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20550 (eval "$ac_link") 2>&5
20551 ac_status=$?
20552 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20553 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20554 { (case "(($ac_try" in
20555 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20556 *) ac_try_echo=$ac_try;;
20557esac
20558eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20559 (eval "$ac_try") 2>&5
20560 ac_status=$?
20561 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20562 (exit $ac_status); }; }; then
20563 { echo "$as_me:$LINENO: result: yes" >&5
20564echo "${ECHO_T}yes" >&6; }
20565else 11612else
20566 echo "$as_me: program exited with status $ac_status" >&5
20567echo "$as_me: failed program was:" >&5
20568sed 's/^/| /' conftest.$ac_ext >&5
20569
20570( exit $ac_status )
20571 11613
20572 { echo "$as_me:$LINENO: result: no" >&5 11614 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
20573echo "${ECHO_T}no" >&6; } 11615$as_echo "no" >&6; }
20574 11616
20575cat >>confdefs.h <<\_ACEOF 11617$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
20576#define BROKEN_SNPRINTF 1
20577_ACEOF
20578 11618
20579 { echo "$as_me:$LINENO: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&5 11619 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&5
20580echo "$as_me: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&2;} 11620$as_echo "$as_me: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&2;}
20581 11621
20582fi 11622fi
20583rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11623rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11624 conftest.$ac_objext conftest.beam conftest.$ac_ext
20584fi 11625fi
20585 11626
20586
20587fi 11627fi
20588 11628
20589# On systems where [v]snprintf is broken, but is declared in stdio, 11629# On systems where [v]snprintf is broken, but is declared in stdio,
20590# check that the fmt argument is const char * or just char *. 11630# check that the fmt argument is const char * or just char *.
20591# This is only useful for when BROKEN_SNPRINTF 11631# This is only useful for when BROKEN_SNPRINTF
20592{ echo "$as_me:$LINENO: checking whether snprintf can declare const char *fmt" >&5 11632{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf can declare const char *fmt" >&5
20593echo $ECHO_N "checking whether snprintf can declare const char *fmt... $ECHO_C" >&6; } 11633$as_echo_n "checking whether snprintf can declare const char *fmt... " >&6; }
20594cat >conftest.$ac_ext <<_ACEOF 11634cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20595/* confdefs.h. */
20596_ACEOF
20597cat confdefs.h >>conftest.$ac_ext
20598cat >>conftest.$ac_ext <<_ACEOF
20599/* end confdefs.h. */ 11635/* end confdefs.h. */
20600 11636
20601#include <stdio.h> 11637#include <stdio.h>
@@ -20611,54 +11647,26 @@ main ()
20611 return 0; 11647 return 0;
20612} 11648}
20613_ACEOF 11649_ACEOF
20614rm -f conftest.$ac_objext 11650if ac_fn_c_try_compile "$LINENO"; then :
20615if { (ac_try="$ac_compile" 11651 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20616case "(($ac_try" in 11652$as_echo "yes" >&6; }
20617 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20618 *) ac_try_echo=$ac_try;;
20619esac
20620eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20621 (eval "$ac_compile") 2>conftest.er1
20622 ac_status=$?
20623 grep -v '^ *+' conftest.er1 >conftest.err
20624 rm -f conftest.er1
20625 cat conftest.err >&5
20626 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20627 (exit $ac_status); } && {
20628 test -z "$ac_c_werror_flag" ||
20629 test ! -s conftest.err
20630 } && test -s conftest.$ac_objext; then
20631 { echo "$as_me:$LINENO: result: yes" >&5
20632echo "${ECHO_T}yes" >&6; }
20633 11653
20634cat >>confdefs.h <<\_ACEOF 11654$as_echo "#define SNPRINTF_CONST const" >>confdefs.h
20635#define SNPRINTF_CONST const
20636_ACEOF
20637 11655
20638else 11656else
20639 echo "$as_me: failed program was:" >&5 11657 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
20640sed 's/^/| /' conftest.$ac_ext >&5 11658$as_echo "no" >&6; }
20641 11659 $as_echo "#define SNPRINTF_CONST /* not const */" >>confdefs.h
20642 { echo "$as_me:$LINENO: result: no" >&5
20643echo "${ECHO_T}no" >&6; }
20644 cat >>confdefs.h <<\_ACEOF
20645#define SNPRINTF_CONST /* not const */
20646_ACEOF
20647 11660
20648fi 11661fi
20649
20650rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 11662rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
20651 11663
20652# Check for missing getpeereid (or equiv) support 11664# Check for missing getpeereid (or equiv) support
20653NO_PEERCHECK="" 11665NO_PEERCHECK=""
20654if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then 11666if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then
20655 { echo "$as_me:$LINENO: checking whether system supports SO_PEERCRED getsockopt" >&5 11667 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system supports SO_PEERCRED getsockopt" >&5
20656echo $ECHO_N "checking whether system supports SO_PEERCRED getsockopt... $ECHO_C" >&6; } 11668$as_echo_n "checking whether system supports SO_PEERCRED getsockopt... " >&6; }
20657 cat >conftest.$ac_ext <<_ACEOF 11669 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20658/* confdefs.h. */
20659_ACEOF
20660cat confdefs.h >>conftest.$ac_ext
20661cat >>conftest.$ac_ext <<_ACEOF
20662/* end confdefs.h. */ 11670/* end confdefs.h. */
20663 11671
20664#include <sys/types.h> 11672#include <sys/types.h>
@@ -20671,63 +11679,35 @@ int i = SO_PEERCRED;
20671 return 0; 11679 return 0;
20672} 11680}
20673_ACEOF 11681_ACEOF
20674rm -f conftest.$ac_objext 11682if ac_fn_c_try_compile "$LINENO"; then :
20675if { (ac_try="$ac_compile" 11683 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20676case "(($ac_try" in 11684$as_echo "yes" >&6; }
20677 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20678 *) ac_try_echo=$ac_try;;
20679esac
20680eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20681 (eval "$ac_compile") 2>conftest.er1
20682 ac_status=$?
20683 grep -v '^ *+' conftest.er1 >conftest.err
20684 rm -f conftest.er1
20685 cat conftest.err >&5
20686 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20687 (exit $ac_status); } && {
20688 test -z "$ac_c_werror_flag" ||
20689 test ! -s conftest.err
20690 } && test -s conftest.$ac_objext; then
20691 { echo "$as_me:$LINENO: result: yes" >&5
20692echo "${ECHO_T}yes" >&6; }
20693 11685
20694cat >>confdefs.h <<\_ACEOF 11686$as_echo "#define HAVE_SO_PEERCRED 1" >>confdefs.h
20695#define HAVE_SO_PEERCRED 1
20696_ACEOF
20697 11687
20698 11688
20699else 11689else
20700 echo "$as_me: failed program was:" >&5 11690 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
20701sed 's/^/| /' conftest.$ac_ext >&5 11691$as_echo "no" >&6; }
20702
20703 { echo "$as_me:$LINENO: result: no" >&5
20704echo "${ECHO_T}no" >&6; }
20705 NO_PEERCHECK=1 11692 NO_PEERCHECK=1
20706 11693
20707fi 11694fi
20708
20709rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 11695rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
20710fi 11696fi
20711 11697
20712if test "x$ac_cv_func_mkdtemp" = "xyes" ; then 11698if test "x$ac_cv_func_mkdtemp" = "xyes" ; then
20713{ echo "$as_me:$LINENO: checking for (overly) strict mkstemp" >&5 11699{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for (overly) strict mkstemp" >&5
20714echo $ECHO_N "checking for (overly) strict mkstemp... $ECHO_C" >&6; } 11700$as_echo_n "checking for (overly) strict mkstemp... " >&6; }
20715if test "$cross_compiling" = yes; then 11701if test "$cross_compiling" = yes; then :
20716 11702
20717 { echo "$as_me:$LINENO: result: yes" >&5 11703 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20718echo "${ECHO_T}yes" >&6; } 11704$as_echo "yes" >&6; }
20719 cat >>confdefs.h <<\_ACEOF 11705 $as_echo "#define HAVE_STRICT_MKSTEMP 1" >>confdefs.h
20720#define HAVE_STRICT_MKSTEMP 1
20721_ACEOF
20722 11706
20723 11707
20724 11708
20725else 11709else
20726 cat >conftest.$ac_ext <<_ACEOF 11710 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20727/* confdefs.h. */
20728_ACEOF
20729cat confdefs.h >>conftest.$ac_ext
20730cat >>conftest.$ac_ext <<_ACEOF
20731/* end confdefs.h. */ 11711/* end confdefs.h. */
20732 11712
20733#include <stdlib.h> 11713#include <stdlib.h>
@@ -20746,67 +11726,37 @@ main ()
20746 return 0; 11726 return 0;
20747} 11727}
20748_ACEOF 11728_ACEOF
20749rm -f conftest$ac_exeext 11729if ac_fn_c_try_run "$LINENO"; then :
20750if { (ac_try="$ac_link"
20751case "(($ac_try" in
20752 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20753 *) ac_try_echo=$ac_try;;
20754esac
20755eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20756 (eval "$ac_link") 2>&5
20757 ac_status=$?
20758 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20759 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20760 { (case "(($ac_try" in
20761 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20762 *) ac_try_echo=$ac_try;;
20763esac
20764eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20765 (eval "$ac_try") 2>&5
20766 ac_status=$?
20767 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20768 (exit $ac_status); }; }; then
20769 11730
20770 { echo "$as_me:$LINENO: result: no" >&5 11731 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
20771echo "${ECHO_T}no" >&6; } 11732$as_echo "no" >&6; }
20772 11733
20773else 11734else
20774 echo "$as_me: program exited with status $ac_status" >&5
20775echo "$as_me: failed program was:" >&5
20776sed 's/^/| /' conftest.$ac_ext >&5
20777 11735
20778( exit $ac_status ) 11736 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
11737$as_echo "yes" >&6; }
20779 11738
20780 { echo "$as_me:$LINENO: result: yes" >&5 11739$as_echo "#define HAVE_STRICT_MKSTEMP 1" >>confdefs.h
20781echo "${ECHO_T}yes" >&6; }
20782
20783cat >>confdefs.h <<\_ACEOF
20784#define HAVE_STRICT_MKSTEMP 1
20785_ACEOF
20786 11740
20787 11741
20788fi 11742fi
20789rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11743rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11744 conftest.$ac_objext conftest.beam conftest.$ac_ext
20790fi 11745fi
20791 11746
20792
20793fi 11747fi
20794 11748
20795if test ! -z "$check_for_openpty_ctty_bug"; then 11749if test ! -z "$check_for_openpty_ctty_bug"; then
20796 { echo "$as_me:$LINENO: checking if openpty correctly handles controlling tty" >&5 11750 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openpty correctly handles controlling tty" >&5
20797echo $ECHO_N "checking if openpty correctly handles controlling tty... $ECHO_C" >&6; } 11751$as_echo_n "checking if openpty correctly handles controlling tty... " >&6; }
20798 if test "$cross_compiling" = yes; then 11752 if test "$cross_compiling" = yes; then :
20799 11753
20800 { echo "$as_me:$LINENO: result: cross-compiling, assuming yes" >&5 11754 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
20801echo "${ECHO_T}cross-compiling, assuming yes" >&6; } 11755$as_echo "cross-compiling, assuming yes" >&6; }
20802 11756
20803 11757
20804else 11758else
20805 cat >conftest.$ac_ext <<_ACEOF 11759 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20806/* confdefs.h. */
20807_ACEOF
20808cat confdefs.h >>conftest.$ac_ext
20809cat >>conftest.$ac_ext <<_ACEOF
20810/* end confdefs.h. */ 11760/* end confdefs.h. */
20811 11761
20812#include <stdio.h> 11762#include <stdio.h>
@@ -20845,67 +11795,37 @@ main ()
20845 return 0; 11795 return 0;
20846} 11796}
20847_ACEOF 11797_ACEOF
20848rm -f conftest$ac_exeext 11798if ac_fn_c_try_run "$LINENO"; then :
20849if { (ac_try="$ac_link"
20850case "(($ac_try" in
20851 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20852 *) ac_try_echo=$ac_try;;
20853esac
20854eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20855 (eval "$ac_link") 2>&5
20856 ac_status=$?
20857 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20858 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20859 { (case "(($ac_try" in
20860 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20861 *) ac_try_echo=$ac_try;;
20862esac
20863eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20864 (eval "$ac_try") 2>&5
20865 ac_status=$?
20866 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20867 (exit $ac_status); }; }; then
20868 11799
20869 { echo "$as_me:$LINENO: result: yes" >&5 11800 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20870echo "${ECHO_T}yes" >&6; } 11801$as_echo "yes" >&6; }
20871 11802
20872else 11803else
20873 echo "$as_me: program exited with status $ac_status" >&5
20874echo "$as_me: failed program was:" >&5
20875sed 's/^/| /' conftest.$ac_ext >&5
20876
20877( exit $ac_status )
20878 11804
20879 { echo "$as_me:$LINENO: result: no" >&5 11805 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
20880echo "${ECHO_T}no" >&6; } 11806$as_echo "no" >&6; }
20881 cat >>confdefs.h <<\_ACEOF 11807 $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
20882#define SSHD_ACQUIRES_CTTY 1
20883_ACEOF
20884 11808
20885 11809
20886fi 11810fi
20887rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11811rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11812 conftest.$ac_objext conftest.beam conftest.$ac_ext
20888fi 11813fi
20889 11814
20890
20891fi 11815fi
20892 11816
20893if test "x$ac_cv_func_getaddrinfo" = "xyes" && \ 11817if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
20894 test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then 11818 test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
20895 { echo "$as_me:$LINENO: checking if getaddrinfo seems to work" >&5 11819 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
20896echo $ECHO_N "checking if getaddrinfo seems to work... $ECHO_C" >&6; } 11820$as_echo_n "checking if getaddrinfo seems to work... " >&6; }
20897 if test "$cross_compiling" = yes; then 11821 if test "$cross_compiling" = yes; then :
20898 11822
20899 { echo "$as_me:$LINENO: result: cross-compiling, assuming yes" >&5 11823 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
20900echo "${ECHO_T}cross-compiling, assuming yes" >&6; } 11824$as_echo "cross-compiling, assuming yes" >&6; }
20901 11825
20902 11826
20903else 11827else
20904 cat >conftest.$ac_ext <<_ACEOF 11828 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
20905/* confdefs.h. */
20906_ACEOF
20907cat confdefs.h >>conftest.$ac_ext
20908cat >>conftest.$ac_ext <<_ACEOF
20909/* end confdefs.h. */ 11829/* end confdefs.h. */
20910 11830
20911#include <stdio.h> 11831#include <stdio.h>
@@ -20966,67 +11886,37 @@ main ()
20966 return 0; 11886 return 0;
20967} 11887}
20968_ACEOF 11888_ACEOF
20969rm -f conftest$ac_exeext 11889if ac_fn_c_try_run "$LINENO"; then :
20970if { (ac_try="$ac_link"
20971case "(($ac_try" in
20972 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20973 *) ac_try_echo=$ac_try;;
20974esac
20975eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20976 (eval "$ac_link") 2>&5
20977 ac_status=$?
20978 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20979 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20980 { (case "(($ac_try" in
20981 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20982 *) ac_try_echo=$ac_try;;
20983esac
20984eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20985 (eval "$ac_try") 2>&5
20986 ac_status=$?
20987 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20988 (exit $ac_status); }; }; then
20989 11890
20990 { echo "$as_me:$LINENO: result: yes" >&5 11891 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
20991echo "${ECHO_T}yes" >&6; } 11892$as_echo "yes" >&6; }
20992 11893
20993else 11894else
20994 echo "$as_me: program exited with status $ac_status" >&5
20995echo "$as_me: failed program was:" >&5
20996sed 's/^/| /' conftest.$ac_ext >&5
20997
20998( exit $ac_status )
20999 11895
21000 { echo "$as_me:$LINENO: result: no" >&5 11896 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21001echo "${ECHO_T}no" >&6; } 11897$as_echo "no" >&6; }
21002 cat >>confdefs.h <<\_ACEOF 11898 $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
21003#define BROKEN_GETADDRINFO 1
21004_ACEOF
21005 11899
21006 11900
21007fi 11901fi
21008rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11902rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11903 conftest.$ac_objext conftest.beam conftest.$ac_ext
21009fi 11904fi
21010 11905
21011
21012fi 11906fi
21013 11907
21014if test "x$ac_cv_func_getaddrinfo" = "xyes" && \ 11908if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
21015 test "x$check_for_aix_broken_getaddrinfo" = "x1"; then 11909 test "x$check_for_aix_broken_getaddrinfo" = "x1"; then
21016 { echo "$as_me:$LINENO: checking if getaddrinfo seems to work" >&5 11910 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
21017echo $ECHO_N "checking if getaddrinfo seems to work... $ECHO_C" >&6; } 11911$as_echo_n "checking if getaddrinfo seems to work... " >&6; }
21018 if test "$cross_compiling" = yes; then 11912 if test "$cross_compiling" = yes; then :
21019 11913
21020 { echo "$as_me:$LINENO: result: cross-compiling, assuming no" >&5 11914 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming no" >&5
21021echo "${ECHO_T}cross-compiling, assuming no" >&6; } 11915$as_echo "cross-compiling, assuming no" >&6; }
21022 11916
21023 11917
21024else 11918else
21025 cat >conftest.$ac_ext <<_ACEOF 11919 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21026/* confdefs.h. */
21027_ACEOF
21028cat confdefs.h >>conftest.$ac_ext
21029cat >>conftest.$ac_ext <<_ACEOF
21030/* end confdefs.h. */ 11920/* end confdefs.h. */
21031 11921
21032#include <stdio.h> 11922#include <stdio.h>
@@ -21075,199 +11965,135 @@ main ()
21075 return 0; 11965 return 0;
21076} 11966}
21077_ACEOF 11967_ACEOF
21078rm -f conftest$ac_exeext 11968if ac_fn_c_try_run "$LINENO"; then :
21079if { (ac_try="$ac_link"
21080case "(($ac_try" in
21081 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21082 *) ac_try_echo=$ac_try;;
21083esac
21084eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21085 (eval "$ac_link") 2>&5
21086 ac_status=$?
21087 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21088 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
21089 { (case "(($ac_try" in
21090 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21091 *) ac_try_echo=$ac_try;;
21092esac
21093eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21094 (eval "$ac_try") 2>&5
21095 ac_status=$?
21096 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21097 (exit $ac_status); }; }; then
21098 11969
21099 { echo "$as_me:$LINENO: result: yes" >&5 11970 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
21100echo "${ECHO_T}yes" >&6; } 11971$as_echo "yes" >&6; }
21101 11972
21102cat >>confdefs.h <<\_ACEOF 11973$as_echo "#define AIX_GETNAMEINFO_HACK 1" >>confdefs.h
21103#define AIX_GETNAMEINFO_HACK 1
21104_ACEOF
21105 11974
21106 11975
21107else 11976else
21108 echo "$as_me: program exited with status $ac_status" >&5
21109echo "$as_me: failed program was:" >&5
21110sed 's/^/| /' conftest.$ac_ext >&5
21111
21112( exit $ac_status )
21113 11977
21114 { echo "$as_me:$LINENO: result: no" >&5 11978 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21115echo "${ECHO_T}no" >&6; } 11979$as_echo "no" >&6; }
21116 cat >>confdefs.h <<\_ACEOF 11980 $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
21117#define BROKEN_GETADDRINFO 1
21118_ACEOF
21119 11981
21120 11982
21121fi 11983fi
21122rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 11984rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
11985 conftest.$ac_objext conftest.beam conftest.$ac_ext
21123fi 11986fi
21124 11987
21125
21126fi 11988fi
21127 11989
21128if test "x$ac_cv_func_getaddrinfo" = "xyes"; then 11990if test "x$ac_cv_func_getaddrinfo" = "xyes"; then
21129 { echo "$as_me:$LINENO: checking whether AI_NUMERICSERV is declared" >&5 11991 ac_fn_c_check_decl "$LINENO" "AI_NUMERICSERV" "ac_cv_have_decl_AI_NUMERICSERV" "#include <sys/types.h>
21130echo $ECHO_N "checking whether AI_NUMERICSERV is declared... $ECHO_C" >&6; }
21131if test "${ac_cv_have_decl_AI_NUMERICSERV+set}" = set; then
21132 echo $ECHO_N "(cached) $ECHO_C" >&6
21133else
21134 cat >conftest.$ac_ext <<_ACEOF
21135/* confdefs.h. */
21136_ACEOF
21137cat confdefs.h >>conftest.$ac_ext
21138cat >>conftest.$ac_ext <<_ACEOF
21139/* end confdefs.h. */
21140#include <sys/types.h>
21141 #include <sys/socket.h> 11992 #include <sys/socket.h>
21142 #include <netdb.h> 11993 #include <netdb.h>
11994"
11995if test "x$ac_cv_have_decl_AI_NUMERICSERV" = xyes; then :
11996 ac_have_decl=1
11997else
11998 ac_have_decl=0
11999fi
12000
12001cat >>confdefs.h <<_ACEOF
12002#define HAVE_DECL_AI_NUMERICSERV $ac_have_decl
12003_ACEOF
12004
12005fi
21143 12006
12007if test "x$check_for_conflicting_getspnam" = "x1"; then
12008 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for conflicting getspnam in shadow.h" >&5
12009$as_echo_n "checking for conflicting getspnam in shadow.h... " >&6; }
12010 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12011/* end confdefs.h. */
12012 #include <shadow.h>
21144int 12013int
21145main () 12014main ()
21146{ 12015{
21147#ifndef AI_NUMERICSERV 12016 exit(0);
21148 (void) AI_NUMERICSERV;
21149#endif
21150
21151 ; 12017 ;
21152 return 0; 12018 return 0;
21153} 12019}
21154_ACEOF 12020_ACEOF
21155rm -f conftest.$ac_objext 12021if ac_fn_c_try_compile "$LINENO"; then :
21156if { (ac_try="$ac_compile"
21157case "(($ac_try" in
21158 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21159 *) ac_try_echo=$ac_try;;
21160esac
21161eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21162 (eval "$ac_compile") 2>conftest.er1
21163 ac_status=$?
21164 grep -v '^ *+' conftest.er1 >conftest.err
21165 rm -f conftest.er1
21166 cat conftest.err >&5
21167 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21168 (exit $ac_status); } && {
21169 test -z "$ac_c_werror_flag" ||
21170 test ! -s conftest.err
21171 } && test -s conftest.$ac_objext; then
21172 ac_cv_have_decl_AI_NUMERICSERV=yes
21173else
21174 echo "$as_me: failed program was:" >&5
21175sed 's/^/| /' conftest.$ac_ext >&5
21176 12022
21177 ac_cv_have_decl_AI_NUMERICSERV=no 12023 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21178fi 12024$as_echo "no" >&6; }
21179 12025
21180rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 12026else
21181fi
21182{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_AI_NUMERICSERV" >&5
21183echo "${ECHO_T}$ac_cv_have_decl_AI_NUMERICSERV" >&6; }
21184if test $ac_cv_have_decl_AI_NUMERICSERV = yes; then
21185 12027
21186cat >>confdefs.h <<_ACEOF 12028 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
21187#define HAVE_DECL_AI_NUMERICSERV 1 12029$as_echo "yes" >&6; }
21188_ACEOF
21189 12030
12031$as_echo "#define GETSPNAM_CONFLICTING_DEFS 1" >>confdefs.h
21190 12032
21191else
21192 cat >>confdefs.h <<_ACEOF
21193#define HAVE_DECL_AI_NUMERICSERV 0
21194_ACEOF
21195 12033
21196 12034
21197fi 12035fi
12036rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12037fi
21198 12038
12039if test "x$ac_cv_func_strnvis" = "xyes"; then
12040 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnvis" >&5
12041$as_echo_n "checking for working strnvis... " >&6; }
12042 if test "$cross_compiling" = yes; then :
12043 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming broken" >&5
12044$as_echo "$as_me: WARNING: cross compiling: assuming broken" >&2;}
21199 12045
21200fi 12046$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
21201 12047
21202if test "x$check_for_conflicting_getspnam" = "x1"; then 12048
21203 { echo "$as_me:$LINENO: checking for conflicting getspnam in shadow.h" >&5 12049else
21204echo $ECHO_N "checking for conflicting getspnam in shadow.h... $ECHO_C" >&6; } 12050 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21205 cat >conftest.$ac_ext <<_ACEOF
21206/* confdefs.h. */
21207_ACEOF
21208cat confdefs.h >>conftest.$ac_ext
21209cat >>conftest.$ac_ext <<_ACEOF
21210/* end confdefs.h. */ 12051/* end confdefs.h. */
21211 #include <shadow.h> 12052
12053#include <signal.h>
12054#include <stdlib.h>
12055#include <string.h>
12056#include <vis.h>
12057static void sighandler(int sig) { _exit(1); }
12058
21212int 12059int
21213main () 12060main ()
21214{ 12061{
21215 exit(0); 12062
12063 char dst[16];
12064
12065 signal(SIGSEGV, sighandler);
12066 if (strnvis(dst, "src", 4, 0) && strcmp(dst, "src") == 0)
12067 exit(0);
12068 exit(1)
12069
21216 ; 12070 ;
21217 return 0; 12071 return 0;
21218} 12072}
21219_ACEOF 12073_ACEOF
21220rm -f conftest.$ac_objext 12074if ac_fn_c_try_run "$LINENO"; then :
21221if { (ac_try="$ac_compile" 12075 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
21222case "(($ac_try" in 12076$as_echo "yes" >&6; }
21223 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21224 *) ac_try_echo=$ac_try;;
21225esac
21226eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21227 (eval "$ac_compile") 2>conftest.er1
21228 ac_status=$?
21229 grep -v '^ *+' conftest.er1 >conftest.err
21230 rm -f conftest.er1
21231 cat conftest.err >&5
21232 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21233 (exit $ac_status); } && {
21234 test -z "$ac_c_werror_flag" ||
21235 test ! -s conftest.err
21236 } && test -s conftest.$ac_objext; then
21237
21238 { echo "$as_me:$LINENO: result: no" >&5
21239echo "${ECHO_T}no" >&6; }
21240
21241else 12077else
21242 echo "$as_me: failed program was:" >&5 12078 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21243sed 's/^/| /' conftest.$ac_ext >&5 12079$as_echo "no" >&6; }
21244
21245
21246 { echo "$as_me:$LINENO: result: yes" >&5
21247echo "${ECHO_T}yes" >&6; }
21248
21249cat >>confdefs.h <<\_ACEOF
21250#define GETSPNAM_CONFLICTING_DEFS 1
21251_ACEOF
21252
21253 12080
12081$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
21254 12082
21255fi 12083fi
12084rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12085 conftest.$ac_objext conftest.beam conftest.$ac_ext
12086fi
21256 12087
21257rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
21258fi 12088fi
21259 12089
21260{ echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5 12090{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
21261echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6; } 12091$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
21262if test "${ac_cv_func_getpgrp_void+set}" = set; then 12092if ${ac_cv_func_getpgrp_void+:} false; then :
21263 echo $ECHO_N "(cached) $ECHO_C" >&6 12093 $as_echo_n "(cached) " >&6
21264else 12094else
21265 # Use it with a single arg. 12095 # Use it with a single arg.
21266cat >conftest.$ac_ext <<_ACEOF 12096cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21267/* confdefs.h. */
21268_ACEOF
21269cat confdefs.h >>conftest.$ac_ext
21270cat >>conftest.$ac_ext <<_ACEOF
21271/* end confdefs.h. */ 12097/* end confdefs.h. */
21272$ac_includes_default 12098$ac_includes_default
21273int 12099int
@@ -21278,41 +12104,19 @@ getpgrp (0);
21278 return 0; 12104 return 0;
21279} 12105}
21280_ACEOF 12106_ACEOF
21281rm -f conftest.$ac_objext 12107if ac_fn_c_try_compile "$LINENO"; then :
21282if { (ac_try="$ac_compile"
21283case "(($ac_try" in
21284 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21285 *) ac_try_echo=$ac_try;;
21286esac
21287eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21288 (eval "$ac_compile") 2>conftest.er1
21289 ac_status=$?
21290 grep -v '^ *+' conftest.er1 >conftest.err
21291 rm -f conftest.er1
21292 cat conftest.err >&5
21293 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21294 (exit $ac_status); } && {
21295 test -z "$ac_c_werror_flag" ||
21296 test ! -s conftest.err
21297 } && test -s conftest.$ac_objext; then
21298 ac_cv_func_getpgrp_void=no 12108 ac_cv_func_getpgrp_void=no
21299else 12109else
21300 echo "$as_me: failed program was:" >&5 12110 ac_cv_func_getpgrp_void=yes
21301sed 's/^/| /' conftest.$ac_ext >&5
21302
21303 ac_cv_func_getpgrp_void=yes
21304fi 12111fi
21305
21306rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 12112rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
21307 12113
21308fi 12114fi
21309{ echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_void" >&5 12115{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
21310echo "${ECHO_T}$ac_cv_func_getpgrp_void" >&6; } 12116$as_echo "$ac_cv_func_getpgrp_void" >&6; }
21311if test $ac_cv_func_getpgrp_void = yes; then 12117if test $ac_cv_func_getpgrp_void = yes; then
21312 12118
21313cat >>confdefs.h <<\_ACEOF 12119$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
21314#define GETPGRP_VOID 1
21315_ACEOF
21316 12120
21317fi 12121fi
21318 12122
@@ -21322,12 +12126,10 @@ saved_CPPFLAGS="$CPPFLAGS"
21322saved_LDFLAGS="$LDFLAGS" 12126saved_LDFLAGS="$LDFLAGS"
21323 12127
21324# Check whether --with-ssl-dir was given. 12128# Check whether --with-ssl-dir was given.
21325if test "${with_ssl_dir+set}" = set; then 12129if test "${with_ssl_dir+set}" = set; then :
21326 withval=$with_ssl_dir; 12130 withval=$with_ssl_dir;
21327 if test "x$openssl" = "xno" ; then 12131 if test "x$openssl" = "xno" ; then
21328 { { echo "$as_me:$LINENO: error: cannot use --with-ssl-dir when OpenSSL disabled" >&5 12132 as_fn_error $? "cannot use --with-ssl-dir when OpenSSL disabled" "$LINENO" 5
21329echo "$as_me: error: cannot use --with-ssl-dir when OpenSSL disabled" >&2;}
21330 { (exit 1); exit 1; }; }
21331 fi 12133 fi
21332 if test "x$withval" != "xno" ; then 12134 if test "x$withval" != "xno" ; then
21333 case "$withval" in 12135 case "$withval" in
@@ -21366,7 +12168,7 @@ fi
21366 12168
21367 12169
21368# Check whether --with-openssl-header-check was given. 12170# Check whether --with-openssl-header-check was given.
21369if test "${with_openssl_header_check+set}" = set; then 12171if test "${with_openssl_header_check+set}" = set; then :
21370 withval=$with_openssl_header_check; 12172 withval=$with_openssl_header_check;
21371 if test "x$withval" = "xno" ; then 12173 if test "x$withval" = "xno" ; then
21372 openssl_check_nonfatal=1 12174 openssl_check_nonfatal=1
@@ -21379,13 +12181,11 @@ fi
21379openssl_engine=no 12181openssl_engine=no
21380 12182
21381# Check whether --with-ssl-engine was given. 12183# Check whether --with-ssl-engine was given.
21382if test "${with_ssl_engine+set}" = set; then 12184if test "${with_ssl_engine+set}" = set; then :
21383 withval=$with_ssl_engine; 12185 withval=$with_ssl_engine;
21384 if test "x$withval" != "xno" ; then 12186 if test "x$withval" != "xno" ; then
21385 if test "x$openssl" = "xno" ; then 12187 if test "x$openssl" = "xno" ; then
21386 { { echo "$as_me:$LINENO: error: cannot use --with-ssl-engine when OpenSSL disabled" >&5 12188 as_fn_error $? "cannot use --with-ssl-engine when OpenSSL disabled" "$LINENO" 5
21387echo "$as_me: error: cannot use --with-ssl-engine when OpenSSL disabled" >&2;}
21388 { (exit 1); exit 1; }; }
21389 fi 12189 fi
21390 openssl_engine=yes 12190 openssl_engine=yes
21391 fi 12191 fi
@@ -21396,11 +12196,7 @@ fi
21396 12196
21397if test "x$openssl" = "xyes" ; then 12197if test "x$openssl" = "xyes" ; then
21398 LIBS="-lcrypto $LIBS" 12198 LIBS="-lcrypto $LIBS"
21399 cat >conftest.$ac_ext <<_ACEOF 12199 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21400/* confdefs.h. */
21401_ACEOF
21402cat confdefs.h >>conftest.$ac_ext
21403cat >>conftest.$ac_ext <<_ACEOF
21404/* end confdefs.h. */ 12200/* end confdefs.h. */
21405 12201
21406/* Override any GCC internal prototype to avoid an error. 12202/* Override any GCC internal prototype to avoid an error.
@@ -21418,33 +12214,11 @@ return RAND_add ();
21418 return 0; 12214 return 0;
21419} 12215}
21420_ACEOF 12216_ACEOF
21421rm -f conftest.$ac_objext conftest$ac_exeext 12217if ac_fn_c_try_link "$LINENO"; then :
21422if { (ac_try="$ac_link"
21423case "(($ac_try" in
21424 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21425 *) ac_try_echo=$ac_try;;
21426esac
21427eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21428 (eval "$ac_link") 2>conftest.er1
21429 ac_status=$?
21430 grep -v '^ *+' conftest.er1 >conftest.err
21431 rm -f conftest.er1
21432 cat conftest.err >&5
21433 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21434 (exit $ac_status); } && {
21435 test -z "$ac_c_werror_flag" ||
21436 test ! -s conftest.err
21437 } && test -s conftest$ac_exeext &&
21438 $as_test_x conftest$ac_exeext; then
21439 12218
21440cat >>confdefs.h <<\_ACEOF 12219$as_echo "#define HAVE_OPENSSL 1" >>confdefs.h
21441#define HAVE_OPENSSL 1
21442_ACEOF
21443 12220
21444else 12221else
21445 echo "$as_me: failed program was:" >&5
21446sed 's/^/| /' conftest.$ac_ext >&5
21447
21448 12222
21449 if test -n "${need_dash_r}"; then 12223 if test -n "${need_dash_r}"; then
21450 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}" 12224 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
@@ -21452,150 +12226,15 @@ sed 's/^/| /' conftest.$ac_ext >&5
21452 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}" 12226 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
21453 fi 12227 fi
21454 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}" 12228 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
21455 if test "${ac_cv_header_openssl_opensslv_h+set}" = set; then 12229 ac_fn_c_check_header_mongrel "$LINENO" "openssl/opensslv.h" "ac_cv_header_openssl_opensslv_h" "$ac_includes_default"
21456 { echo "$as_me:$LINENO: checking for openssl/opensslv.h" >&5 12230if test "x$ac_cv_header_openssl_opensslv_h" = xyes; then :
21457echo $ECHO_N "checking for openssl/opensslv.h... $ECHO_C" >&6; }
21458if test "${ac_cv_header_openssl_opensslv_h+set}" = set; then
21459 echo $ECHO_N "(cached) $ECHO_C" >&6
21460fi
21461{ echo "$as_me:$LINENO: result: $ac_cv_header_openssl_opensslv_h" >&5
21462echo "${ECHO_T}$ac_cv_header_openssl_opensslv_h" >&6; }
21463else
21464 # Is the header compilable?
21465{ echo "$as_me:$LINENO: checking openssl/opensslv.h usability" >&5
21466echo $ECHO_N "checking openssl/opensslv.h usability... $ECHO_C" >&6; }
21467cat >conftest.$ac_ext <<_ACEOF
21468/* confdefs.h. */
21469_ACEOF
21470cat confdefs.h >>conftest.$ac_ext
21471cat >>conftest.$ac_ext <<_ACEOF
21472/* end confdefs.h. */
21473$ac_includes_default
21474#include <openssl/opensslv.h>
21475_ACEOF
21476rm -f conftest.$ac_objext
21477if { (ac_try="$ac_compile"
21478case "(($ac_try" in
21479 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21480 *) ac_try_echo=$ac_try;;
21481esac
21482eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21483 (eval "$ac_compile") 2>conftest.er1
21484 ac_status=$?
21485 grep -v '^ *+' conftest.er1 >conftest.err
21486 rm -f conftest.er1
21487 cat conftest.err >&5
21488 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21489 (exit $ac_status); } && {
21490 test -z "$ac_c_werror_flag" ||
21491 test ! -s conftest.err
21492 } && test -s conftest.$ac_objext; then
21493 ac_header_compiler=yes
21494else
21495 echo "$as_me: failed program was:" >&5
21496sed 's/^/| /' conftest.$ac_ext >&5
21497 12231
21498 ac_header_compiler=no
21499fi
21500
21501rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
21502{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
21503echo "${ECHO_T}$ac_header_compiler" >&6; }
21504
21505# Is the header present?
21506{ echo "$as_me:$LINENO: checking openssl/opensslv.h presence" >&5
21507echo $ECHO_N "checking openssl/opensslv.h presence... $ECHO_C" >&6; }
21508cat >conftest.$ac_ext <<_ACEOF
21509/* confdefs.h. */
21510_ACEOF
21511cat confdefs.h >>conftest.$ac_ext
21512cat >>conftest.$ac_ext <<_ACEOF
21513/* end confdefs.h. */
21514#include <openssl/opensslv.h>
21515_ACEOF
21516if { (ac_try="$ac_cpp conftest.$ac_ext"
21517case "(($ac_try" in
21518 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21519 *) ac_try_echo=$ac_try;;
21520esac
21521eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21522 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
21523 ac_status=$?
21524 grep -v '^ *+' conftest.er1 >conftest.err
21525 rm -f conftest.er1
21526 cat conftest.err >&5
21527 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21528 (exit $ac_status); } >/dev/null && {
21529 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
21530 test ! -s conftest.err
21531 }; then
21532 ac_header_preproc=yes
21533else 12232else
21534 echo "$as_me: failed program was:" >&5 12233 as_fn_error $? "*** OpenSSL headers missing - please install first or check config.log ***" "$LINENO" 5
21535sed 's/^/| /' conftest.$ac_ext >&5
21536
21537 ac_header_preproc=no
21538fi 12234fi
21539 12235
21540rm -f conftest.err conftest.$ac_ext
21541{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
21542echo "${ECHO_T}$ac_header_preproc" >&6; }
21543 12236
21544# So? What about this header? 12237 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21545case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
21546 yes:no: )
21547 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: accepted by the compiler, rejected by the preprocessor!" >&5
21548echo "$as_me: WARNING: openssl/opensslv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
21549 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: proceeding with the compiler's result" >&5
21550echo "$as_me: WARNING: openssl/opensslv.h: proceeding with the compiler's result" >&2;}
21551 ac_header_preproc=yes
21552 ;;
21553 no:yes:* )
21554 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: present but cannot be compiled" >&5
21555echo "$as_me: WARNING: openssl/opensslv.h: present but cannot be compiled" >&2;}
21556 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: check for missing prerequisite headers?" >&5
21557echo "$as_me: WARNING: openssl/opensslv.h: check for missing prerequisite headers?" >&2;}
21558 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: see the Autoconf documentation" >&5
21559echo "$as_me: WARNING: openssl/opensslv.h: see the Autoconf documentation" >&2;}
21560 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: section \"Present But Cannot Be Compiled\"" >&5
21561echo "$as_me: WARNING: openssl/opensslv.h: section \"Present But Cannot Be Compiled\"" >&2;}
21562 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: proceeding with the preprocessor's result" >&5
21563echo "$as_me: WARNING: openssl/opensslv.h: proceeding with the preprocessor's result" >&2;}
21564 { echo "$as_me:$LINENO: WARNING: openssl/opensslv.h: in the future, the compiler will take precedence" >&5
21565echo "$as_me: WARNING: openssl/opensslv.h: in the future, the compiler will take precedence" >&2;}
21566 ( cat <<\_ASBOX
21567## ------------------------------------------- ##
21568## Report this to openssh-unix-dev@mindrot.org ##
21569## ------------------------------------------- ##
21570_ASBOX
21571 ) | sed "s/^/$as_me: WARNING: /" >&2
21572 ;;
21573esac
21574{ echo "$as_me:$LINENO: checking for openssl/opensslv.h" >&5
21575echo $ECHO_N "checking for openssl/opensslv.h... $ECHO_C" >&6; }
21576if test "${ac_cv_header_openssl_opensslv_h+set}" = set; then
21577 echo $ECHO_N "(cached) $ECHO_C" >&6
21578else
21579 ac_cv_header_openssl_opensslv_h=$ac_header_preproc
21580fi
21581{ echo "$as_me:$LINENO: result: $ac_cv_header_openssl_opensslv_h" >&5
21582echo "${ECHO_T}$ac_cv_header_openssl_opensslv_h" >&6; }
21583
21584fi
21585if test $ac_cv_header_openssl_opensslv_h = yes; then
21586 :
21587else
21588 { { echo "$as_me:$LINENO: error: *** OpenSSL headers missing - please install first or check config.log ***" >&5
21589echo "$as_me: error: *** OpenSSL headers missing - please install first or check config.log ***" >&2;}
21590 { (exit 1); exit 1; }; }
21591fi
21592
21593
21594 cat >conftest.$ac_ext <<_ACEOF
21595/* confdefs.h. */
21596_ACEOF
21597cat confdefs.h >>conftest.$ac_ext
21598cat >>conftest.$ac_ext <<_ACEOF
21599/* end confdefs.h. */ 12238/* end confdefs.h. */
21600 12239
21601/* Override any GCC internal prototype to avoid an error. 12240/* Override any GCC internal prototype to avoid an error.
@@ -21613,64 +12252,34 @@ return RAND_add ();
21613 return 0; 12252 return 0;
21614} 12253}
21615_ACEOF 12254_ACEOF
21616rm -f conftest.$ac_objext conftest$ac_exeext 12255if ac_fn_c_try_link "$LINENO"; then :
21617if { (ac_try="$ac_link" 12256 $as_echo "#define HAVE_OPENSSL 1" >>confdefs.h
21618case "(($ac_try" in
21619 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21620 *) ac_try_echo=$ac_try;;
21621esac
21622eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21623 (eval "$ac_link") 2>conftest.er1
21624 ac_status=$?
21625 grep -v '^ *+' conftest.er1 >conftest.err
21626 rm -f conftest.er1
21627 cat conftest.err >&5
21628 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21629 (exit $ac_status); } && {
21630 test -z "$ac_c_werror_flag" ||
21631 test ! -s conftest.err
21632 } && test -s conftest$ac_exeext &&
21633 $as_test_x conftest$ac_exeext; then
21634 cat >>confdefs.h <<\_ACEOF
21635#define HAVE_OPENSSL 1
21636_ACEOF
21637 12257
21638else 12258else
21639 echo "$as_me: failed program was:" >&5
21640sed 's/^/| /' conftest.$ac_ext >&5
21641 12259
21642 12260 as_fn_error $? "*** Can't find recent OpenSSL libcrypto (see config.log for details) ***" "$LINENO" 5
21643 { { echo "$as_me:$LINENO: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&5
21644echo "$as_me: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***" >&2;}
21645 { (exit 1); exit 1; }; }
21646 12261
21647 12262
21648fi 12263fi
21649 12264rm -f core conftest.err conftest.$ac_objext \
21650rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12265 conftest$ac_exeext conftest.$ac_ext
21651 conftest$ac_exeext conftest.$ac_ext
21652 12266
21653 12267
21654fi 12268fi
21655 12269rm -f core conftest.err conftest.$ac_objext \
21656rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12270 conftest$ac_exeext conftest.$ac_ext
21657 conftest$ac_exeext conftest.$ac_ext
21658 12271
21659 # Determine OpenSSL header version 12272 # Determine OpenSSL header version
21660 { echo "$as_me:$LINENO: checking OpenSSL header version" >&5 12273 { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL header version" >&5
21661echo $ECHO_N "checking OpenSSL header version... $ECHO_C" >&6; } 12274$as_echo_n "checking OpenSSL header version... " >&6; }
21662 if test "$cross_compiling" = yes; then 12275 if test "$cross_compiling" = yes; then :
21663 12276
21664 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking" >&5 12277 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
21665echo "$as_me: WARNING: cross compiling: not checking" >&2;} 12278$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
21666 12279
21667 12280
21668else 12281else
21669 cat >conftest.$ac_ext <<_ACEOF 12282 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21670/* confdefs.h. */
21671_ACEOF
21672cat confdefs.h >>conftest.$ac_ext
21673cat >>conftest.$ac_ext <<_ACEOF
21674/* end confdefs.h. */ 12283/* end confdefs.h. */
21675 12284
21676 #include <stdlib.h> 12285 #include <stdlib.h>
@@ -21701,65 +12310,35 @@ main ()
21701 return 0; 12310 return 0;
21702} 12311}
21703_ACEOF 12312_ACEOF
21704rm -f conftest$ac_exeext 12313if ac_fn_c_try_run "$LINENO"; then :
21705if { (ac_try="$ac_link"
21706case "(($ac_try" in
21707 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21708 *) ac_try_echo=$ac_try;;
21709esac
21710eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21711 (eval "$ac_link") 2>&5
21712 ac_status=$?
21713 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21714 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
21715 { (case "(($ac_try" in
21716 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21717 *) ac_try_echo=$ac_try;;
21718esac
21719eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21720 (eval "$ac_try") 2>&5
21721 ac_status=$?
21722 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21723 (exit $ac_status); }; }; then
21724 12314
21725 ssl_header_ver=`cat conftest.sslincver` 12315 ssl_header_ver=`cat conftest.sslincver`
21726 { echo "$as_me:$LINENO: result: $ssl_header_ver" >&5 12316 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_header_ver" >&5
21727echo "${ECHO_T}$ssl_header_ver" >&6; } 12317$as_echo "$ssl_header_ver" >&6; }
21728 12318
21729else 12319else
21730 echo "$as_me: program exited with status $ac_status" >&5
21731echo "$as_me: failed program was:" >&5
21732sed 's/^/| /' conftest.$ac_ext >&5
21733 12320
21734( exit $ac_status ) 12321 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
21735 12322$as_echo "not found" >&6; }
21736 { echo "$as_me:$LINENO: result: not found" >&5 12323 as_fn_error $? "OpenSSL version header not found." "$LINENO" 5
21737echo "${ECHO_T}not found" >&6; }
21738 { { echo "$as_me:$LINENO: error: OpenSSL version header not found." >&5
21739echo "$as_me: error: OpenSSL version header not found." >&2;}
21740 { (exit 1); exit 1; }; }
21741 12324
21742fi 12325fi
21743rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 12326rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12327 conftest.$ac_objext conftest.beam conftest.$ac_ext
21744fi 12328fi
21745 12329
21746 12330
21747
21748 # Determine OpenSSL library version 12331 # Determine OpenSSL library version
21749 { echo "$as_me:$LINENO: checking OpenSSL library version" >&5 12332 { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL library version" >&5
21750echo $ECHO_N "checking OpenSSL library version... $ECHO_C" >&6; } 12333$as_echo_n "checking OpenSSL library version... " >&6; }
21751 if test "$cross_compiling" = yes; then 12334 if test "$cross_compiling" = yes; then :
21752 12335
21753 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking" >&5 12336 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
21754echo "$as_me: WARNING: cross compiling: not checking" >&2;} 12337$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
21755 12338
21756 12339
21757else 12340else
21758 cat >conftest.$ac_ext <<_ACEOF 12341 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21759/* confdefs.h. */
21760_ACEOF
21761cat confdefs.h >>conftest.$ac_ext
21762cat >>conftest.$ac_ext <<_ACEOF
21763/* end confdefs.h. */ 12342/* end confdefs.h. */
21764 12343
21765 #include <stdio.h> 12344 #include <stdio.h>
@@ -21789,74 +12368,42 @@ main ()
21789 return 0; 12368 return 0;
21790} 12369}
21791_ACEOF 12370_ACEOF
21792rm -f conftest$ac_exeext 12371if ac_fn_c_try_run "$LINENO"; then :
21793if { (ac_try="$ac_link"
21794case "(($ac_try" in
21795 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21796 *) ac_try_echo=$ac_try;;
21797esac
21798eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21799 (eval "$ac_link") 2>&5
21800 ac_status=$?
21801 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21802 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
21803 { (case "(($ac_try" in
21804 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21805 *) ac_try_echo=$ac_try;;
21806esac
21807eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21808 (eval "$ac_try") 2>&5
21809 ac_status=$?
21810 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21811 (exit $ac_status); }; }; then
21812 12372
21813 ssl_library_ver=`cat conftest.ssllibver` 12373 ssl_library_ver=`cat conftest.ssllibver`
21814 # Check version is supported. 12374 # Check version is supported.
21815 case "$ssl_library_ver" in 12375 case "$ssl_library_ver" in
21816 0090[0-7]*|009080[0-5]*) 12376 0090[0-7]*|009080[0-5]*)
21817 { { echo "$as_me:$LINENO: error: OpenSSL >= 0.9.8f required (have \"$ssl_library_ver\")" >&5 12377 as_fn_error $? "OpenSSL >= 0.9.8f required (have \"$ssl_library_ver\")" "$LINENO" 5
21818echo "$as_me: error: OpenSSL >= 0.9.8f required (have \"$ssl_library_ver\")" >&2;}
21819 { (exit 1); exit 1; }; }
21820 ;; 12378 ;;
21821 *) ;; 12379 *) ;;
21822 esac 12380 esac
21823 { echo "$as_me:$LINENO: result: $ssl_library_ver" >&5 12381 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_library_ver" >&5
21824echo "${ECHO_T}$ssl_library_ver" >&6; } 12382$as_echo "$ssl_library_ver" >&6; }
21825 12383
21826else 12384else
21827 echo "$as_me: program exited with status $ac_status" >&5
21828echo "$as_me: failed program was:" >&5
21829sed 's/^/| /' conftest.$ac_ext >&5
21830
21831( exit $ac_status )
21832 12385
21833 { echo "$as_me:$LINENO: result: not found" >&5 12386 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
21834echo "${ECHO_T}not found" >&6; } 12387$as_echo "not found" >&6; }
21835 { { echo "$as_me:$LINENO: error: OpenSSL library not found." >&5 12388 as_fn_error $? "OpenSSL library not found." "$LINENO" 5
21836echo "$as_me: error: OpenSSL library not found." >&2;}
21837 { (exit 1); exit 1; }; }
21838 12389
21839fi 12390fi
21840rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 12391rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12392 conftest.$ac_objext conftest.beam conftest.$ac_ext
21841fi 12393fi
21842 12394
21843 12395
21844
21845 # Sanity check OpenSSL headers 12396 # Sanity check OpenSSL headers
21846 { echo "$as_me:$LINENO: checking whether OpenSSL's headers match the library" >&5 12397 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's headers match the library" >&5
21847echo $ECHO_N "checking whether OpenSSL's headers match the library... $ECHO_C" >&6; } 12398$as_echo_n "checking whether OpenSSL's headers match the library... " >&6; }
21848 if test "$cross_compiling" = yes; then 12399 if test "$cross_compiling" = yes; then :
21849 12400
21850 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking" >&5 12401 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
21851echo "$as_me: WARNING: cross compiling: not checking" >&2;} 12402$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
21852 12403
21853 12404
21854else 12405else
21855 cat >conftest.$ac_ext <<_ACEOF 12406 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21856/* confdefs.h. */
21857_ACEOF
21858cat confdefs.h >>conftest.$ac_ext
21859cat >>conftest.$ac_ext <<_ACEOF
21860/* end confdefs.h. */ 12407/* end confdefs.h. */
21861 12408
21862 #include <string.h> 12409 #include <string.h>
@@ -21873,75 +12420,40 @@ main ()
21873 return 0; 12420 return 0;
21874} 12421}
21875_ACEOF 12422_ACEOF
21876rm -f conftest$ac_exeext 12423if ac_fn_c_try_run "$LINENO"; then :
21877if { (ac_try="$ac_link"
21878case "(($ac_try" in
21879 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21880 *) ac_try_echo=$ac_try;;
21881esac
21882eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21883 (eval "$ac_link") 2>&5
21884 ac_status=$?
21885 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21886 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
21887 { (case "(($ac_try" in
21888 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21889 *) ac_try_echo=$ac_try;;
21890esac
21891eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21892 (eval "$ac_try") 2>&5
21893 ac_status=$?
21894 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21895 (exit $ac_status); }; }; then
21896 12424
21897 { echo "$as_me:$LINENO: result: yes" >&5 12425 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
21898echo "${ECHO_T}yes" >&6; } 12426$as_echo "yes" >&6; }
21899 12427
21900else 12428else
21901 echo "$as_me: program exited with status $ac_status" >&5
21902echo "$as_me: failed program was:" >&5
21903sed 's/^/| /' conftest.$ac_ext >&5
21904 12429
21905( exit $ac_status ) 12430 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21906 12431$as_echo "no" >&6; }
21907 { echo "$as_me:$LINENO: result: no" >&5
21908echo "${ECHO_T}no" >&6; }
21909 if test "x$openssl_check_nonfatal" = "x"; then 12432 if test "x$openssl_check_nonfatal" = "x"; then
21910 { { echo "$as_me:$LINENO: error: Your OpenSSL headers do not match your 12433 as_fn_error $? "Your OpenSSL headers do not match your
21911 library. Check config.log for details.
21912 If you are sure your installation is consistent, you can disable the check
21913 by running \"./configure --without-openssl-header-check\".
21914 Also see contrib/findssl.sh for help identifying header/library mismatches.
21915 " >&5
21916echo "$as_me: error: Your OpenSSL headers do not match your
21917 library. Check config.log for details. 12434 library. Check config.log for details.
21918 If you are sure your installation is consistent, you can disable the check 12435 If you are sure your installation is consistent, you can disable the check
21919 by running \"./configure --without-openssl-header-check\". 12436 by running \"./configure --without-openssl-header-check\".
21920 Also see contrib/findssl.sh for help identifying header/library mismatches. 12437 Also see contrib/findssl.sh for help identifying header/library mismatches.
21921 " >&2;} 12438 " "$LINENO" 5
21922 { (exit 1); exit 1; }; }
21923 else 12439 else
21924 { echo "$as_me:$LINENO: WARNING: Your OpenSSL headers do not match your 12440 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your OpenSSL headers do not match your
21925 library. Check config.log for details. 12441 library. Check config.log for details.
21926 Also see contrib/findssl.sh for help identifying header/library mismatches." >&5 12442 Also see contrib/findssl.sh for help identifying header/library mismatches." >&5
21927echo "$as_me: WARNING: Your OpenSSL headers do not match your 12443$as_echo "$as_me: WARNING: Your OpenSSL headers do not match your
21928 library. Check config.log for details. 12444 library. Check config.log for details.
21929 Also see contrib/findssl.sh for help identifying header/library mismatches." >&2;} 12445 Also see contrib/findssl.sh for help identifying header/library mismatches." >&2;}
21930 fi 12446 fi
21931 12447
21932fi 12448fi
21933rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 12449rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12450 conftest.$ac_objext conftest.beam conftest.$ac_ext
21934fi 12451fi
21935 12452
21936 12453
21937 12454 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL functions will link" >&5
21938 { echo "$as_me:$LINENO: checking if programs using OpenSSL functions will link" >&5 12455$as_echo_n "checking if programs using OpenSSL functions will link... " >&6; }
21939echo $ECHO_N "checking if programs using OpenSSL functions will link... $ECHO_C" >&6; } 12456 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21940 cat >conftest.$ac_ext <<_ACEOF
21941/* confdefs.h. */
21942_ACEOF
21943cat confdefs.h >>conftest.$ac_ext
21944cat >>conftest.$ac_ext <<_ACEOF
21945/* end confdefs.h. */ 12457/* end confdefs.h. */
21946 #include <openssl/evp.h> 12458 #include <openssl/evp.h>
21947int 12459int
@@ -21952,44 +12464,20 @@ main ()
21952 return 0; 12464 return 0;
21953} 12465}
21954_ACEOF 12466_ACEOF
21955rm -f conftest.$ac_objext conftest$ac_exeext 12467if ac_fn_c_try_link "$LINENO"; then :
21956if { (ac_try="$ac_link"
21957case "(($ac_try" in
21958 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21959 *) ac_try_echo=$ac_try;;
21960esac
21961eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21962 (eval "$ac_link") 2>conftest.er1
21963 ac_status=$?
21964 grep -v '^ *+' conftest.er1 >conftest.err
21965 rm -f conftest.er1
21966 cat conftest.err >&5
21967 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21968 (exit $ac_status); } && {
21969 test -z "$ac_c_werror_flag" ||
21970 test ! -s conftest.err
21971 } && test -s conftest$ac_exeext &&
21972 $as_test_x conftest$ac_exeext; then
21973 12468
21974 { echo "$as_me:$LINENO: result: yes" >&5 12469 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
21975echo "${ECHO_T}yes" >&6; } 12470$as_echo "yes" >&6; }
21976 12471
21977else 12472else
21978 echo "$as_me: failed program was:" >&5
21979sed 's/^/| /' conftest.$ac_ext >&5
21980
21981 12473
21982 { echo "$as_me:$LINENO: result: no" >&5 12474 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
21983echo "${ECHO_T}no" >&6; } 12475$as_echo "no" >&6; }
21984 saved_LIBS="$LIBS" 12476 saved_LIBS="$LIBS"
21985 LIBS="$LIBS -ldl" 12477 LIBS="$LIBS -ldl"
21986 { echo "$as_me:$LINENO: checking if programs using OpenSSL need -ldl" >&5 12478 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL need -ldl" >&5
21987echo $ECHO_N "checking if programs using OpenSSL need -ldl... $ECHO_C" >&6; } 12479$as_echo_n "checking if programs using OpenSSL need -ldl... " >&6; }
21988 cat >conftest.$ac_ext <<_ACEOF 12480 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
21989/* confdefs.h. */
21990_ACEOF
21991cat confdefs.h >>conftest.$ac_ext
21992cat >>conftest.$ac_ext <<_ACEOF
21993/* end confdefs.h. */ 12481/* end confdefs.h. */
21994 #include <openssl/evp.h> 12482 #include <openssl/evp.h>
21995int 12483int
@@ -22000,60 +12488,28 @@ main ()
22000 return 0; 12488 return 0;
22001} 12489}
22002_ACEOF 12490_ACEOF
22003rm -f conftest.$ac_objext conftest$ac_exeext 12491if ac_fn_c_try_link "$LINENO"; then :
22004if { (ac_try="$ac_link"
22005case "(($ac_try" in
22006 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22007 *) ac_try_echo=$ac_try;;
22008esac
22009eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22010 (eval "$ac_link") 2>conftest.er1
22011 ac_status=$?
22012 grep -v '^ *+' conftest.er1 >conftest.err
22013 rm -f conftest.er1
22014 cat conftest.err >&5
22015 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22016 (exit $ac_status); } && {
22017 test -z "$ac_c_werror_flag" ||
22018 test ! -s conftest.err
22019 } && test -s conftest$ac_exeext &&
22020 $as_test_x conftest$ac_exeext; then
22021 12492
22022 { echo "$as_me:$LINENO: result: yes" >&5 12493 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22023echo "${ECHO_T}yes" >&6; } 12494$as_echo "yes" >&6; }
22024 12495
22025else 12496else
22026 echo "$as_me: failed program was:" >&5
22027sed 's/^/| /' conftest.$ac_ext >&5
22028 12497
22029 12498 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
22030 { echo "$as_me:$LINENO: result: no" >&5 12499$as_echo "no" >&6; }
22031echo "${ECHO_T}no" >&6; }
22032 LIBS="$saved_LIBS" 12500 LIBS="$saved_LIBS"
22033 12501
22034 12502
22035fi 12503fi
22036 12504rm -f core conftest.err conftest.$ac_objext \
22037rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12505 conftest$ac_exeext conftest.$ac_ext
22038 conftest$ac_exeext conftest.$ac_ext
22039 12506
22040 12507
22041fi 12508fi
12509rm -f core conftest.err conftest.$ac_objext \
12510 conftest$ac_exeext conftest.$ac_ext
22042 12511
22043rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12512 for ac_func in \
22044 conftest$ac_exeext conftest.$ac_ext
22045
22046
22047
22048
22049
22050
22051
22052
22053
22054
22055
22056for ac_func in \
22057 BN_is_prime_ex \ 12513 BN_is_prime_ex \
22058 DSA_generate_parameters_ex \ 12514 DSA_generate_parameters_ex \
22059 EVP_DigestInit_ex \ 12515 EVP_DigestInit_ex \
@@ -22065,93 +12521,12 @@ for ac_func in \
22065 RSA_generate_key_ex \ 12521 RSA_generate_key_ex \
22066 RSA_get_default_method \ 12522 RSA_get_default_method \
22067 12523
22068do 12524do :
22069as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 12525 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
22070{ echo "$as_me:$LINENO: checking for $ac_func" >&5 12526ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
22071echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 12527if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
22072if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
22073 echo $ECHO_N "(cached) $ECHO_C" >&6
22074else
22075 cat >conftest.$ac_ext <<_ACEOF
22076/* confdefs.h. */
22077_ACEOF
22078cat confdefs.h >>conftest.$ac_ext
22079cat >>conftest.$ac_ext <<_ACEOF
22080/* end confdefs.h. */
22081/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
22082 For example, HP-UX 11i <limits.h> declares gettimeofday. */
22083#define $ac_func innocuous_$ac_func
22084
22085/* System header to define __stub macros and hopefully few prototypes,
22086 which can conflict with char $ac_func (); below.
22087 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
22088 <limits.h> exists even on freestanding compilers. */
22089
22090#ifdef __STDC__
22091# include <limits.h>
22092#else
22093# include <assert.h>
22094#endif
22095
22096#undef $ac_func
22097
22098/* Override any GCC internal prototype to avoid an error.
22099 Use char because int might match the return type of a GCC
22100 builtin and then its argument prototype would still apply. */
22101#ifdef __cplusplus
22102extern "C"
22103#endif
22104char $ac_func ();
22105/* The GNU C library defines this for functions which it implements
22106 to always fail with ENOSYS. Some functions are actually named
22107 something starting with __ and the normal name is an alias. */
22108#if defined __stub_$ac_func || defined __stub___$ac_func
22109choke me
22110#endif
22111
22112int
22113main ()
22114{
22115return $ac_func ();
22116 ;
22117 return 0;
22118}
22119_ACEOF
22120rm -f conftest.$ac_objext conftest$ac_exeext
22121if { (ac_try="$ac_link"
22122case "(($ac_try" in
22123 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22124 *) ac_try_echo=$ac_try;;
22125esac
22126eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22127 (eval "$ac_link") 2>conftest.er1
22128 ac_status=$?
22129 grep -v '^ *+' conftest.er1 >conftest.err
22130 rm -f conftest.er1
22131 cat conftest.err >&5
22132 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22133 (exit $ac_status); } && {
22134 test -z "$ac_c_werror_flag" ||
22135 test ! -s conftest.err
22136 } && test -s conftest$ac_exeext &&
22137 $as_test_x conftest$ac_exeext; then
22138 eval "$as_ac_var=yes"
22139else
22140 echo "$as_me: failed program was:" >&5
22141sed 's/^/| /' conftest.$ac_ext >&5
22142
22143 eval "$as_ac_var=no"
22144fi
22145
22146rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22147 conftest$ac_exeext conftest.$ac_ext
22148fi
22149ac_res=`eval echo '${'$as_ac_var'}'`
22150 { echo "$as_me:$LINENO: result: $ac_res" >&5
22151echo "${ECHO_T}$ac_res" >&6; }
22152if test `eval echo '${'$as_ac_var'}'` = yes; then
22153 cat >>confdefs.h <<_ACEOF 12528 cat >>confdefs.h <<_ACEOF
22154#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 12529#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
22155_ACEOF 12530_ACEOF
22156 12531
22157fi 12532fi
@@ -22159,13 +12534,9 @@ done
22159 12534
22160 12535
22161 if test "x$openssl_engine" = "xyes" ; then 12536 if test "x$openssl_engine" = "xyes" ; then
22162 { echo "$as_me:$LINENO: checking for OpenSSL ENGINE support" >&5 12537 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL ENGINE support" >&5
22163echo $ECHO_N "checking for OpenSSL ENGINE support... $ECHO_C" >&6; } 12538$as_echo_n "checking for OpenSSL ENGINE support... " >&6; }
22164 cat >conftest.$ac_ext <<_ACEOF 12539 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22165/* confdefs.h. */
22166_ACEOF
22167cat confdefs.h >>conftest.$ac_ext
22168cat >>conftest.$ac_ext <<_ACEOF
22169/* end confdefs.h. */ 12540/* end confdefs.h. */
22170 12541
22171 #include <openssl/engine.h> 12542 #include <openssl/engine.h>
@@ -22181,52 +12552,24 @@ main ()
22181 return 0; 12552 return 0;
22182} 12553}
22183_ACEOF 12554_ACEOF
22184rm -f conftest.$ac_objext 12555if ac_fn_c_try_compile "$LINENO"; then :
22185if { (ac_try="$ac_compile" 12556 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22186case "(($ac_try" in 12557$as_echo "yes" >&6; }
22187 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22188 *) ac_try_echo=$ac_try;;
22189esac
22190eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22191 (eval "$ac_compile") 2>conftest.er1
22192 ac_status=$?
22193 grep -v '^ *+' conftest.er1 >conftest.err
22194 rm -f conftest.er1
22195 cat conftest.err >&5
22196 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22197 (exit $ac_status); } && {
22198 test -z "$ac_c_werror_flag" ||
22199 test ! -s conftest.err
22200 } && test -s conftest.$ac_objext; then
22201 { echo "$as_me:$LINENO: result: yes" >&5
22202echo "${ECHO_T}yes" >&6; }
22203 12558
22204cat >>confdefs.h <<\_ACEOF 12559$as_echo "#define USE_OPENSSL_ENGINE 1" >>confdefs.h
22205#define USE_OPENSSL_ENGINE 1
22206_ACEOF
22207 12560
22208 12561
22209else 12562else
22210 echo "$as_me: failed program was:" >&5 12563 as_fn_error $? "OpenSSL ENGINE support not found" "$LINENO" 5
22211sed 's/^/| /' conftest.$ac_ext >&5
22212
22213 { { echo "$as_me:$LINENO: error: OpenSSL ENGINE support not found" >&5
22214echo "$as_me: error: OpenSSL ENGINE support not found" >&2;}
22215 { (exit 1); exit 1; }; }
22216 12564
22217fi 12565fi
22218
22219rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 12566rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
22220 fi 12567 fi
22221 12568
22222 # Check for OpenSSL without EVP_aes_{192,256}_cbc 12569 # Check for OpenSSL without EVP_aes_{192,256}_cbc
22223 { echo "$as_me:$LINENO: checking whether OpenSSL has crippled AES support" >&5 12570 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has crippled AES support" >&5
22224echo $ECHO_N "checking whether OpenSSL has crippled AES support... $ECHO_C" >&6; } 12571$as_echo_n "checking whether OpenSSL has crippled AES support... " >&6; }
22225 cat >conftest.$ac_ext <<_ACEOF 12572 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22226/* confdefs.h. */
22227_ACEOF
22228cat confdefs.h >>conftest.$ac_ext
22229cat >>conftest.$ac_ext <<_ACEOF
22230/* end confdefs.h. */ 12573/* end confdefs.h. */
22231 12574
22232 #include <string.h> 12575 #include <string.h>
@@ -22242,55 +12585,28 @@ main ()
22242 return 0; 12585 return 0;
22243} 12586}
22244_ACEOF 12587_ACEOF
22245rm -f conftest.$ac_objext conftest$ac_exeext 12588if ac_fn_c_try_link "$LINENO"; then :
22246if { (ac_try="$ac_link"
22247case "(($ac_try" in
22248 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22249 *) ac_try_echo=$ac_try;;
22250esac
22251eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22252 (eval "$ac_link") 2>conftest.er1
22253 ac_status=$?
22254 grep -v '^ *+' conftest.er1 >conftest.err
22255 rm -f conftest.er1
22256 cat conftest.err >&5
22257 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22258 (exit $ac_status); } && {
22259 test -z "$ac_c_werror_flag" ||
22260 test ! -s conftest.err
22261 } && test -s conftest$ac_exeext &&
22262 $as_test_x conftest$ac_exeext; then
22263 12589
22264 { echo "$as_me:$LINENO: result: no" >&5 12590 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
22265echo "${ECHO_T}no" >&6; } 12591$as_echo "no" >&6; }
22266 12592
22267else 12593else
22268 echo "$as_me: failed program was:" >&5
22269sed 's/^/| /' conftest.$ac_ext >&5
22270
22271 12594
22272 { echo "$as_me:$LINENO: result: yes" >&5 12595 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22273echo "${ECHO_T}yes" >&6; } 12596$as_echo "yes" >&6; }
22274 12597
22275cat >>confdefs.h <<\_ACEOF 12598$as_echo "#define OPENSSL_LOBOTOMISED_AES 1" >>confdefs.h
22276#define OPENSSL_LOBOTOMISED_AES 1
22277_ACEOF
22278 12599
22279 12600
22280 12601
22281fi 12602fi
22282 12603rm -f core conftest.err conftest.$ac_objext \
22283rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12604 conftest$ac_exeext conftest.$ac_ext
22284 conftest$ac_exeext conftest.$ac_ext
22285 12605
22286 # Check for OpenSSL with EVP_aes_*ctr 12606 # Check for OpenSSL with EVP_aes_*ctr
22287 { echo "$as_me:$LINENO: checking whether OpenSSL has AES CTR via EVP" >&5 12607 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has AES CTR via EVP" >&5
22288echo $ECHO_N "checking whether OpenSSL has AES CTR via EVP... $ECHO_C" >&6; } 12608$as_echo_n "checking whether OpenSSL has AES CTR via EVP... " >&6; }
22289 cat >conftest.$ac_ext <<_ACEOF 12609 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22290/* confdefs.h. */
22291_ACEOF
22292cat confdefs.h >>conftest.$ac_ext
22293cat >>conftest.$ac_ext <<_ACEOF
22294/* end confdefs.h. */ 12610/* end confdefs.h. */
22295 12611
22296 #include <string.h> 12612 #include <string.h>
@@ -22308,55 +12624,28 @@ main ()
22308 return 0; 12624 return 0;
22309} 12625}
22310_ACEOF 12626_ACEOF
22311rm -f conftest.$ac_objext conftest$ac_exeext 12627if ac_fn_c_try_link "$LINENO"; then :
22312if { (ac_try="$ac_link"
22313case "(($ac_try" in
22314 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22315 *) ac_try_echo=$ac_try;;
22316esac
22317eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22318 (eval "$ac_link") 2>conftest.er1
22319 ac_status=$?
22320 grep -v '^ *+' conftest.er1 >conftest.err
22321 rm -f conftest.er1
22322 cat conftest.err >&5
22323 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22324 (exit $ac_status); } && {
22325 test -z "$ac_c_werror_flag" ||
22326 test ! -s conftest.err
22327 } && test -s conftest$ac_exeext &&
22328 $as_test_x conftest$ac_exeext; then
22329 12628
22330 { echo "$as_me:$LINENO: result: yes" >&5 12629 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22331echo "${ECHO_T}yes" >&6; } 12630$as_echo "yes" >&6; }
22332 12631
22333cat >>confdefs.h <<\_ACEOF 12632$as_echo "#define OPENSSL_HAVE_EVPCTR 1" >>confdefs.h
22334#define OPENSSL_HAVE_EVPCTR 1
22335_ACEOF
22336 12633
22337 12634
22338else 12635else
22339 echo "$as_me: failed program was:" >&5
22340sed 's/^/| /' conftest.$ac_ext >&5
22341
22342 12636
22343 { echo "$as_me:$LINENO: result: no" >&5 12637 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
22344echo "${ECHO_T}no" >&6; } 12638$as_echo "no" >&6; }
22345 12639
22346 12640
22347fi 12641fi
22348 12642rm -f core conftest.err conftest.$ac_objext \
22349rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12643 conftest$ac_exeext conftest.$ac_ext
22350 conftest$ac_exeext conftest.$ac_ext
22351 12644
22352 # Check for OpenSSL with EVP_aes_*gcm 12645 # Check for OpenSSL with EVP_aes_*gcm
22353 { echo "$as_me:$LINENO: checking whether OpenSSL has AES GCM via EVP" >&5 12646 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has AES GCM via EVP" >&5
22354echo $ECHO_N "checking whether OpenSSL has AES GCM via EVP... $ECHO_C" >&6; } 12647$as_echo_n "checking whether OpenSSL has AES GCM via EVP... " >&6; }
22355 cat >conftest.$ac_ext <<_ACEOF 12648 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22356/* confdefs.h. */
22357_ACEOF
22358cat confdefs.h >>conftest.$ac_ext
22359cat >>conftest.$ac_ext <<_ACEOF
22360/* end confdefs.h. */ 12649/* end confdefs.h. */
22361 12650
22362 #include <string.h> 12651 #include <string.h>
@@ -22378,61 +12667,34 @@ main ()
22378 return 0; 12667 return 0;
22379} 12668}
22380_ACEOF 12669_ACEOF
22381rm -f conftest.$ac_objext conftest$ac_exeext 12670if ac_fn_c_try_link "$LINENO"; then :
22382if { (ac_try="$ac_link"
22383case "(($ac_try" in
22384 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22385 *) ac_try_echo=$ac_try;;
22386esac
22387eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22388 (eval "$ac_link") 2>conftest.er1
22389 ac_status=$?
22390 grep -v '^ *+' conftest.er1 >conftest.err
22391 rm -f conftest.er1
22392 cat conftest.err >&5
22393 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22394 (exit $ac_status); } && {
22395 test -z "$ac_c_werror_flag" ||
22396 test ! -s conftest.err
22397 } && test -s conftest$ac_exeext &&
22398 $as_test_x conftest$ac_exeext; then
22399 12671
22400 { echo "$as_me:$LINENO: result: yes" >&5 12672 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22401echo "${ECHO_T}yes" >&6; } 12673$as_echo "yes" >&6; }
22402 12674
22403cat >>confdefs.h <<\_ACEOF 12675$as_echo "#define OPENSSL_HAVE_EVPGCM 1" >>confdefs.h
22404#define OPENSSL_HAVE_EVPGCM 1
22405_ACEOF
22406 12676
22407 12677
22408else 12678else
22409 echo "$as_me: failed program was:" >&5
22410sed 's/^/| /' conftest.$ac_ext >&5
22411
22412 12679
22413 { echo "$as_me:$LINENO: result: no" >&5 12680 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
22414echo "${ECHO_T}no" >&6; } 12681$as_echo "no" >&6; }
22415 unsupported_algorithms="$unsupported_cipers \ 12682 unsupported_algorithms="$unsupported_cipers \
22416 aes128-gcm@openssh.com \ 12683 aes128-gcm@openssh.com \
22417 aes256-gcm@openssh.com" 12684 aes256-gcm@openssh.com"
22418 12685
22419 12686
22420fi 12687fi
12688rm -f core conftest.err conftest.$ac_objext \
12689 conftest$ac_exeext conftest.$ac_ext
22421 12690
22422rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12691 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EVP_CIPHER_CTX_ctrl" >&5
22423 conftest$ac_exeext conftest.$ac_ext 12692$as_echo_n "checking for library containing EVP_CIPHER_CTX_ctrl... " >&6; }
22424 12693if ${ac_cv_search_EVP_CIPHER_CTX_ctrl+:} false; then :
22425 { echo "$as_me:$LINENO: checking for library containing EVP_CIPHER_CTX_ctrl" >&5 12694 $as_echo_n "(cached) " >&6
22426echo $ECHO_N "checking for library containing EVP_CIPHER_CTX_ctrl... $ECHO_C" >&6; }
22427if test "${ac_cv_search_EVP_CIPHER_CTX_ctrl+set}" = set; then
22428 echo $ECHO_N "(cached) $ECHO_C" >&6
22429else 12695else
22430 ac_func_search_save_LIBS=$LIBS 12696 ac_func_search_save_LIBS=$LIBS
22431cat >conftest.$ac_ext <<_ACEOF 12697cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22432/* confdefs.h. */
22433_ACEOF
22434cat confdefs.h >>conftest.$ac_ext
22435cat >>conftest.$ac_ext <<_ACEOF
22436/* end confdefs.h. */ 12698/* end confdefs.h. */
22437 12699
22438/* Override any GCC internal prototype to avoid an error. 12700/* Override any GCC internal prototype to avoid an error.
@@ -22457,66 +12719,37 @@ for ac_lib in '' crypto; do
22457 ac_res=-l$ac_lib 12719 ac_res=-l$ac_lib
22458 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 12720 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
22459 fi 12721 fi
22460 rm -f conftest.$ac_objext conftest$ac_exeext 12722 if ac_fn_c_try_link "$LINENO"; then :
22461if { (ac_try="$ac_link"
22462case "(($ac_try" in
22463 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22464 *) ac_try_echo=$ac_try;;
22465esac
22466eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22467 (eval "$ac_link") 2>conftest.er1
22468 ac_status=$?
22469 grep -v '^ *+' conftest.er1 >conftest.err
22470 rm -f conftest.er1
22471 cat conftest.err >&5
22472 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22473 (exit $ac_status); } && {
22474 test -z "$ac_c_werror_flag" ||
22475 test ! -s conftest.err
22476 } && test -s conftest$ac_exeext &&
22477 $as_test_x conftest$ac_exeext; then
22478 ac_cv_search_EVP_CIPHER_CTX_ctrl=$ac_res 12723 ac_cv_search_EVP_CIPHER_CTX_ctrl=$ac_res
22479else
22480 echo "$as_me: failed program was:" >&5
22481sed 's/^/| /' conftest.$ac_ext >&5
22482
22483
22484fi 12724fi
22485 12725rm -f core conftest.err conftest.$ac_objext \
22486rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12726 conftest$ac_exeext
22487 conftest$ac_exeext 12727 if ${ac_cv_search_EVP_CIPHER_CTX_ctrl+:} false; then :
22488 if test "${ac_cv_search_EVP_CIPHER_CTX_ctrl+set}" = set; then
22489 break 12728 break
22490fi 12729fi
22491done 12730done
22492if test "${ac_cv_search_EVP_CIPHER_CTX_ctrl+set}" = set; then 12731if ${ac_cv_search_EVP_CIPHER_CTX_ctrl+:} false; then :
22493 : 12732
22494else 12733else
22495 ac_cv_search_EVP_CIPHER_CTX_ctrl=no 12734 ac_cv_search_EVP_CIPHER_CTX_ctrl=no
22496fi 12735fi
22497rm conftest.$ac_ext 12736rm conftest.$ac_ext
22498LIBS=$ac_func_search_save_LIBS 12737LIBS=$ac_func_search_save_LIBS
22499fi 12738fi
22500{ echo "$as_me:$LINENO: result: $ac_cv_search_EVP_CIPHER_CTX_ctrl" >&5 12739{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EVP_CIPHER_CTX_ctrl" >&5
22501echo "${ECHO_T}$ac_cv_search_EVP_CIPHER_CTX_ctrl" >&6; } 12740$as_echo "$ac_cv_search_EVP_CIPHER_CTX_ctrl" >&6; }
22502ac_res=$ac_cv_search_EVP_CIPHER_CTX_ctrl 12741ac_res=$ac_cv_search_EVP_CIPHER_CTX_ctrl
22503if test "$ac_res" != no; then 12742if test "$ac_res" != no; then :
22504 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 12743 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
22505 12744
22506cat >>confdefs.h <<\_ACEOF 12745$as_echo "#define HAVE_EVP_CIPHER_CTX_CTRL 1" >>confdefs.h
22507#define HAVE_EVP_CIPHER_CTX_CTRL 1
22508_ACEOF
22509 12746
22510fi 12747fi
22511 12748
22512 12749
22513 { echo "$as_me:$LINENO: checking if EVP_DigestUpdate returns an int" >&5 12750 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if EVP_DigestUpdate returns an int" >&5
22514echo $ECHO_N "checking if EVP_DigestUpdate returns an int... $ECHO_C" >&6; } 12751$as_echo_n "checking if EVP_DigestUpdate returns an int... " >&6; }
22515 cat >conftest.$ac_ext <<_ACEOF 12752 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22516/* confdefs.h. */
22517_ACEOF
22518cat confdefs.h >>conftest.$ac_ext
22519cat >>conftest.$ac_ext <<_ACEOF
22520/* end confdefs.h. */ 12753/* end confdefs.h. */
22521 12754
22522 #include <string.h> 12755 #include <string.h>
@@ -22533,63 +12766,35 @@ main ()
22533 return 0; 12766 return 0;
22534} 12767}
22535_ACEOF 12768_ACEOF
22536rm -f conftest.$ac_objext conftest$ac_exeext 12769if ac_fn_c_try_link "$LINENO"; then :
22537if { (ac_try="$ac_link"
22538case "(($ac_try" in
22539 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22540 *) ac_try_echo=$ac_try;;
22541esac
22542eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22543 (eval "$ac_link") 2>conftest.er1
22544 ac_status=$?
22545 grep -v '^ *+' conftest.er1 >conftest.err
22546 rm -f conftest.er1
22547 cat conftest.err >&5
22548 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22549 (exit $ac_status); } && {
22550 test -z "$ac_c_werror_flag" ||
22551 test ! -s conftest.err
22552 } && test -s conftest$ac_exeext &&
22553 $as_test_x conftest$ac_exeext; then
22554 12770
22555 { echo "$as_me:$LINENO: result: yes" >&5 12771 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
22556echo "${ECHO_T}yes" >&6; } 12772$as_echo "yes" >&6; }
22557 12773
22558else 12774else
22559 echo "$as_me: failed program was:" >&5
22560sed 's/^/| /' conftest.$ac_ext >&5
22561 12775
12776 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12777$as_echo "no" >&6; }
22562 12778
22563 { echo "$as_me:$LINENO: result: no" >&5 12779$as_echo "#define OPENSSL_EVP_DIGESTUPDATE_VOID 1" >>confdefs.h
22564echo "${ECHO_T}no" >&6; }
22565
22566cat >>confdefs.h <<\_ACEOF
22567#define OPENSSL_EVP_DIGESTUPDATE_VOID 1
22568_ACEOF
22569 12780
22570 12781
22571 12782
22572fi 12783fi
22573 12784rm -f core conftest.err conftest.$ac_objext \
22574rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12785 conftest$ac_exeext conftest.$ac_ext
22575 conftest$ac_exeext conftest.$ac_ext
22576 12786
22577 # Some systems want crypt() from libcrypt, *not* the version in OpenSSL, 12787 # Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
22578 # because the system crypt() is more featureful. 12788 # because the system crypt() is more featureful.
22579 if test "x$check_for_libcrypt_before" = "x1"; then 12789 if test "x$check_for_libcrypt_before" = "x1"; then
22580 12790 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
22581{ echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 12791$as_echo_n "checking for crypt in -lcrypt... " >&6; }
22582echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } 12792if ${ac_cv_lib_crypt_crypt+:} false; then :
22583if test "${ac_cv_lib_crypt_crypt+set}" = set; then 12793 $as_echo_n "(cached) " >&6
22584 echo $ECHO_N "(cached) $ECHO_C" >&6
22585else 12794else
22586 ac_check_lib_save_LIBS=$LIBS 12795 ac_check_lib_save_LIBS=$LIBS
22587LIBS="-lcrypt $LIBS" 12796LIBS="-lcrypt $LIBS"
22588cat >conftest.$ac_ext <<_ACEOF 12797cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22589/* confdefs.h. */
22590_ACEOF
22591cat confdefs.h >>conftest.$ac_ext
22592cat >>conftest.$ac_ext <<_ACEOF
22593/* end confdefs.h. */ 12798/* end confdefs.h. */
22594 12799
22595/* Override any GCC internal prototype to avoid an error. 12800/* Override any GCC internal prototype to avoid an error.
@@ -22607,39 +12812,18 @@ return crypt ();
22607 return 0; 12812 return 0;
22608} 12813}
22609_ACEOF 12814_ACEOF
22610rm -f conftest.$ac_objext conftest$ac_exeext 12815if ac_fn_c_try_link "$LINENO"; then :
22611if { (ac_try="$ac_link"
22612case "(($ac_try" in
22613 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22614 *) ac_try_echo=$ac_try;;
22615esac
22616eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22617 (eval "$ac_link") 2>conftest.er1
22618 ac_status=$?
22619 grep -v '^ *+' conftest.er1 >conftest.err
22620 rm -f conftest.er1
22621 cat conftest.err >&5
22622 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22623 (exit $ac_status); } && {
22624 test -z "$ac_c_werror_flag" ||
22625 test ! -s conftest.err
22626 } && test -s conftest$ac_exeext &&
22627 $as_test_x conftest$ac_exeext; then
22628 ac_cv_lib_crypt_crypt=yes 12816 ac_cv_lib_crypt_crypt=yes
22629else 12817else
22630 echo "$as_me: failed program was:" >&5 12818 ac_cv_lib_crypt_crypt=no
22631sed 's/^/| /' conftest.$ac_ext >&5
22632
22633 ac_cv_lib_crypt_crypt=no
22634fi 12819fi
22635 12820rm -f core conftest.err conftest.$ac_objext \
22636rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12821 conftest$ac_exeext conftest.$ac_ext
22637 conftest$ac_exeext conftest.$ac_ext
22638LIBS=$ac_check_lib_save_LIBS 12822LIBS=$ac_check_lib_save_LIBS
22639fi 12823fi
22640{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 12824{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
22641echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } 12825$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
22642if test $ac_cv_lib_crypt_crypt = yes; then 12826if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
22643 cat >>confdefs.h <<_ACEOF 12827 cat >>confdefs.h <<_ACEOF
22644#define HAVE_LIBCRYPT 1 12828#define HAVE_LIBCRYPT 1
22645_ACEOF 12829_ACEOF
@@ -22653,18 +12837,14 @@ fi
22653 # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the 12837 # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
22654 # version in OpenSSL. 12838 # version in OpenSSL.
22655 if test "x$check_for_libcrypt_later" = "x1"; then 12839 if test "x$check_for_libcrypt_later" = "x1"; then
22656 { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 12840 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
22657echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } 12841$as_echo_n "checking for crypt in -lcrypt... " >&6; }
22658if test "${ac_cv_lib_crypt_crypt+set}" = set; then 12842if ${ac_cv_lib_crypt_crypt+:} false; then :
22659 echo $ECHO_N "(cached) $ECHO_C" >&6 12843 $as_echo_n "(cached) " >&6
22660else 12844else
22661 ac_check_lib_save_LIBS=$LIBS 12845 ac_check_lib_save_LIBS=$LIBS
22662LIBS="-lcrypt $LIBS" 12846LIBS="-lcrypt $LIBS"
22663cat >conftest.$ac_ext <<_ACEOF 12847cat confdefs.h - <<_ACEOF >conftest.$ac_ext
22664/* confdefs.h. */
22665_ACEOF
22666cat confdefs.h >>conftest.$ac_ext
22667cat >>conftest.$ac_ext <<_ACEOF
22668/* end confdefs.h. */ 12848/* end confdefs.h. */
22669 12849
22670/* Override any GCC internal prototype to avoid an error. 12850/* Override any GCC internal prototype to avoid an error.
@@ -22682,133 +12862,29 @@ return crypt ();
22682 return 0; 12862 return 0;
22683} 12863}
22684_ACEOF 12864_ACEOF
22685rm -f conftest.$ac_objext conftest$ac_exeext 12865if ac_fn_c_try_link "$LINENO"; then :
22686if { (ac_try="$ac_link"
22687case "(($ac_try" in
22688 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22689 *) ac_try_echo=$ac_try;;
22690esac
22691eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22692 (eval "$ac_link") 2>conftest.er1
22693 ac_status=$?
22694 grep -v '^ *+' conftest.er1 >conftest.err
22695 rm -f conftest.er1
22696 cat conftest.err >&5
22697 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22698 (exit $ac_status); } && {
22699 test -z "$ac_c_werror_flag" ||
22700 test ! -s conftest.err
22701 } && test -s conftest$ac_exeext &&
22702 $as_test_x conftest$ac_exeext; then
22703 ac_cv_lib_crypt_crypt=yes 12866 ac_cv_lib_crypt_crypt=yes
22704else 12867else
22705 echo "$as_me: failed program was:" >&5 12868 ac_cv_lib_crypt_crypt=no
22706sed 's/^/| /' conftest.$ac_ext >&5
22707
22708 ac_cv_lib_crypt_crypt=no
22709fi 12869fi
22710 12870rm -f core conftest.err conftest.$ac_objext \
22711rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12871 conftest$ac_exeext conftest.$ac_ext
22712 conftest$ac_exeext conftest.$ac_ext
22713LIBS=$ac_check_lib_save_LIBS 12872LIBS=$ac_check_lib_save_LIBS
22714fi 12873fi
22715{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 12874{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
22716echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } 12875$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
22717if test $ac_cv_lib_crypt_crypt = yes; then 12876if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
22718 LIBS="$LIBS -lcrypt" 12877 LIBS="$LIBS -lcrypt"
22719fi 12878fi
22720 12879
22721 fi 12880 fi
22722 12881 for ac_func in crypt DES_crypt
22723 12882do :
22724for ac_func in crypt DES_crypt 12883 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
22725do 12884ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
22726as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 12885if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
22727{ echo "$as_me:$LINENO: checking for $ac_func" >&5
22728echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
22729if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
22730 echo $ECHO_N "(cached) $ECHO_C" >&6
22731else
22732 cat >conftest.$ac_ext <<_ACEOF
22733/* confdefs.h. */
22734_ACEOF
22735cat confdefs.h >>conftest.$ac_ext
22736cat >>conftest.$ac_ext <<_ACEOF
22737/* end confdefs.h. */
22738/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
22739 For example, HP-UX 11i <limits.h> declares gettimeofday. */
22740#define $ac_func innocuous_$ac_func
22741
22742/* System header to define __stub macros and hopefully few prototypes,
22743 which can conflict with char $ac_func (); below.
22744 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
22745 <limits.h> exists even on freestanding compilers. */
22746
22747#ifdef __STDC__
22748# include <limits.h>
22749#else
22750# include <assert.h>
22751#endif
22752
22753#undef $ac_func
22754
22755/* Override any GCC internal prototype to avoid an error.
22756 Use char because int might match the return type of a GCC
22757 builtin and then its argument prototype would still apply. */
22758#ifdef __cplusplus
22759extern "C"
22760#endif
22761char $ac_func ();
22762/* The GNU C library defines this for functions which it implements
22763 to always fail with ENOSYS. Some functions are actually named
22764 something starting with __ and the normal name is an alias. */
22765#if defined __stub_$ac_func || defined __stub___$ac_func
22766choke me
22767#endif
22768
22769int
22770main ()
22771{
22772return $ac_func ();
22773 ;
22774 return 0;
22775}
22776_ACEOF
22777rm -f conftest.$ac_objext conftest$ac_exeext
22778if { (ac_try="$ac_link"
22779case "(($ac_try" in
22780 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22781 *) ac_try_echo=$ac_try;;
22782esac
22783eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22784 (eval "$ac_link") 2>conftest.er1
22785 ac_status=$?
22786 grep -v '^ *+' conftest.er1 >conftest.err
22787 rm -f conftest.er1
22788 cat conftest.err >&5
22789 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22790 (exit $ac_status); } && {
22791 test -z "$ac_c_werror_flag" ||
22792 test ! -s conftest.err
22793 } && test -s conftest$ac_exeext &&
22794 $as_test_x conftest$ac_exeext; then
22795 eval "$as_ac_var=yes"
22796else
22797 echo "$as_me: failed program was:" >&5
22798sed 's/^/| /' conftest.$ac_ext >&5
22799
22800 eval "$as_ac_var=no"
22801fi
22802
22803rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22804 conftest$ac_exeext conftest.$ac_ext
22805fi
22806ac_res=`eval echo '${'$as_ac_var'}'`
22807 { echo "$as_me:$LINENO: result: $ac_res" >&5
22808echo "${ECHO_T}$ac_res" >&6; }
22809if test `eval echo '${'$as_ac_var'}'` = yes; then
22810 cat >>confdefs.h <<_ACEOF 12886 cat >>confdefs.h <<_ACEOF
22811#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 12887#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
22812_ACEOF 12888_ACEOF
22813 12889
22814fi 12890fi
@@ -22816,96 +12892,13 @@ done
22816 12892
22817 12893
22818 # Search for SHA256 support in libc and/or OpenSSL 12894 # Search for SHA256 support in libc and/or OpenSSL
22819 12895 for ac_func in SHA256_Update EVP_sha256
22820 12896do :
22821for ac_func in SHA256_Update EVP_sha256 12897 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
22822do 12898ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
22823as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 12899if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
22824{ echo "$as_me:$LINENO: checking for $ac_func" >&5
22825echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
22826if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
22827 echo $ECHO_N "(cached) $ECHO_C" >&6
22828else
22829 cat >conftest.$ac_ext <<_ACEOF
22830/* confdefs.h. */
22831_ACEOF
22832cat confdefs.h >>conftest.$ac_ext
22833cat >>conftest.$ac_ext <<_ACEOF
22834/* end confdefs.h. */
22835/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
22836 For example, HP-UX 11i <limits.h> declares gettimeofday. */
22837#define $ac_func innocuous_$ac_func
22838
22839/* System header to define __stub macros and hopefully few prototypes,
22840 which can conflict with char $ac_func (); below.
22841 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
22842 <limits.h> exists even on freestanding compilers. */
22843
22844#ifdef __STDC__
22845# include <limits.h>
22846#else
22847# include <assert.h>
22848#endif
22849
22850#undef $ac_func
22851
22852/* Override any GCC internal prototype to avoid an error.
22853 Use char because int might match the return type of a GCC
22854 builtin and then its argument prototype would still apply. */
22855#ifdef __cplusplus
22856extern "C"
22857#endif
22858char $ac_func ();
22859/* The GNU C library defines this for functions which it implements
22860 to always fail with ENOSYS. Some functions are actually named
22861 something starting with __ and the normal name is an alias. */
22862#if defined __stub_$ac_func || defined __stub___$ac_func
22863choke me
22864#endif
22865
22866int
22867main ()
22868{
22869return $ac_func ();
22870 ;
22871 return 0;
22872}
22873_ACEOF
22874rm -f conftest.$ac_objext conftest$ac_exeext
22875if { (ac_try="$ac_link"
22876case "(($ac_try" in
22877 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22878 *) ac_try_echo=$ac_try;;
22879esac
22880eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22881 (eval "$ac_link") 2>conftest.er1
22882 ac_status=$?
22883 grep -v '^ *+' conftest.er1 >conftest.err
22884 rm -f conftest.er1
22885 cat conftest.err >&5
22886 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22887 (exit $ac_status); } && {
22888 test -z "$ac_c_werror_flag" ||
22889 test ! -s conftest.err
22890 } && test -s conftest$ac_exeext &&
22891 $as_test_x conftest$ac_exeext; then
22892 eval "$as_ac_var=yes"
22893else
22894 echo "$as_me: failed program was:" >&5
22895sed 's/^/| /' conftest.$ac_ext >&5
22896
22897 eval "$as_ac_var=no"
22898fi
22899
22900rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22901 conftest$ac_exeext conftest.$ac_ext
22902fi
22903ac_res=`eval echo '${'$as_ac_var'}'`
22904 { echo "$as_me:$LINENO: result: $ac_res" >&5
22905echo "${ECHO_T}$ac_res" >&6; }
22906if test `eval echo '${'$as_ac_var'}'` = yes; then
22907 cat >>confdefs.h <<_ACEOF 12900 cat >>confdefs.h <<_ACEOF
22908#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 12901#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
22909_ACEOF 12902_ACEOF
22910 12903
22911else 12904else
@@ -22921,95 +12914,12 @@ fi
22921done 12914done
22922 12915
22923 # Search for RIPE-MD support in OpenSSL 12916 # Search for RIPE-MD support in OpenSSL
22924 12917 for ac_func in EVP_ripemd160
22925for ac_func in EVP_ripemd160 12918do :
22926do 12919 ac_fn_c_check_func "$LINENO" "EVP_ripemd160" "ac_cv_func_EVP_ripemd160"
22927as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 12920if test "x$ac_cv_func_EVP_ripemd160" = xyes; then :
22928{ echo "$as_me:$LINENO: checking for $ac_func" >&5
22929echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
22930if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
22931 echo $ECHO_N "(cached) $ECHO_C" >&6
22932else
22933 cat >conftest.$ac_ext <<_ACEOF
22934/* confdefs.h. */
22935_ACEOF
22936cat confdefs.h >>conftest.$ac_ext
22937cat >>conftest.$ac_ext <<_ACEOF
22938/* end confdefs.h. */
22939/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
22940 For example, HP-UX 11i <limits.h> declares gettimeofday. */
22941#define $ac_func innocuous_$ac_func
22942
22943/* System header to define __stub macros and hopefully few prototypes,
22944 which can conflict with char $ac_func (); below.
22945 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
22946 <limits.h> exists even on freestanding compilers. */
22947
22948#ifdef __STDC__
22949# include <limits.h>
22950#else
22951# include <assert.h>
22952#endif
22953
22954#undef $ac_func
22955
22956/* Override any GCC internal prototype to avoid an error.
22957 Use char because int might match the return type of a GCC
22958 builtin and then its argument prototype would still apply. */
22959#ifdef __cplusplus
22960extern "C"
22961#endif
22962char $ac_func ();
22963/* The GNU C library defines this for functions which it implements
22964 to always fail with ENOSYS. Some functions are actually named
22965 something starting with __ and the normal name is an alias. */
22966#if defined __stub_$ac_func || defined __stub___$ac_func
22967choke me
22968#endif
22969
22970int
22971main ()
22972{
22973return $ac_func ();
22974 ;
22975 return 0;
22976}
22977_ACEOF
22978rm -f conftest.$ac_objext conftest$ac_exeext
22979if { (ac_try="$ac_link"
22980case "(($ac_try" in
22981 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22982 *) ac_try_echo=$ac_try;;
22983esac
22984eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22985 (eval "$ac_link") 2>conftest.er1
22986 ac_status=$?
22987 grep -v '^ *+' conftest.er1 >conftest.err
22988 rm -f conftest.er1
22989 cat conftest.err >&5
22990 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22991 (exit $ac_status); } && {
22992 test -z "$ac_c_werror_flag" ||
22993 test ! -s conftest.err
22994 } && test -s conftest$ac_exeext &&
22995 $as_test_x conftest$ac_exeext; then
22996 eval "$as_ac_var=yes"
22997else
22998 echo "$as_me: failed program was:" >&5
22999sed 's/^/| /' conftest.$ac_ext >&5
23000
23001 eval "$as_ac_var=no"
23002fi
23003
23004rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23005 conftest$ac_exeext conftest.$ac_ext
23006fi
23007ac_res=`eval echo '${'$as_ac_var'}'`
23008 { echo "$as_me:$LINENO: result: $ac_res" >&5
23009echo "${ECHO_T}$ac_res" >&6; }
23010if test `eval echo '${'$as_ac_var'}'` = yes; then
23011 cat >>confdefs.h <<_ACEOF 12921 cat >>confdefs.h <<_ACEOF
23012#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 12922#define HAVE_EVP_RIPEMD160 1
23013_ACEOF 12923_ACEOF
23014 12924
23015else 12925else
@@ -23024,13 +12934,9 @@ done
23024 12934
23025 12935
23026 # Check complete ECC support in OpenSSL 12936 # Check complete ECC support in OpenSSL
23027 { echo "$as_me:$LINENO: checking whether OpenSSL has NID_X9_62_prime256v1" >&5 12937 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_X9_62_prime256v1" >&5
23028echo $ECHO_N "checking whether OpenSSL has NID_X9_62_prime256v1... $ECHO_C" >&6; } 12938$as_echo_n "checking whether OpenSSL has NID_X9_62_prime256v1... " >&6; }
23029 cat >conftest.$ac_ext <<_ACEOF 12939 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23030/* confdefs.h. */
23031_ACEOF
23032cat confdefs.h >>conftest.$ac_ext
23033cat >>conftest.$ac_ext <<_ACEOF
23034/* end confdefs.h. */ 12940/* end confdefs.h. */
23035 12941
23036 #include <openssl/ec.h> 12942 #include <openssl/ec.h>
@@ -23054,46 +12960,21 @@ main ()
23054 return 0; 12960 return 0;
23055} 12961}
23056_ACEOF 12962_ACEOF
23057rm -f conftest.$ac_objext conftest$ac_exeext 12963if ac_fn_c_try_link "$LINENO"; then :
23058if { (ac_try="$ac_link" 12964 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23059case "(($ac_try" in 12965$as_echo "yes" >&6; }
23060 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23061 *) ac_try_echo=$ac_try;;
23062esac
23063eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23064 (eval "$ac_link") 2>conftest.er1
23065 ac_status=$?
23066 grep -v '^ *+' conftest.er1 >conftest.err
23067 rm -f conftest.er1
23068 cat conftest.err >&5
23069 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23070 (exit $ac_status); } && {
23071 test -z "$ac_c_werror_flag" ||
23072 test ! -s conftest.err
23073 } && test -s conftest$ac_exeext &&
23074 $as_test_x conftest$ac_exeext; then
23075 { echo "$as_me:$LINENO: result: yes" >&5
23076echo "${ECHO_T}yes" >&6; }
23077 enable_nistp256=1 12966 enable_nistp256=1
23078else 12967else
23079 echo "$as_me: failed program was:" >&5 12968 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
23080sed 's/^/| /' conftest.$ac_ext >&5 12969$as_echo "no" >&6; }
23081
23082 { echo "$as_me:$LINENO: result: no" >&5
23083echo "${ECHO_T}no" >&6; }
23084 12970
23085fi 12971fi
12972rm -f core conftest.err conftest.$ac_objext \
12973 conftest$ac_exeext conftest.$ac_ext
23086 12974
23087rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 12975 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp384r1" >&5
23088 conftest$ac_exeext conftest.$ac_ext 12976$as_echo_n "checking whether OpenSSL has NID_secp384r1... " >&6; }
23089 12977 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23090 { echo "$as_me:$LINENO: checking whether OpenSSL has NID_secp384r1" >&5
23091echo $ECHO_N "checking whether OpenSSL has NID_secp384r1... $ECHO_C" >&6; }
23092 cat >conftest.$ac_ext <<_ACEOF
23093/* confdefs.h. */
23094_ACEOF
23095cat confdefs.h >>conftest.$ac_ext
23096cat >>conftest.$ac_ext <<_ACEOF
23097/* end confdefs.h. */ 12978/* end confdefs.h. */
23098 12979
23099 #include <openssl/ec.h> 12980 #include <openssl/ec.h>
@@ -23117,46 +12998,21 @@ main ()
23117 return 0; 12998 return 0;
23118} 12999}
23119_ACEOF 13000_ACEOF
23120rm -f conftest.$ac_objext conftest$ac_exeext 13001if ac_fn_c_try_link "$LINENO"; then :
23121if { (ac_try="$ac_link" 13002 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23122case "(($ac_try" in 13003$as_echo "yes" >&6; }
23123 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23124 *) ac_try_echo=$ac_try;;
23125esac
23126eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23127 (eval "$ac_link") 2>conftest.er1
23128 ac_status=$?
23129 grep -v '^ *+' conftest.er1 >conftest.err
23130 rm -f conftest.er1
23131 cat conftest.err >&5
23132 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23133 (exit $ac_status); } && {
23134 test -z "$ac_c_werror_flag" ||
23135 test ! -s conftest.err
23136 } && test -s conftest$ac_exeext &&
23137 $as_test_x conftest$ac_exeext; then
23138 { echo "$as_me:$LINENO: result: yes" >&5
23139echo "${ECHO_T}yes" >&6; }
23140 enable_nistp384=1 13004 enable_nistp384=1
23141else 13005else
23142 echo "$as_me: failed program was:" >&5 13006 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
23143sed 's/^/| /' conftest.$ac_ext >&5 13007$as_echo "no" >&6; }
23144
23145 { echo "$as_me:$LINENO: result: no" >&5
23146echo "${ECHO_T}no" >&6; }
23147 13008
23148fi 13009fi
13010rm -f core conftest.err conftest.$ac_objext \
13011 conftest$ac_exeext conftest.$ac_ext
23149 13012
23150rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13013 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp521r1" >&5
23151 conftest$ac_exeext conftest.$ac_ext 13014$as_echo_n "checking whether OpenSSL has NID_secp521r1... " >&6; }
23152 13015 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23153 { echo "$as_me:$LINENO: checking whether OpenSSL has NID_secp521r1" >&5
23154echo $ECHO_N "checking whether OpenSSL has NID_secp521r1... $ECHO_C" >&6; }
23155 cat >conftest.$ac_ext <<_ACEOF
23156/* confdefs.h. */
23157_ACEOF
23158cat confdefs.h >>conftest.$ac_ext
23159cat >>conftest.$ac_ext <<_ACEOF
23160/* end confdefs.h. */ 13016/* end confdefs.h. */
23161 13017
23162 #include <openssl/ec.h> 13018 #include <openssl/ec.h>
@@ -23180,39 +13036,18 @@ main ()
23180 return 0; 13036 return 0;
23181} 13037}
23182_ACEOF 13038_ACEOF
23183rm -f conftest.$ac_objext conftest$ac_exeext 13039if ac_fn_c_try_link "$LINENO"; then :
23184if { (ac_try="$ac_link" 13040 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23185case "(($ac_try" in 13041$as_echo "yes" >&6; }
23186 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 13042 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if OpenSSL's NID_secp521r1 is functional" >&5
23187 *) ac_try_echo=$ac_try;; 13043$as_echo_n "checking if OpenSSL's NID_secp521r1 is functional... " >&6; }
23188esac 13044 if test "$cross_compiling" = yes; then :
23189eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 13045 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross-compiling: assuming yes" >&5
23190 (eval "$ac_link") 2>conftest.er1 13046$as_echo "$as_me: WARNING: cross-compiling: assuming yes" >&2;}
23191 ac_status=$?
23192 grep -v '^ *+' conftest.er1 >conftest.err
23193 rm -f conftest.er1
23194 cat conftest.err >&5
23195 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23196 (exit $ac_status); } && {
23197 test -z "$ac_c_werror_flag" ||
23198 test ! -s conftest.err
23199 } && test -s conftest$ac_exeext &&
23200 $as_test_x conftest$ac_exeext; then
23201 { echo "$as_me:$LINENO: result: yes" >&5
23202echo "${ECHO_T}yes" >&6; }
23203 { echo "$as_me:$LINENO: checking if OpenSSL's NID_secp521r1 is functional" >&5
23204echo $ECHO_N "checking if OpenSSL's NID_secp521r1 is functional... $ECHO_C" >&6; }
23205 if test "$cross_compiling" = yes; then
23206 { echo "$as_me:$LINENO: WARNING: cross-compiling: assuming yes" >&5
23207echo "$as_me: WARNING: cross-compiling: assuming yes" >&2;}
23208 enable_nistp521=1 13047 enable_nistp521=1
23209 13048
23210else 13049else
23211 cat >conftest.$ac_ext <<_ACEOF 13050 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23212/* confdefs.h. */
23213_ACEOF
23214cat confdefs.h >>conftest.$ac_ext
23215cat >>conftest.$ac_ext <<_ACEOF
23216/* end confdefs.h. */ 13051/* end confdefs.h. */
23217 13052
23218 #include <openssl/ec.h> 13053 #include <openssl/ec.h>
@@ -23234,53 +13069,25 @@ main ()
23234 return 0; 13069 return 0;
23235} 13070}
23236_ACEOF 13071_ACEOF
23237rm -f conftest$ac_exeext 13072if ac_fn_c_try_run "$LINENO"; then :
23238if { (ac_try="$ac_link" 13073 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23239case "(($ac_try" in 13074$as_echo "yes" >&6; }
23240 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23241 *) ac_try_echo=$ac_try;;
23242esac
23243eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23244 (eval "$ac_link") 2>&5
23245 ac_status=$?
23246 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23247 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
23248 { (case "(($ac_try" in
23249 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23250 *) ac_try_echo=$ac_try;;
23251esac
23252eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23253 (eval "$ac_try") 2>&5
23254 ac_status=$?
23255 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23256 (exit $ac_status); }; }; then
23257 { echo "$as_me:$LINENO: result: yes" >&5
23258echo "${ECHO_T}yes" >&6; }
23259 enable_nistp521=1 13075 enable_nistp521=1
23260else 13076else
23261 echo "$as_me: program exited with status $ac_status" >&5 13077 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
23262echo "$as_me: failed program was:" >&5 13078$as_echo "no" >&6; }
23263sed 's/^/| /' conftest.$ac_ext >&5
23264
23265( exit $ac_status )
23266 { echo "$as_me:$LINENO: result: no" >&5
23267echo "${ECHO_T}no" >&6; }
23268fi 13079fi
23269rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 13080rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13081 conftest.$ac_objext conftest.beam conftest.$ac_ext
23270fi 13082fi
23271 13083
23272
23273else 13084else
23274 echo "$as_me: failed program was:" >&5 13085 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
23275sed 's/^/| /' conftest.$ac_ext >&5 13086$as_echo "no" >&6; }
23276
23277 { echo "$as_me:$LINENO: result: no" >&5
23278echo "${ECHO_T}no" >&6; }
23279 13087
23280fi 13088fi
23281 13089rm -f core conftest.err conftest.$ac_objext \
23282rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13090 conftest$ac_exeext conftest.$ac_ext
23283 conftest$ac_exeext conftest.$ac_ext
23284 13091
23285 COMMENT_OUT_ECC="#no ecc#" 13092 COMMENT_OUT_ECC="#no ecc#"
23286 TEST_SSH_ECC=no 13093 TEST_SSH_ECC=no
@@ -23288,16 +13095,12 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23288 if test x$enable_nistp256 = x1 || test x$enable_nistp384 = x1 || \ 13095 if test x$enable_nistp256 = x1 || test x$enable_nistp384 = x1 || \
23289 test x$enable_nistp521 = x1; then 13096 test x$enable_nistp521 = x1; then
23290 13097
23291cat >>confdefs.h <<\_ACEOF 13098$as_echo "#define OPENSSL_HAS_ECC 1" >>confdefs.h
23292#define OPENSSL_HAS_ECC 1
23293_ACEOF
23294 13099
23295 fi 13100 fi
23296 if test x$enable_nistp256 = x1; then 13101 if test x$enable_nistp256 = x1; then
23297 13102
23298cat >>confdefs.h <<\_ACEOF 13103$as_echo "#define OPENSSL_HAS_NISTP256 1" >>confdefs.h
23299#define OPENSSL_HAS_NISTP256 1
23300_ACEOF
23301 13104
23302 TEST_SSH_ECC=yes 13105 TEST_SSH_ECC=yes
23303 COMMENT_OUT_ECC="" 13106 COMMENT_OUT_ECC=""
@@ -23309,9 +13112,7 @@ _ACEOF
23309 fi 13112 fi
23310 if test x$enable_nistp384 = x1; then 13113 if test x$enable_nistp384 = x1; then
23311 13114
23312cat >>confdefs.h <<\_ACEOF 13115$as_echo "#define OPENSSL_HAS_NISTP384 1" >>confdefs.h
23313#define OPENSSL_HAS_NISTP384 1
23314_ACEOF
23315 13116
23316 TEST_SSH_ECC=yes 13117 TEST_SSH_ECC=yes
23317 COMMENT_OUT_ECC="" 13118 COMMENT_OUT_ECC=""
@@ -23323,9 +13124,7 @@ _ACEOF
23323 fi 13124 fi
23324 if test x$enable_nistp521 = x1; then 13125 if test x$enable_nistp521 = x1; then
23325 13126
23326cat >>confdefs.h <<\_ACEOF 13127$as_echo "#define OPENSSL_HAS_NISTP521 1" >>confdefs.h
23327#define OPENSSL_HAS_NISTP521 1
23328_ACEOF
23329 13128
23330 TEST_SSH_ECC=yes 13129 TEST_SSH_ECC=yes
23331 COMMENT_OUT_ECC="" 13130 COMMENT_OUT_ECC=""
@@ -23339,18 +13138,14 @@ _ACEOF
23339 13138
23340 13139
23341else 13140else
23342 { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 13141 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
23343echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } 13142$as_echo_n "checking for crypt in -lcrypt... " >&6; }
23344if test "${ac_cv_lib_crypt_crypt+set}" = set; then 13143if ${ac_cv_lib_crypt_crypt+:} false; then :
23345 echo $ECHO_N "(cached) $ECHO_C" >&6 13144 $as_echo_n "(cached) " >&6
23346else 13145else
23347 ac_check_lib_save_LIBS=$LIBS 13146 ac_check_lib_save_LIBS=$LIBS
23348LIBS="-lcrypt $LIBS" 13147LIBS="-lcrypt $LIBS"
23349cat >conftest.$ac_ext <<_ACEOF 13148cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23350/* confdefs.h. */
23351_ACEOF
23352cat confdefs.h >>conftest.$ac_ext
23353cat >>conftest.$ac_ext <<_ACEOF
23354/* end confdefs.h. */ 13149/* end confdefs.h. */
23355 13150
23356/* Override any GCC internal prototype to avoid an error. 13151/* Override any GCC internal prototype to avoid an error.
@@ -23368,131 +13163,27 @@ return crypt ();
23368 return 0; 13163 return 0;
23369} 13164}
23370_ACEOF 13165_ACEOF
23371rm -f conftest.$ac_objext conftest$ac_exeext 13166if ac_fn_c_try_link "$LINENO"; then :
23372if { (ac_try="$ac_link"
23373case "(($ac_try" in
23374 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23375 *) ac_try_echo=$ac_try;;
23376esac
23377eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23378 (eval "$ac_link") 2>conftest.er1
23379 ac_status=$?
23380 grep -v '^ *+' conftest.er1 >conftest.err
23381 rm -f conftest.er1
23382 cat conftest.err >&5
23383 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23384 (exit $ac_status); } && {
23385 test -z "$ac_c_werror_flag" ||
23386 test ! -s conftest.err
23387 } && test -s conftest$ac_exeext &&
23388 $as_test_x conftest$ac_exeext; then
23389 ac_cv_lib_crypt_crypt=yes 13167 ac_cv_lib_crypt_crypt=yes
23390else 13168else
23391 echo "$as_me: failed program was:" >&5 13169 ac_cv_lib_crypt_crypt=no
23392sed 's/^/| /' conftest.$ac_ext >&5
23393
23394 ac_cv_lib_crypt_crypt=no
23395fi 13170fi
23396 13171rm -f core conftest.err conftest.$ac_objext \
23397rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13172 conftest$ac_exeext conftest.$ac_ext
23398 conftest$ac_exeext conftest.$ac_ext
23399LIBS=$ac_check_lib_save_LIBS 13173LIBS=$ac_check_lib_save_LIBS
23400fi 13174fi
23401{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 13175{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
23402echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } 13176$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
23403if test $ac_cv_lib_crypt_crypt = yes; then 13177if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
23404 LIBS="$LIBS -lcrypt" 13178 LIBS="$LIBS -lcrypt"
23405fi 13179fi
23406 13180
23407 13181 for ac_func in crypt
23408for ac_func in crypt 13182do :
23409do 13183 ac_fn_c_check_func "$LINENO" "crypt" "ac_cv_func_crypt"
23410as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13184if test "x$ac_cv_func_crypt" = xyes; then :
23411{ echo "$as_me:$LINENO: checking for $ac_func" >&5
23412echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
23413if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
23414 echo $ECHO_N "(cached) $ECHO_C" >&6
23415else
23416 cat >conftest.$ac_ext <<_ACEOF
23417/* confdefs.h. */
23418_ACEOF
23419cat confdefs.h >>conftest.$ac_ext
23420cat >>conftest.$ac_ext <<_ACEOF
23421/* end confdefs.h. */
23422/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
23423 For example, HP-UX 11i <limits.h> declares gettimeofday. */
23424#define $ac_func innocuous_$ac_func
23425
23426/* System header to define __stub macros and hopefully few prototypes,
23427 which can conflict with char $ac_func (); below.
23428 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
23429 <limits.h> exists even on freestanding compilers. */
23430
23431#ifdef __STDC__
23432# include <limits.h>
23433#else
23434# include <assert.h>
23435#endif
23436
23437#undef $ac_func
23438
23439/* Override any GCC internal prototype to avoid an error.
23440 Use char because int might match the return type of a GCC
23441 builtin and then its argument prototype would still apply. */
23442#ifdef __cplusplus
23443extern "C"
23444#endif
23445char $ac_func ();
23446/* The GNU C library defines this for functions which it implements
23447 to always fail with ENOSYS. Some functions are actually named
23448 something starting with __ and the normal name is an alias. */
23449#if defined __stub_$ac_func || defined __stub___$ac_func
23450choke me
23451#endif
23452
23453int
23454main ()
23455{
23456return $ac_func ();
23457 ;
23458 return 0;
23459}
23460_ACEOF
23461rm -f conftest.$ac_objext conftest$ac_exeext
23462if { (ac_try="$ac_link"
23463case "(($ac_try" in
23464 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23465 *) ac_try_echo=$ac_try;;
23466esac
23467eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23468 (eval "$ac_link") 2>conftest.er1
23469 ac_status=$?
23470 grep -v '^ *+' conftest.er1 >conftest.err
23471 rm -f conftest.er1
23472 cat conftest.err >&5
23473 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23474 (exit $ac_status); } && {
23475 test -z "$ac_c_werror_flag" ||
23476 test ! -s conftest.err
23477 } && test -s conftest$ac_exeext &&
23478 $as_test_x conftest$ac_exeext; then
23479 eval "$as_ac_var=yes"
23480else
23481 echo "$as_me: failed program was:" >&5
23482sed 's/^/| /' conftest.$ac_ext >&5
23483
23484 eval "$as_ac_var=no"
23485fi
23486
23487rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23488 conftest$ac_exeext conftest.$ac_ext
23489fi
23490ac_res=`eval echo '${'$as_ac_var'}'`
23491 { echo "$as_me:$LINENO: result: $ac_res" >&5
23492echo "${ECHO_T}$ac_res" >&6; }
23493if test `eval echo '${'$as_ac_var'}'` = yes; then
23494 cat >>confdefs.h <<_ACEOF 13185 cat >>confdefs.h <<_ACEOF
23495#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 13186#define HAVE_CRYPT 1
23496_ACEOF 13187_ACEOF
23497 13188
23498fi 13189fi
@@ -23500,103 +13191,18 @@ done
23500 13191
23501fi 13192fi
23502 13193
23503
23504
23505
23506
23507for ac_func in \ 13194for ac_func in \
23508 arc4random \ 13195 arc4random \
23509 arc4random_buf \ 13196 arc4random_buf \
23510 arc4random_stir \ 13197 arc4random_stir \
23511 arc4random_uniform \ 13198 arc4random_uniform \
23512 13199
23513do 13200do :
23514as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13201 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
23515{ echo "$as_me:$LINENO: checking for $ac_func" >&5 13202ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
23516echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } 13203if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
23517if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
23518 echo $ECHO_N "(cached) $ECHO_C" >&6
23519else
23520 cat >conftest.$ac_ext <<_ACEOF
23521/* confdefs.h. */
23522_ACEOF
23523cat confdefs.h >>conftest.$ac_ext
23524cat >>conftest.$ac_ext <<_ACEOF
23525/* end confdefs.h. */
23526/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
23527 For example, HP-UX 11i <limits.h> declares gettimeofday. */
23528#define $ac_func innocuous_$ac_func
23529
23530/* System header to define __stub macros and hopefully few prototypes,
23531 which can conflict with char $ac_func (); below.
23532 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
23533 <limits.h> exists even on freestanding compilers. */
23534
23535#ifdef __STDC__
23536# include <limits.h>
23537#else
23538# include <assert.h>
23539#endif
23540
23541#undef $ac_func
23542
23543/* Override any GCC internal prototype to avoid an error.
23544 Use char because int might match the return type of a GCC
23545 builtin and then its argument prototype would still apply. */
23546#ifdef __cplusplus
23547extern "C"
23548#endif
23549char $ac_func ();
23550/* The GNU C library defines this for functions which it implements
23551 to always fail with ENOSYS. Some functions are actually named
23552 something starting with __ and the normal name is an alias. */
23553#if defined __stub_$ac_func || defined __stub___$ac_func
23554choke me
23555#endif
23556
23557int
23558main ()
23559{
23560return $ac_func ();
23561 ;
23562 return 0;
23563}
23564_ACEOF
23565rm -f conftest.$ac_objext conftest$ac_exeext
23566if { (ac_try="$ac_link"
23567case "(($ac_try" in
23568 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23569 *) ac_try_echo=$ac_try;;
23570esac
23571eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23572 (eval "$ac_link") 2>conftest.er1
23573 ac_status=$?
23574 grep -v '^ *+' conftest.er1 >conftest.err
23575 rm -f conftest.er1
23576 cat conftest.err >&5
23577 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23578 (exit $ac_status); } && {
23579 test -z "$ac_c_werror_flag" ||
23580 test ! -s conftest.err
23581 } && test -s conftest$ac_exeext &&
23582 $as_test_x conftest$ac_exeext; then
23583 eval "$as_ac_var=yes"
23584else
23585 echo "$as_me: failed program was:" >&5
23586sed 's/^/| /' conftest.$ac_ext >&5
23587
23588 eval "$as_ac_var=no"
23589fi
23590
23591rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23592 conftest$ac_exeext conftest.$ac_ext
23593fi
23594ac_res=`eval echo '${'$as_ac_var'}'`
23595 { echo "$as_me:$LINENO: result: $ac_res" >&5
23596echo "${ECHO_T}$ac_res" >&6; }
23597if test `eval echo '${'$as_ac_var'}'` = yes; then
23598 cat >>confdefs.h <<_ACEOF 13204 cat >>confdefs.h <<_ACEOF
23599#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 13205#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
23600_ACEOF 13206_ACEOF
23601 13207
23602fi 13208fi
@@ -23604,18 +13210,14 @@ done
23604 13210
23605 13211
23606saved_LIBS="$LIBS" 13212saved_LIBS="$LIBS"
23607{ echo "$as_me:$LINENO: checking for ia_openinfo in -liaf" >&5 13213{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ia_openinfo in -liaf" >&5
23608echo $ECHO_N "checking for ia_openinfo in -liaf... $ECHO_C" >&6; } 13214$as_echo_n "checking for ia_openinfo in -liaf... " >&6; }
23609if test "${ac_cv_lib_iaf_ia_openinfo+set}" = set; then 13215if ${ac_cv_lib_iaf_ia_openinfo+:} false; then :
23610 echo $ECHO_N "(cached) $ECHO_C" >&6 13216 $as_echo_n "(cached) " >&6
23611else 13217else
23612 ac_check_lib_save_LIBS=$LIBS 13218 ac_check_lib_save_LIBS=$LIBS
23613LIBS="-liaf $LIBS" 13219LIBS="-liaf $LIBS"
23614cat >conftest.$ac_ext <<_ACEOF 13220cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23615/* confdefs.h. */
23616_ACEOF
23617cat confdefs.h >>conftest.$ac_ext
23618cat >>conftest.$ac_ext <<_ACEOF
23619/* end confdefs.h. */ 13221/* end confdefs.h. */
23620 13222
23621/* Override any GCC internal prototype to avoid an error. 13223/* Override any GCC internal prototype to avoid an error.
@@ -23633,136 +13235,30 @@ return ia_openinfo ();
23633 return 0; 13235 return 0;
23634} 13236}
23635_ACEOF 13237_ACEOF
23636rm -f conftest.$ac_objext conftest$ac_exeext 13238if ac_fn_c_try_link "$LINENO"; then :
23637if { (ac_try="$ac_link"
23638case "(($ac_try" in
23639 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23640 *) ac_try_echo=$ac_try;;
23641esac
23642eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23643 (eval "$ac_link") 2>conftest.er1
23644 ac_status=$?
23645 grep -v '^ *+' conftest.er1 >conftest.err
23646 rm -f conftest.er1
23647 cat conftest.err >&5
23648 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23649 (exit $ac_status); } && {
23650 test -z "$ac_c_werror_flag" ||
23651 test ! -s conftest.err
23652 } && test -s conftest$ac_exeext &&
23653 $as_test_x conftest$ac_exeext; then
23654 ac_cv_lib_iaf_ia_openinfo=yes 13239 ac_cv_lib_iaf_ia_openinfo=yes
23655else 13240else
23656 echo "$as_me: failed program was:" >&5 13241 ac_cv_lib_iaf_ia_openinfo=no
23657sed 's/^/| /' conftest.$ac_ext >&5
23658
23659 ac_cv_lib_iaf_ia_openinfo=no
23660fi 13242fi
23661 13243rm -f core conftest.err conftest.$ac_objext \
23662rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13244 conftest$ac_exeext conftest.$ac_ext
23663 conftest$ac_exeext conftest.$ac_ext
23664LIBS=$ac_check_lib_save_LIBS 13245LIBS=$ac_check_lib_save_LIBS
23665fi 13246fi
23666{ echo "$as_me:$LINENO: result: $ac_cv_lib_iaf_ia_openinfo" >&5 13247{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iaf_ia_openinfo" >&5
23667echo "${ECHO_T}$ac_cv_lib_iaf_ia_openinfo" >&6; } 13248$as_echo "$ac_cv_lib_iaf_ia_openinfo" >&6; }
23668if test $ac_cv_lib_iaf_ia_openinfo = yes; then 13249if test "x$ac_cv_lib_iaf_ia_openinfo" = xyes; then :
23669 13250
23670 LIBS="$LIBS -liaf" 13251 LIBS="$LIBS -liaf"
23671 13252 for ac_func in set_id
23672for ac_func in set_id 13253do :
23673do 13254 ac_fn_c_check_func "$LINENO" "set_id" "ac_cv_func_set_id"
23674as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13255if test "x$ac_cv_func_set_id" = xyes; then :
23675{ echo "$as_me:$LINENO: checking for $ac_func" >&5
23676echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
23677if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
23678 echo $ECHO_N "(cached) $ECHO_C" >&6
23679else
23680 cat >conftest.$ac_ext <<_ACEOF
23681/* confdefs.h. */
23682_ACEOF
23683cat confdefs.h >>conftest.$ac_ext
23684cat >>conftest.$ac_ext <<_ACEOF
23685/* end confdefs.h. */
23686/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
23687 For example, HP-UX 11i <limits.h> declares gettimeofday. */
23688#define $ac_func innocuous_$ac_func
23689
23690/* System header to define __stub macros and hopefully few prototypes,
23691 which can conflict with char $ac_func (); below.
23692 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
23693 <limits.h> exists even on freestanding compilers. */
23694
23695#ifdef __STDC__
23696# include <limits.h>
23697#else
23698# include <assert.h>
23699#endif
23700
23701#undef $ac_func
23702
23703/* Override any GCC internal prototype to avoid an error.
23704 Use char because int might match the return type of a GCC
23705 builtin and then its argument prototype would still apply. */
23706#ifdef __cplusplus
23707extern "C"
23708#endif
23709char $ac_func ();
23710/* The GNU C library defines this for functions which it implements
23711 to always fail with ENOSYS. Some functions are actually named
23712 something starting with __ and the normal name is an alias. */
23713#if defined __stub_$ac_func || defined __stub___$ac_func
23714choke me
23715#endif
23716
23717int
23718main ()
23719{
23720return $ac_func ();
23721 ;
23722 return 0;
23723}
23724_ACEOF
23725rm -f conftest.$ac_objext conftest$ac_exeext
23726if { (ac_try="$ac_link"
23727case "(($ac_try" in
23728 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23729 *) ac_try_echo=$ac_try;;
23730esac
23731eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23732 (eval "$ac_link") 2>conftest.er1
23733 ac_status=$?
23734 grep -v '^ *+' conftest.er1 >conftest.err
23735 rm -f conftest.er1
23736 cat conftest.err >&5
23737 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23738 (exit $ac_status); } && {
23739 test -z "$ac_c_werror_flag" ||
23740 test ! -s conftest.err
23741 } && test -s conftest$ac_exeext &&
23742 $as_test_x conftest$ac_exeext; then
23743 eval "$as_ac_var=yes"
23744else
23745 echo "$as_me: failed program was:" >&5
23746sed 's/^/| /' conftest.$ac_ext >&5
23747
23748 eval "$as_ac_var=no"
23749fi
23750
23751rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23752 conftest$ac_exeext conftest.$ac_ext
23753fi
23754ac_res=`eval echo '${'$as_ac_var'}'`
23755 { echo "$as_me:$LINENO: result: $ac_res" >&5
23756echo "${ECHO_T}$ac_res" >&6; }
23757if test `eval echo '${'$as_ac_var'}'` = yes; then
23758 cat >>confdefs.h <<_ACEOF 13256 cat >>confdefs.h <<_ACEOF
23759#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 13257#define HAVE_SET_ID 1
23760_ACEOF 13258_ACEOF
23761 SSHDLIBS="$SSHDLIBS -liaf" 13259 SSHDLIBS="$SSHDLIBS -liaf"
23762 13260
23763cat >>confdefs.h <<\_ACEOF 13261$as_echo "#define HAVE_LIBIAF 1" >>confdefs.h
23764#define HAVE_LIBIAF 1
23765_ACEOF
23766 13262
23767 13263
23768fi 13264fi
@@ -23777,23 +13273,19 @@ LIBS="$saved_LIBS"
23777 13273
23778# Check wheter OpenSSL seeds itself 13274# Check wheter OpenSSL seeds itself
23779if test "x$openssl" = "xyes" ; then 13275if test "x$openssl" = "xyes" ; then
23780 { echo "$as_me:$LINENO: checking whether OpenSSL's PRNG is internally seeded" >&5 13276 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's PRNG is internally seeded" >&5
23781echo $ECHO_N "checking whether OpenSSL's PRNG is internally seeded... $ECHO_C" >&6; } 13277$as_echo_n "checking whether OpenSSL's PRNG is internally seeded... " >&6; }
23782 if test "$cross_compiling" = yes; then 13278 if test "$cross_compiling" = yes; then :
23783 13279
23784 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming yes" >&5 13280 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
23785echo "$as_me: WARNING: cross compiling: assuming yes" >&2;} 13281$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
23786 # This is safe, since we will fatal() at runtime if 13282 # This is safe, since we will fatal() at runtime if
23787 # OpenSSL is not seeded correctly. 13283 # OpenSSL is not seeded correctly.
23788 OPENSSL_SEEDS_ITSELF=yes 13284 OPENSSL_SEEDS_ITSELF=yes
23789 13285
23790 13286
23791else 13287else
23792 cat >conftest.$ac_ext <<_ACEOF 13288 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23793/* confdefs.h. */
23794_ACEOF
23795cat confdefs.h >>conftest.$ac_ext
23796cat >>conftest.$ac_ext <<_ACEOF
23797/* end confdefs.h. */ 13289/* end confdefs.h. */
23798 13290
23799 #include <string.h> 13291 #include <string.h>
@@ -23809,52 +13301,28 @@ main ()
23809 return 0; 13301 return 0;
23810} 13302}
23811_ACEOF 13303_ACEOF
23812rm -f conftest$ac_exeext 13304if ac_fn_c_try_run "$LINENO"; then :
23813if { (ac_try="$ac_link"
23814case "(($ac_try" in
23815 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23816 *) ac_try_echo=$ac_try;;
23817esac
23818eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23819 (eval "$ac_link") 2>&5
23820 ac_status=$?
23821 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23822 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
23823 { (case "(($ac_try" in
23824 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23825 *) ac_try_echo=$ac_try;;
23826esac
23827eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23828 (eval "$ac_try") 2>&5
23829 ac_status=$?
23830 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23831 (exit $ac_status); }; }; then
23832 13305
23833 OPENSSL_SEEDS_ITSELF=yes 13306 OPENSSL_SEEDS_ITSELF=yes
23834 { echo "$as_me:$LINENO: result: yes" >&5 13307 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
23835echo "${ECHO_T}yes" >&6; } 13308$as_echo "yes" >&6; }
23836 13309
23837else 13310else
23838 echo "$as_me: program exited with status $ac_status" >&5
23839echo "$as_me: failed program was:" >&5
23840sed 's/^/| /' conftest.$ac_ext >&5
23841
23842( exit $ac_status )
23843 13311
23844 { echo "$as_me:$LINENO: result: no" >&5 13312 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
23845echo "${ECHO_T}no" >&6; } 13313$as_echo "no" >&6; }
23846 13314
23847fi 13315fi
23848rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 13316rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13317 conftest.$ac_objext conftest.beam conftest.$ac_ext
23849fi 13318fi
23850 13319
23851
23852fi 13320fi
23853 13321
23854# PRNGD TCP socket 13322# PRNGD TCP socket
23855 13323
23856# Check whether --with-prngd-port was given. 13324# Check whether --with-prngd-port was given.
23857if test "${with_prngd_port+set}" = set; then 13325if test "${with_prngd_port+set}" = set; then :
23858 withval=$with_prngd_port; 13326 withval=$with_prngd_port;
23859 case "$withval" in 13327 case "$withval" in
23860 no) 13328 no)
@@ -23863,9 +13331,7 @@ if test "${with_prngd_port+set}" = set; then
23863 [0-9]*) 13331 [0-9]*)
23864 ;; 13332 ;;
23865 *) 13333 *)
23866 { { echo "$as_me:$LINENO: error: You must specify a numeric port number for --with-prngd-port" >&5 13334 as_fn_error $? "You must specify a numeric port number for --with-prngd-port" "$LINENO" 5
23867echo "$as_me: error: You must specify a numeric port number for --with-prngd-port" >&2;}
23868 { (exit 1); exit 1; }; }
23869 ;; 13335 ;;
23870 esac 13336 esac
23871 if test ! -z "$withval" ; then 13337 if test ! -z "$withval" ; then
@@ -23884,7 +13350,7 @@ fi
23884# PRNGD Unix domain socket 13350# PRNGD Unix domain socket
23885 13351
23886# Check whether --with-prngd-socket was given. 13352# Check whether --with-prngd-socket was given.
23887if test "${with_prngd_socket+set}" = set; then 13353if test "${with_prngd_socket+set}" = set; then :
23888 withval=$with_prngd_socket; 13354 withval=$with_prngd_socket;
23889 case "$withval" in 13355 case "$withval" in
23890 yes) 13356 yes)
@@ -23896,21 +13362,17 @@ if test "${with_prngd_socket+set}" = set; then
23896 /*) 13362 /*)
23897 ;; 13363 ;;
23898 *) 13364 *)
23899 { { echo "$as_me:$LINENO: error: You must specify an absolute path to the entropy socket" >&5 13365 as_fn_error $? "You must specify an absolute path to the entropy socket" "$LINENO" 5
23900echo "$as_me: error: You must specify an absolute path to the entropy socket" >&2;}
23901 { (exit 1); exit 1; }; }
23902 ;; 13366 ;;
23903 esac 13367 esac
23904 13368
23905 if test ! -z "$withval" ; then 13369 if test ! -z "$withval" ; then
23906 if test ! -z "$PRNGD_PORT" ; then 13370 if test ! -z "$PRNGD_PORT" ; then
23907 { { echo "$as_me:$LINENO: error: You may not specify both a PRNGD/EGD port and socket" >&5 13371 as_fn_error $? "You may not specify both a PRNGD/EGD port and socket" "$LINENO" 5
23908echo "$as_me: error: You may not specify both a PRNGD/EGD port and socket" >&2;}
23909 { (exit 1); exit 1; }; }
23910 fi 13372 fi
23911 if test ! -r "$withval" ; then 13373 if test ! -r "$withval" ; then
23912 { echo "$as_me:$LINENO: WARNING: Entropy socket is not readable" >&5 13374 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Entropy socket is not readable" >&5
23913echo "$as_me: WARNING: Entropy socket is not readable" >&2;} 13375$as_echo "$as_me: WARNING: Entropy socket is not readable" >&2;}
23914 fi 13376 fi
23915 PRNGD_SOCKET="$withval" 13377 PRNGD_SOCKET="$withval"
23916 13378
@@ -23924,8 +13386,8 @@ else
23924 13386
23925 # Check for existing socket only if we don't have a random device already 13387 # Check for existing socket only if we don't have a random device already
23926 if test "x$OPENSSL_SEEDS_ITSELF" != "xyes" ; then 13388 if test "x$OPENSSL_SEEDS_ITSELF" != "xyes" ; then
23927 { echo "$as_me:$LINENO: checking for PRNGD/EGD socket" >&5 13389 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PRNGD/EGD socket" >&5
23928echo $ECHO_N "checking for PRNGD/EGD socket... $ECHO_C" >&6; } 13390$as_echo_n "checking for PRNGD/EGD socket... " >&6; }
23929 # Insert other locations here 13391 # Insert other locations here
23930 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do 13392 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
23931 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then 13393 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
@@ -23938,11 +13400,11 @@ _ACEOF
23938 fi 13400 fi
23939 done 13401 done
23940 if test ! -z "$PRNGD_SOCKET" ; then 13402 if test ! -z "$PRNGD_SOCKET" ; then
23941 { echo "$as_me:$LINENO: result: $PRNGD_SOCKET" >&5 13403 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRNGD_SOCKET" >&5
23942echo "${ECHO_T}$PRNGD_SOCKET" >&6; } 13404$as_echo "$PRNGD_SOCKET" >&6; }
23943 else 13405 else
23944 { echo "$as_me:$LINENO: result: not found" >&5 13406 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
23945echo "${ECHO_T}not found" >&6; } 13407$as_echo "not found" >&6; }
23946 fi 13408 fi
23947 fi 13409 fi
23948 13410
@@ -23957,48 +13419,37 @@ elif test ! -z "$PRNGD_SOCKET" ; then
23957 RAND_MSG="PRNGd socket $PRNGD_SOCKET" 13419 RAND_MSG="PRNGd socket $PRNGD_SOCKET"
23958elif test ! -z "$OPENSSL_SEEDS_ITSELF" ; then 13420elif test ! -z "$OPENSSL_SEEDS_ITSELF" ; then
23959 13421
23960cat >>confdefs.h <<\_ACEOF 13422$as_echo "#define OPENSSL_PRNG_ONLY 1" >>confdefs.h
23961#define OPENSSL_PRNG_ONLY 1
23962_ACEOF
23963 13423
23964 RAND_MSG="OpenSSL internal ONLY" 13424 RAND_MSG="OpenSSL internal ONLY"
23965elif test "x$openssl" = "xno" ; then 13425elif test "x$openssl" = "xno" ; then
23966 { echo "$as_me:$LINENO: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&5 13426 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&5
23967echo "$as_me: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&2;} 13427$as_echo "$as_me: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&2;}
23968else 13428else
23969 { { echo "$as_me:$LINENO: error: OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options" >&5 13429 as_fn_error $? "OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options" "$LINENO" 5
23970echo "$as_me: error: OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options" >&2;}
23971 { (exit 1); exit 1; }; }
23972fi 13430fi
23973 13431
23974# Check for PAM libs 13432# Check for PAM libs
23975PAM_MSG="no" 13433PAM_MSG="no"
23976 13434
23977# Check whether --with-pam was given. 13435# Check whether --with-pam was given.
23978if test "${with_pam+set}" = set; then 13436if test "${with_pam+set}" = set; then :
23979 withval=$with_pam; 13437 withval=$with_pam;
23980 if test "x$withval" != "xno" ; then 13438 if test "x$withval" != "xno" ; then
23981 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \ 13439 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
23982 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then 13440 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
23983 { { echo "$as_me:$LINENO: error: PAM headers not found" >&5 13441 as_fn_error $? "PAM headers not found" "$LINENO" 5
23984echo "$as_me: error: PAM headers not found" >&2;}
23985 { (exit 1); exit 1; }; }
23986 fi 13442 fi
23987 13443
23988 saved_LIBS="$LIBS" 13444 saved_LIBS="$LIBS"
23989 13445 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
23990{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 13446$as_echo_n "checking for dlopen in -ldl... " >&6; }
23991echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } 13447if ${ac_cv_lib_dl_dlopen+:} false; then :
23992if test "${ac_cv_lib_dl_dlopen+set}" = set; then 13448 $as_echo_n "(cached) " >&6
23993 echo $ECHO_N "(cached) $ECHO_C" >&6
23994else 13449else
23995 ac_check_lib_save_LIBS=$LIBS 13450 ac_check_lib_save_LIBS=$LIBS
23996LIBS="-ldl $LIBS" 13451LIBS="-ldl $LIBS"
23997cat >conftest.$ac_ext <<_ACEOF 13452cat confdefs.h - <<_ACEOF >conftest.$ac_ext
23998/* confdefs.h. */
23999_ACEOF
24000cat confdefs.h >>conftest.$ac_ext
24001cat >>conftest.$ac_ext <<_ACEOF
24002/* end confdefs.h. */ 13453/* end confdefs.h. */
24003 13454
24004/* Override any GCC internal prototype to avoid an error. 13455/* Override any GCC internal prototype to avoid an error.
@@ -24016,39 +13467,18 @@ return dlopen ();
24016 return 0; 13467 return 0;
24017} 13468}
24018_ACEOF 13469_ACEOF
24019rm -f conftest.$ac_objext conftest$ac_exeext 13470if ac_fn_c_try_link "$LINENO"; then :
24020if { (ac_try="$ac_link"
24021case "(($ac_try" in
24022 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24023 *) ac_try_echo=$ac_try;;
24024esac
24025eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24026 (eval "$ac_link") 2>conftest.er1
24027 ac_status=$?
24028 grep -v '^ *+' conftest.er1 >conftest.err
24029 rm -f conftest.er1
24030 cat conftest.err >&5
24031 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24032 (exit $ac_status); } && {
24033 test -z "$ac_c_werror_flag" ||
24034 test ! -s conftest.err
24035 } && test -s conftest$ac_exeext &&
24036 $as_test_x conftest$ac_exeext; then
24037 ac_cv_lib_dl_dlopen=yes 13471 ac_cv_lib_dl_dlopen=yes
24038else 13472else
24039 echo "$as_me: failed program was:" >&5 13473 ac_cv_lib_dl_dlopen=no
24040sed 's/^/| /' conftest.$ac_ext >&5
24041
24042 ac_cv_lib_dl_dlopen=no
24043fi 13474fi
24044 13475rm -f core conftest.err conftest.$ac_objext \
24045rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13476 conftest$ac_exeext conftest.$ac_ext
24046 conftest$ac_exeext conftest.$ac_ext
24047LIBS=$ac_check_lib_save_LIBS 13477LIBS=$ac_check_lib_save_LIBS
24048fi 13478fi
24049{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 13479{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
24050echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } 13480$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
24051if test $ac_cv_lib_dl_dlopen = yes; then 13481if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
24052 cat >>confdefs.h <<_ACEOF 13482 cat >>confdefs.h <<_ACEOF
24053#define HAVE_LIBDL 1 13483#define HAVE_LIBDL 1
24054_ACEOF 13484_ACEOF
@@ -24057,19 +13487,14 @@ _ACEOF
24057 13487
24058fi 13488fi
24059 13489
24060 13490 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_set_item in -lpam" >&5
24061{ echo "$as_me:$LINENO: checking for pam_set_item in -lpam" >&5 13491$as_echo_n "checking for pam_set_item in -lpam... " >&6; }
24062echo $ECHO_N "checking for pam_set_item in -lpam... $ECHO_C" >&6; } 13492if ${ac_cv_lib_pam_pam_set_item+:} false; then :
24063if test "${ac_cv_lib_pam_pam_set_item+set}" = set; then 13493 $as_echo_n "(cached) " >&6
24064 echo $ECHO_N "(cached) $ECHO_C" >&6
24065else 13494else
24066 ac_check_lib_save_LIBS=$LIBS 13495 ac_check_lib_save_LIBS=$LIBS
24067LIBS="-lpam $LIBS" 13496LIBS="-lpam $LIBS"
24068cat >conftest.$ac_ext <<_ACEOF 13497cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24069/* confdefs.h. */
24070_ACEOF
24071cat confdefs.h >>conftest.$ac_ext
24072cat >>conftest.$ac_ext <<_ACEOF
24073/* end confdefs.h. */ 13498/* end confdefs.h. */
24074 13499
24075/* Override any GCC internal prototype to avoid an error. 13500/* Override any GCC internal prototype to avoid an error.
@@ -24087,39 +13512,18 @@ return pam_set_item ();
24087 return 0; 13512 return 0;
24088} 13513}
24089_ACEOF 13514_ACEOF
24090rm -f conftest.$ac_objext conftest$ac_exeext 13515if ac_fn_c_try_link "$LINENO"; then :
24091if { (ac_try="$ac_link"
24092case "(($ac_try" in
24093 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24094 *) ac_try_echo=$ac_try;;
24095esac
24096eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24097 (eval "$ac_link") 2>conftest.er1
24098 ac_status=$?
24099 grep -v '^ *+' conftest.er1 >conftest.err
24100 rm -f conftest.er1
24101 cat conftest.err >&5
24102 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24103 (exit $ac_status); } && {
24104 test -z "$ac_c_werror_flag" ||
24105 test ! -s conftest.err
24106 } && test -s conftest$ac_exeext &&
24107 $as_test_x conftest$ac_exeext; then
24108 ac_cv_lib_pam_pam_set_item=yes 13516 ac_cv_lib_pam_pam_set_item=yes
24109else 13517else
24110 echo "$as_me: failed program was:" >&5 13518 ac_cv_lib_pam_pam_set_item=no
24111sed 's/^/| /' conftest.$ac_ext >&5
24112
24113 ac_cv_lib_pam_pam_set_item=no
24114fi 13519fi
24115 13520rm -f core conftest.err conftest.$ac_objext \
24116rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13521 conftest$ac_exeext conftest.$ac_ext
24117 conftest$ac_exeext conftest.$ac_ext
24118LIBS=$ac_check_lib_save_LIBS 13522LIBS=$ac_check_lib_save_LIBS
24119fi 13523fi
24120{ echo "$as_me:$LINENO: result: $ac_cv_lib_pam_pam_set_item" >&5 13524{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_set_item" >&5
24121echo "${ECHO_T}$ac_cv_lib_pam_pam_set_item" >&6; } 13525$as_echo "$ac_cv_lib_pam_pam_set_item" >&6; }
24122if test $ac_cv_lib_pam_pam_set_item = yes; then 13526if test "x$ac_cv_lib_pam_pam_set_item" = xyes; then :
24123 cat >>confdefs.h <<_ACEOF 13527 cat >>confdefs.h <<_ACEOF
24124#define HAVE_LIBPAM 1 13528#define HAVE_LIBPAM 1
24125_ACEOF 13529_ACEOF
@@ -24127,194 +13531,26 @@ _ACEOF
24127 LIBS="-lpam $LIBS" 13531 LIBS="-lpam $LIBS"
24128 13532
24129else 13533else
24130 { { echo "$as_me:$LINENO: error: *** libpam missing" >&5 13534 as_fn_error $? "*** libpam missing" "$LINENO" 5
24131echo "$as_me: error: *** libpam missing" >&2;}
24132 { (exit 1); exit 1; }; }
24133fi 13535fi
24134 13536
24135 13537 for ac_func in pam_getenvlist
24136for ac_func in pam_getenvlist 13538do :
24137do 13539 ac_fn_c_check_func "$LINENO" "pam_getenvlist" "ac_cv_func_pam_getenvlist"
24138as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13540if test "x$ac_cv_func_pam_getenvlist" = xyes; then :
24139{ echo "$as_me:$LINENO: checking for $ac_func" >&5
24140echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
24141if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
24142 echo $ECHO_N "(cached) $ECHO_C" >&6
24143else
24144 cat >conftest.$ac_ext <<_ACEOF
24145/* confdefs.h. */
24146_ACEOF
24147cat confdefs.h >>conftest.$ac_ext
24148cat >>conftest.$ac_ext <<_ACEOF
24149/* end confdefs.h. */
24150/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
24151 For example, HP-UX 11i <limits.h> declares gettimeofday. */
24152#define $ac_func innocuous_$ac_func
24153
24154/* System header to define __stub macros and hopefully few prototypes,
24155 which can conflict with char $ac_func (); below.
24156 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
24157 <limits.h> exists even on freestanding compilers. */
24158
24159#ifdef __STDC__
24160# include <limits.h>
24161#else
24162# include <assert.h>
24163#endif
24164
24165#undef $ac_func
24166
24167/* Override any GCC internal prototype to avoid an error.
24168 Use char because int might match the return type of a GCC
24169 builtin and then its argument prototype would still apply. */
24170#ifdef __cplusplus
24171extern "C"
24172#endif
24173char $ac_func ();
24174/* The GNU C library defines this for functions which it implements
24175 to always fail with ENOSYS. Some functions are actually named
24176 something starting with __ and the normal name is an alias. */
24177#if defined __stub_$ac_func || defined __stub___$ac_func
24178choke me
24179#endif
24180
24181int
24182main ()
24183{
24184return $ac_func ();
24185 ;
24186 return 0;
24187}
24188_ACEOF
24189rm -f conftest.$ac_objext conftest$ac_exeext
24190if { (ac_try="$ac_link"
24191case "(($ac_try" in
24192 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24193 *) ac_try_echo=$ac_try;;
24194esac
24195eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24196 (eval "$ac_link") 2>conftest.er1
24197 ac_status=$?
24198 grep -v '^ *+' conftest.er1 >conftest.err
24199 rm -f conftest.er1
24200 cat conftest.err >&5
24201 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24202 (exit $ac_status); } && {
24203 test -z "$ac_c_werror_flag" ||
24204 test ! -s conftest.err
24205 } && test -s conftest$ac_exeext &&
24206 $as_test_x conftest$ac_exeext; then
24207 eval "$as_ac_var=yes"
24208else
24209 echo "$as_me: failed program was:" >&5
24210sed 's/^/| /' conftest.$ac_ext >&5
24211
24212 eval "$as_ac_var=no"
24213fi
24214
24215rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
24216 conftest$ac_exeext conftest.$ac_ext
24217fi
24218ac_res=`eval echo '${'$as_ac_var'}'`
24219 { echo "$as_me:$LINENO: result: $ac_res" >&5
24220echo "${ECHO_T}$ac_res" >&6; }
24221if test `eval echo '${'$as_ac_var'}'` = yes; then
24222 cat >>confdefs.h <<_ACEOF 13541 cat >>confdefs.h <<_ACEOF
24223#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 13542#define HAVE_PAM_GETENVLIST 1
24224_ACEOF 13543_ACEOF
24225 13544
24226fi 13545fi
24227done 13546done
24228 13547
24229 13548 for ac_func in pam_putenv
24230for ac_func in pam_putenv 13549do :
24231do 13550 ac_fn_c_check_func "$LINENO" "pam_putenv" "ac_cv_func_pam_putenv"
24232as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 13551if test "x$ac_cv_func_pam_putenv" = xyes; then :
24233{ echo "$as_me:$LINENO: checking for $ac_func" >&5
24234echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
24235if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
24236 echo $ECHO_N "(cached) $ECHO_C" >&6
24237else
24238 cat >conftest.$ac_ext <<_ACEOF
24239/* confdefs.h. */
24240_ACEOF
24241cat confdefs.h >>conftest.$ac_ext
24242cat >>conftest.$ac_ext <<_ACEOF
24243/* end confdefs.h. */
24244/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
24245 For example, HP-UX 11i <limits.h> declares gettimeofday. */
24246#define $ac_func innocuous_$ac_func
24247
24248/* System header to define __stub macros and hopefully few prototypes,
24249 which can conflict with char $ac_func (); below.
24250 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
24251 <limits.h> exists even on freestanding compilers. */
24252
24253#ifdef __STDC__
24254# include <limits.h>
24255#else
24256# include <assert.h>
24257#endif
24258
24259#undef $ac_func
24260
24261/* Override any GCC internal prototype to avoid an error.
24262 Use char because int might match the return type of a GCC
24263 builtin and then its argument prototype would still apply. */
24264#ifdef __cplusplus
24265extern "C"
24266#endif
24267char $ac_func ();
24268/* The GNU C library defines this for functions which it implements
24269 to always fail with ENOSYS. Some functions are actually named
24270 something starting with __ and the normal name is an alias. */
24271#if defined __stub_$ac_func || defined __stub___$ac_func
24272choke me
24273#endif
24274
24275int
24276main ()
24277{
24278return $ac_func ();
24279 ;
24280 return 0;
24281}
24282_ACEOF
24283rm -f conftest.$ac_objext conftest$ac_exeext
24284if { (ac_try="$ac_link"
24285case "(($ac_try" in
24286 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24287 *) ac_try_echo=$ac_try;;
24288esac
24289eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24290 (eval "$ac_link") 2>conftest.er1
24291 ac_status=$?
24292 grep -v '^ *+' conftest.er1 >conftest.err
24293 rm -f conftest.er1
24294 cat conftest.err >&5
24295 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24296 (exit $ac_status); } && {
24297 test -z "$ac_c_werror_flag" ||
24298 test ! -s conftest.err
24299 } && test -s conftest$ac_exeext &&
24300 $as_test_x conftest$ac_exeext; then
24301 eval "$as_ac_var=yes"
24302else
24303 echo "$as_me: failed program was:" >&5
24304sed 's/^/| /' conftest.$ac_ext >&5
24305
24306 eval "$as_ac_var=no"
24307fi
24308
24309rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
24310 conftest$ac_exeext conftest.$ac_ext
24311fi
24312ac_res=`eval echo '${'$as_ac_var'}'`
24313 { echo "$as_me:$LINENO: result: $ac_res" >&5
24314echo "${ECHO_T}$ac_res" >&6; }
24315if test `eval echo '${'$as_ac_var'}'` = yes; then
24316 cat >>confdefs.h <<_ACEOF 13552 cat >>confdefs.h <<_ACEOF
24317#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 13553#define HAVE_PAM_PUTENV 1
24318_ACEOF 13554_ACEOF
24319 13555
24320fi 13556fi
@@ -24326,9 +13562,7 @@ done
24326 13562
24327 SSHDLIBS="$SSHDLIBS -lpam" 13563 SSHDLIBS="$SSHDLIBS -lpam"
24328 13564
24329cat >>confdefs.h <<\_ACEOF 13565$as_echo "#define USE_PAM 1" >>confdefs.h
24330#define USE_PAM 1
24331_ACEOF
24332 13566
24333 13567
24334 if test $ac_cv_lib_dl_dlopen = yes; then 13568 if test $ac_cv_lib_dl_dlopen = yes; then
@@ -24347,16 +13581,29 @@ _ACEOF
24347fi 13581fi
24348 13582
24349 13583
13584
13585# Check whether --with-pam-service was given.
13586if test "${with_pam_service+set}" = set; then :
13587 withval=$with_pam_service;
13588 if test "x$withval" != "xno" && \
13589 test "x$withval" != "xyes" ; then
13590
13591cat >>confdefs.h <<_ACEOF
13592#define SSHD_PAM_SERVICE "$withval"
13593_ACEOF
13594
13595 fi
13596
13597
13598fi
13599
13600
24350# Check for older PAM 13601# Check for older PAM
24351if test "x$PAM_MSG" = "xyes" ; then 13602if test "x$PAM_MSG" = "xyes" ; then
24352 # Check PAM strerror arguments (old PAM) 13603 # Check PAM strerror arguments (old PAM)
24353 { echo "$as_me:$LINENO: checking whether pam_strerror takes only one argument" >&5 13604 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pam_strerror takes only one argument" >&5
24354echo $ECHO_N "checking whether pam_strerror takes only one argument... $ECHO_C" >&6; } 13605$as_echo_n "checking whether pam_strerror takes only one argument... " >&6; }
24355 cat >conftest.$ac_ext <<_ACEOF 13606 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24356/* confdefs.h. */
24357_ACEOF
24358cat confdefs.h >>conftest.$ac_ext
24359cat >>conftest.$ac_ext <<_ACEOF
24360/* end confdefs.h. */ 13607/* end confdefs.h. */
24361 13608
24362#include <stdlib.h> 13609#include <stdlib.h>
@@ -24376,42 +13623,20 @@ main ()
24376 return 0; 13623 return 0;
24377} 13624}
24378_ACEOF 13625_ACEOF
24379rm -f conftest.$ac_objext 13626if ac_fn_c_try_compile "$LINENO"; then :
24380if { (ac_try="$ac_compile" 13627 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
24381case "(($ac_try" in 13628$as_echo "no" >&6; }
24382 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24383 *) ac_try_echo=$ac_try;;
24384esac
24385eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24386 (eval "$ac_compile") 2>conftest.er1
24387 ac_status=$?
24388 grep -v '^ *+' conftest.er1 >conftest.err
24389 rm -f conftest.er1
24390 cat conftest.err >&5
24391 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24392 (exit $ac_status); } && {
24393 test -z "$ac_c_werror_flag" ||
24394 test ! -s conftest.err
24395 } && test -s conftest.$ac_objext; then
24396 { echo "$as_me:$LINENO: result: no" >&5
24397echo "${ECHO_T}no" >&6; }
24398else 13629else
24399 echo "$as_me: failed program was:" >&5
24400sed 's/^/| /' conftest.$ac_ext >&5
24401
24402 13630
24403 13631
24404cat >>confdefs.h <<\_ACEOF 13632$as_echo "#define HAVE_OLD_PAM 1" >>confdefs.h
24405#define HAVE_OLD_PAM 1
24406_ACEOF
24407 13633
24408 { echo "$as_me:$LINENO: result: yes" >&5 13634 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
24409echo "${ECHO_T}yes" >&6; } 13635$as_echo "yes" >&6; }
24410 PAM_MSG="yes (old library)" 13636 PAM_MSG="yes (old library)"
24411 13637
24412 13638
24413fi 13639fi
24414
24415rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 13640rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
24416fi 13641fi
24417 13642
@@ -24425,7 +13650,7 @@ case "$host" in
24425esac 13650esac
24426 13651
24427# Check whether --with-privsep-user was given. 13652# Check whether --with-privsep-user was given.
24428if test "${with_privsep_user+set}" = set; then 13653if test "${with_privsep_user+set}" = set; then :
24429 withval=$with_privsep_user; 13654 withval=$with_privsep_user;
24430 if test -n "$withval" && test "x$withval" != "xno" && \ 13655 if test -n "$withval" && test "x$withval" != "xno" && \
24431 test "x${withval}" != "xyes"; then 13656 test "x${withval}" != "xyes"; then
@@ -24451,75 +13676,20 @@ fi
24451 13676
24452 13677
24453if test "x$have_linux_no_new_privs" = "x1" ; then 13678if test "x$have_linux_no_new_privs" = "x1" ; then
24454{ echo "$as_me:$LINENO: checking whether SECCOMP_MODE_FILTER is declared" >&5 13679ac_fn_c_check_decl "$LINENO" "SECCOMP_MODE_FILTER" "ac_cv_have_decl_SECCOMP_MODE_FILTER" "
24455echo $ECHO_N "checking whether SECCOMP_MODE_FILTER is declared... $ECHO_C" >&6; }
24456if test "${ac_cv_have_decl_SECCOMP_MODE_FILTER+set}" = set; then
24457 echo $ECHO_N "(cached) $ECHO_C" >&6
24458else
24459 cat >conftest.$ac_ext <<_ACEOF
24460/* confdefs.h. */
24461_ACEOF
24462cat confdefs.h >>conftest.$ac_ext
24463cat >>conftest.$ac_ext <<_ACEOF
24464/* end confdefs.h. */
24465
24466 #include <sys/types.h> 13680 #include <sys/types.h>
24467 #include <linux/seccomp.h> 13681 #include <linux/seccomp.h>
24468 13682
24469 13683"
24470int 13684if test "x$ac_cv_have_decl_SECCOMP_MODE_FILTER" = xyes; then :
24471main ()
24472{
24473#ifndef SECCOMP_MODE_FILTER
24474 (void) SECCOMP_MODE_FILTER;
24475#endif
24476
24477 ;
24478 return 0;
24479}
24480_ACEOF
24481rm -f conftest.$ac_objext
24482if { (ac_try="$ac_compile"
24483case "(($ac_try" in
24484 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24485 *) ac_try_echo=$ac_try;;
24486esac
24487eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24488 (eval "$ac_compile") 2>conftest.er1
24489 ac_status=$?
24490 grep -v '^ *+' conftest.er1 >conftest.err
24491 rm -f conftest.er1
24492 cat conftest.err >&5
24493 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24494 (exit $ac_status); } && {
24495 test -z "$ac_c_werror_flag" ||
24496 test ! -s conftest.err
24497 } && test -s conftest.$ac_objext; then
24498 ac_cv_have_decl_SECCOMP_MODE_FILTER=yes
24499else
24500 echo "$as_me: failed program was:" >&5
24501sed 's/^/| /' conftest.$ac_ext >&5
24502
24503 ac_cv_have_decl_SECCOMP_MODE_FILTER=no
24504fi
24505
24506rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
24507fi
24508{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_SECCOMP_MODE_FILTER" >&5
24509echo "${ECHO_T}$ac_cv_have_decl_SECCOMP_MODE_FILTER" >&6; }
24510if test $ac_cv_have_decl_SECCOMP_MODE_FILTER = yes; then
24511 have_seccomp_filter=1 13685 have_seccomp_filter=1
24512fi 13686fi
24513 13687
24514fi 13688fi
24515if test "x$have_seccomp_filter" = "x1" ; then 13689if test "x$have_seccomp_filter" = "x1" ; then
24516{ echo "$as_me:$LINENO: checking kernel for seccomp_filter support" >&5 13690{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel for seccomp_filter support" >&5
24517echo $ECHO_N "checking kernel for seccomp_filter support... $ECHO_C" >&6; } 13691$as_echo_n "checking kernel for seccomp_filter support... " >&6; }
24518cat >conftest.$ac_ext <<_ACEOF 13692cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24519/* confdefs.h. */
24520_ACEOF
24521cat confdefs.h >>conftest.$ac_ext
24522cat >>conftest.$ac_ext <<_ACEOF
24523/* end confdefs.h. */ 13693/* end confdefs.h. */
24524 13694
24525 #include <errno.h> 13695 #include <errno.h>
@@ -24540,48 +13710,27 @@ main ()
24540 return 0; 13710 return 0;
24541} 13711}
24542_ACEOF 13712_ACEOF
24543rm -f conftest.$ac_objext conftest$ac_exeext 13713if ac_fn_c_try_link "$LINENO"; then :
24544if { (ac_try="$ac_link" 13714 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
24545case "(($ac_try" in 13715$as_echo "yes" >&6; }
24546 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24547 *) ac_try_echo=$ac_try;;
24548esac
24549eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24550 (eval "$ac_link") 2>conftest.er1
24551 ac_status=$?
24552 grep -v '^ *+' conftest.er1 >conftest.err
24553 rm -f conftest.er1
24554 cat conftest.err >&5
24555 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24556 (exit $ac_status); } && {
24557 test -z "$ac_c_werror_flag" ||
24558 test ! -s conftest.err
24559 } && test -s conftest$ac_exeext &&
24560 $as_test_x conftest$ac_exeext; then
24561 { echo "$as_me:$LINENO: result: yes" >&5
24562echo "${ECHO_T}yes" >&6; }
24563else 13716else
24564 echo "$as_me: failed program was:" >&5
24565sed 's/^/| /' conftest.$ac_ext >&5
24566 13717
24567 13718 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
24568 { echo "$as_me:$LINENO: result: no" >&5 13719$as_echo "no" >&6; }
24569echo "${ECHO_T}no" >&6; }
24570 # Disable seccomp filter as a target 13720 # Disable seccomp filter as a target
24571 have_seccomp_filter=0 13721 have_seccomp_filter=0
24572 13722
24573 13723
24574fi 13724fi
24575 13725rm -f core conftest.err conftest.$ac_objext \
24576rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 13726 conftest$ac_exeext conftest.$ac_ext
24577 conftest$ac_exeext conftest.$ac_ext
24578fi 13727fi
24579 13728
24580# Decide which sandbox style to use 13729# Decide which sandbox style to use
24581sandbox_arg="" 13730sandbox_arg=""
24582 13731
24583# Check whether --with-sandbox was given. 13732# Check whether --with-sandbox was given.
24584if test "${with_sandbox+set}" = set; then 13733if test "${with_sandbox+set}" = set; then :
24585 withval=$with_sandbox; 13734 withval=$with_sandbox;
24586 if test "x$withval" = "xyes" ; then 13735 if test "x$withval" = "xyes" ; then
24587 sandbox_arg="" 13736 sandbox_arg=""
@@ -24596,18 +13745,14 @@ fi
24596# Some platforms (seems to be the ones that have a kernel poll(2)-type 13745# Some platforms (seems to be the ones that have a kernel poll(2)-type
24597# function with which they implement select(2)) use an extra file descriptor 13746# function with which they implement select(2)) use an extra file descriptor
24598# when calling select(2), which means we can't use the rlimit sandbox. 13747# when calling select(2), which means we can't use the rlimit sandbox.
24599{ echo "$as_me:$LINENO: checking if select works with descriptor rlimit" >&5 13748{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if select works with descriptor rlimit" >&5
24600echo $ECHO_N "checking if select works with descriptor rlimit... $ECHO_C" >&6; } 13749$as_echo_n "checking if select works with descriptor rlimit... " >&6; }
24601if test "$cross_compiling" = yes; then 13750if test "$cross_compiling" = yes; then :
24602 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming yes" >&5 13751 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
24603echo "$as_me: WARNING: cross compiling: assuming yes" >&2;} 13752$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
24604 13753
24605else 13754else
24606 cat >conftest.$ac_ext <<_ACEOF 13755 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24607/* confdefs.h. */
24608_ACEOF
24609cat confdefs.h >>conftest.$ac_ext
24610cat >>conftest.$ac_ext <<_ACEOF
24611/* end confdefs.h. */ 13756/* end confdefs.h. */
24612 13757
24613#include <sys/types.h> 13758#include <sys/types.h>
@@ -24646,56 +13791,28 @@ main ()
24646 return 0; 13791 return 0;
24647} 13792}
24648_ACEOF 13793_ACEOF
24649rm -f conftest$ac_exeext 13794if ac_fn_c_try_run "$LINENO"; then :
24650if { (ac_try="$ac_link" 13795 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
24651case "(($ac_try" in 13796$as_echo "yes" >&6; }
24652 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24653 *) ac_try_echo=$ac_try;;
24654esac
24655eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24656 (eval "$ac_link") 2>&5
24657 ac_status=$?
24658 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24659 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
24660 { (case "(($ac_try" in
24661 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24662 *) ac_try_echo=$ac_try;;
24663esac
24664eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24665 (eval "$ac_try") 2>&5
24666 ac_status=$?
24667 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24668 (exit $ac_status); }; }; then
24669 { echo "$as_me:$LINENO: result: yes" >&5
24670echo "${ECHO_T}yes" >&6; }
24671 select_works_with_rlimit=yes 13797 select_works_with_rlimit=yes
24672else 13798else
24673 echo "$as_me: program exited with status $ac_status" >&5 13799 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
24674echo "$as_me: failed program was:" >&5 13800$as_echo "no" >&6; }
24675sed 's/^/| /' conftest.$ac_ext >&5
24676
24677( exit $ac_status )
24678{ echo "$as_me:$LINENO: result: no" >&5
24679echo "${ECHO_T}no" >&6; }
24680 select_works_with_rlimit=no 13801 select_works_with_rlimit=no
24681fi 13802fi
24682rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 13803rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13804 conftest.$ac_objext conftest.beam conftest.$ac_ext
24683fi 13805fi
24684 13806
24685 13807
24686 13808{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if setrlimit(RLIMIT_NOFILE,{0,0}) works" >&5
24687{ echo "$as_me:$LINENO: checking if setrlimit(RLIMIT_NOFILE,{0,0}) works" >&5 13809$as_echo_n "checking if setrlimit(RLIMIT_NOFILE,{0,0}) works... " >&6; }
24688echo $ECHO_N "checking if setrlimit(RLIMIT_NOFILE,{0,0}) works... $ECHO_C" >&6; } 13810if test "$cross_compiling" = yes; then :
24689if test "$cross_compiling" = yes; then 13811 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
24690 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming yes" >&5 13812$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
24691echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
24692 13813
24693else 13814else
24694 cat >conftest.$ac_ext <<_ACEOF 13815 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24695/* confdefs.h. */
24696_ACEOF
24697cat confdefs.h >>conftest.$ac_ext
24698cat >>conftest.$ac_ext <<_ACEOF
24699/* end confdefs.h. */ 13816/* end confdefs.h. */
24700 13817
24701#include <sys/types.h> 13818#include <sys/types.h>
@@ -24722,56 +13839,28 @@ main ()
24722 return 0; 13839 return 0;
24723} 13840}
24724_ACEOF 13841_ACEOF
24725rm -f conftest$ac_exeext 13842if ac_fn_c_try_run "$LINENO"; then :
24726if { (ac_try="$ac_link" 13843 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
24727case "(($ac_try" in 13844$as_echo "yes" >&6; }
24728 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24729 *) ac_try_echo=$ac_try;;
24730esac
24731eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24732 (eval "$ac_link") 2>&5
24733 ac_status=$?
24734 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24735 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
24736 { (case "(($ac_try" in
24737 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24738 *) ac_try_echo=$ac_try;;
24739esac
24740eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24741 (eval "$ac_try") 2>&5
24742 ac_status=$?
24743 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24744 (exit $ac_status); }; }; then
24745 { echo "$as_me:$LINENO: result: yes" >&5
24746echo "${ECHO_T}yes" >&6; }
24747 rlimit_nofile_zero_works=yes 13845 rlimit_nofile_zero_works=yes
24748else 13846else
24749 echo "$as_me: program exited with status $ac_status" >&5 13847 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
24750echo "$as_me: failed program was:" >&5 13848$as_echo "no" >&6; }
24751sed 's/^/| /' conftest.$ac_ext >&5
24752
24753( exit $ac_status )
24754{ echo "$as_me:$LINENO: result: no" >&5
24755echo "${ECHO_T}no" >&6; }
24756 rlimit_nofile_zero_works=no 13849 rlimit_nofile_zero_works=no
24757fi 13850fi
24758rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 13851rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13852 conftest.$ac_objext conftest.beam conftest.$ac_ext
24759fi 13853fi
24760 13854
24761 13855
24762 13856{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if setrlimit RLIMIT_FSIZE works" >&5
24763{ echo "$as_me:$LINENO: checking if setrlimit RLIMIT_FSIZE works" >&5 13857$as_echo_n "checking if setrlimit RLIMIT_FSIZE works... " >&6; }
24764echo $ECHO_N "checking if setrlimit RLIMIT_FSIZE works... $ECHO_C" >&6; } 13858if test "$cross_compiling" = yes; then :
24765if test "$cross_compiling" = yes; then 13859 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
24766 { echo "$as_me:$LINENO: WARNING: cross compiling: assuming yes" >&5 13860$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
24767echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
24768 13861
24769else 13862else
24770 cat >conftest.$ac_ext <<_ACEOF 13863 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
24771/* confdefs.h. */
24772_ACEOF
24773cat confdefs.h >>conftest.$ac_ext
24774cat >>conftest.$ac_ext <<_ACEOF
24775/* end confdefs.h. */ 13864/* end confdefs.h. */
24776 13865
24777#include <sys/types.h> 13866#include <sys/types.h>
@@ -24791,84 +13880,46 @@ main ()
24791 return 0; 13880 return 0;
24792} 13881}
24793_ACEOF 13882_ACEOF
24794rm -f conftest$ac_exeext 13883if ac_fn_c_try_run "$LINENO"; then :
24795if { (ac_try="$ac_link" 13884 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
24796case "(($ac_try" in 13885$as_echo "yes" >&6; }
24797 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24798 *) ac_try_echo=$ac_try;;
24799esac
24800eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24801 (eval "$ac_link") 2>&5
24802 ac_status=$?
24803 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24804 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
24805 { (case "(($ac_try" in
24806 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24807 *) ac_try_echo=$ac_try;;
24808esac
24809eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24810 (eval "$ac_try") 2>&5
24811 ac_status=$?
24812 echo "$as_me:$LINENO: \$? = $ac_status" >&5
24813 (exit $ac_status); }; }; then
24814 { echo "$as_me:$LINENO: result: yes" >&5
24815echo "${ECHO_T}yes" >&6; }
24816else 13886else
24817 echo "$as_me: program exited with status $ac_status" >&5 13887 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
24818echo "$as_me: failed program was:" >&5 13888$as_echo "no" >&6; }
24819sed 's/^/| /' conftest.$ac_ext >&5
24820
24821( exit $ac_status )
24822{ echo "$as_me:$LINENO: result: no" >&5
24823echo "${ECHO_T}no" >&6; }
24824 13889
24825cat >>confdefs.h <<\_ACEOF 13890$as_echo "#define SANDBOX_SKIP_RLIMIT_FSIZE 1" >>confdefs.h
24826#define SANDBOX_SKIP_RLIMIT_FSIZE 1
24827_ACEOF
24828 13891
24829fi 13892fi
24830rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 13893rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
13894 conftest.$ac_objext conftest.beam conftest.$ac_ext
24831fi 13895fi
24832 13896
24833 13897
24834
24835if test "x$sandbox_arg" = "xpledge" || \ 13898if test "x$sandbox_arg" = "xpledge" || \
24836 ( test -z "$sandbox_arg" && test "x$ac_cv_func_pledge" = "xyes" ) ; then 13899 ( test -z "$sandbox_arg" && test "x$ac_cv_func_pledge" = "xyes" ) ; then
24837 test "x$ac_cv_func_pledge" != "xyes" && \ 13900 test "x$ac_cv_func_pledge" != "xyes" && \
24838 { { echo "$as_me:$LINENO: error: pledge sandbox requires pledge(2) support" >&5 13901 as_fn_error $? "pledge sandbox requires pledge(2) support" "$LINENO" 5
24839echo "$as_me: error: pledge sandbox requires pledge(2) support" >&2;}
24840 { (exit 1); exit 1; }; }
24841 SANDBOX_STYLE="pledge" 13902 SANDBOX_STYLE="pledge"
24842 13903
24843cat >>confdefs.h <<\_ACEOF 13904$as_echo "#define SANDBOX_PLEDGE 1" >>confdefs.h
24844#define SANDBOX_PLEDGE 1
24845_ACEOF
24846 13905
24847elif test "x$sandbox_arg" = "xsystrace" || \ 13906elif test "x$sandbox_arg" = "xsystrace" || \
24848 ( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then 13907 ( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then
24849 test "x$have_systr_policy_kill" != "x1" && \ 13908 test "x$have_systr_policy_kill" != "x1" && \
24850 { { echo "$as_me:$LINENO: error: systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support" >&5 13909 as_fn_error $? "systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support" "$LINENO" 5
24851echo "$as_me: error: systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support" >&2;}
24852 { (exit 1); exit 1; }; }
24853 SANDBOX_STYLE="systrace" 13910 SANDBOX_STYLE="systrace"
24854 13911
24855cat >>confdefs.h <<\_ACEOF 13912$as_echo "#define SANDBOX_SYSTRACE 1" >>confdefs.h
24856#define SANDBOX_SYSTRACE 1
24857_ACEOF
24858 13913
24859elif test "x$sandbox_arg" = "xdarwin" || \ 13914elif test "x$sandbox_arg" = "xdarwin" || \
24860 ( test -z "$sandbox_arg" && test "x$ac_cv_func_sandbox_init" = "xyes" && \ 13915 ( test -z "$sandbox_arg" && test "x$ac_cv_func_sandbox_init" = "xyes" && \
24861 test "x$ac_cv_header_sandbox_h" = "xyes") ; then 13916 test "x$ac_cv_header_sandbox_h" = "xyes") ; then
24862 test "x$ac_cv_func_sandbox_init" != "xyes" -o \ 13917 test "x$ac_cv_func_sandbox_init" != "xyes" -o \
24863 "x$ac_cv_header_sandbox_h" != "xyes" && \ 13918 "x$ac_cv_header_sandbox_h" != "xyes" && \
24864 { { echo "$as_me:$LINENO: error: Darwin seatbelt sandbox requires sandbox.h and sandbox_init function" >&5 13919 as_fn_error $? "Darwin seatbelt sandbox requires sandbox.h and sandbox_init function" "$LINENO" 5
24865echo "$as_me: error: Darwin seatbelt sandbox requires sandbox.h and sandbox_init function" >&2;}
24866 { (exit 1); exit 1; }; }
24867 SANDBOX_STYLE="darwin" 13920 SANDBOX_STYLE="darwin"
24868 13921
24869cat >>confdefs.h <<\_ACEOF 13922$as_echo "#define SANDBOX_DARWIN 1" >>confdefs.h
24870#define SANDBOX_DARWIN 1
24871_ACEOF
24872 13923
24873elif test "x$sandbox_arg" = "xseccomp_filter" || \ 13924elif test "x$sandbox_arg" = "xseccomp_filter" || \
24874 ( test -z "$sandbox_arg" && \ 13925 ( test -z "$sandbox_arg" && \
@@ -24880,83 +13931,55 @@ elif test "x$sandbox_arg" = "xseccomp_filter" || \
24880 test "x$have_linux_no_new_privs" = "x1" && \ 13931 test "x$have_linux_no_new_privs" = "x1" && \
24881 test "x$ac_cv_func_prctl" = "xyes" ) ; then 13932 test "x$ac_cv_func_prctl" = "xyes" ) ; then
24882 test "x$seccomp_audit_arch" = "x" && \ 13933 test "x$seccomp_audit_arch" = "x" && \
24883 { { echo "$as_me:$LINENO: error: seccomp_filter sandbox not supported on $host" >&5 13934 as_fn_error $? "seccomp_filter sandbox not supported on $host" "$LINENO" 5
24884echo "$as_me: error: seccomp_filter sandbox not supported on $host" >&2;}
24885 { (exit 1); exit 1; }; }
24886 test "x$have_linux_no_new_privs" != "x1" && \ 13935 test "x$have_linux_no_new_privs" != "x1" && \
24887 { { echo "$as_me:$LINENO: error: seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS" >&5 13936 as_fn_error $? "seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS" "$LINENO" 5
24888echo "$as_me: error: seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS" >&2;}
24889 { (exit 1); exit 1; }; }
24890 test "x$have_seccomp_filter" != "x1" && \ 13937 test "x$have_seccomp_filter" != "x1" && \
24891 { { echo "$as_me:$LINENO: error: seccomp_filter sandbox requires seccomp headers" >&5 13938 as_fn_error $? "seccomp_filter sandbox requires seccomp headers" "$LINENO" 5
24892echo "$as_me: error: seccomp_filter sandbox requires seccomp headers" >&2;}
24893 { (exit 1); exit 1; }; }
24894 test "x$ac_cv_func_prctl" != "xyes" && \ 13939 test "x$ac_cv_func_prctl" != "xyes" && \
24895 { { echo "$as_me:$LINENO: error: seccomp_filter sandbox requires prctl function" >&5 13940 as_fn_error $? "seccomp_filter sandbox requires prctl function" "$LINENO" 5
24896echo "$as_me: error: seccomp_filter sandbox requires prctl function" >&2;}
24897 { (exit 1); exit 1; }; }
24898 SANDBOX_STYLE="seccomp_filter" 13941 SANDBOX_STYLE="seccomp_filter"
24899 13942
24900cat >>confdefs.h <<\_ACEOF 13943$as_echo "#define SANDBOX_SECCOMP_FILTER 1" >>confdefs.h
24901#define SANDBOX_SECCOMP_FILTER 1
24902_ACEOF
24903 13944
24904elif test "x$sandbox_arg" = "xcapsicum" || \ 13945elif test "x$sandbox_arg" = "xcapsicum" || \
24905 ( test -z "$sandbox_arg" && \ 13946 ( test -z "$sandbox_arg" && \
24906 test "x$ac_cv_header_sys_capability_h" = "xyes" && \ 13947 test "x$ac_cv_header_sys_capability_h" = "xyes" && \
24907 test "x$ac_cv_func_cap_rights_limit" = "xyes") ; then 13948 test "x$ac_cv_func_cap_rights_limit" = "xyes") ; then
24908 test "x$ac_cv_header_sys_capability_h" != "xyes" && \ 13949 test "x$ac_cv_header_sys_capability_h" != "xyes" && \
24909 { { echo "$as_me:$LINENO: error: capsicum sandbox requires sys/capability.h header" >&5 13950 as_fn_error $? "capsicum sandbox requires sys/capability.h header" "$LINENO" 5
24910echo "$as_me: error: capsicum sandbox requires sys/capability.h header" >&2;}
24911 { (exit 1); exit 1; }; }
24912 test "x$ac_cv_func_cap_rights_limit" != "xyes" && \ 13951 test "x$ac_cv_func_cap_rights_limit" != "xyes" && \
24913 { { echo "$as_me:$LINENO: error: capsicum sandbox requires cap_rights_limit function" >&5 13952 as_fn_error $? "capsicum sandbox requires cap_rights_limit function" "$LINENO" 5
24914echo "$as_me: error: capsicum sandbox requires cap_rights_limit function" >&2;}
24915 { (exit 1); exit 1; }; }
24916 SANDBOX_STYLE="capsicum" 13953 SANDBOX_STYLE="capsicum"
24917 13954
24918cat >>confdefs.h <<\_ACEOF 13955$as_echo "#define SANDBOX_CAPSICUM 1" >>confdefs.h
24919#define SANDBOX_CAPSICUM 1
24920_ACEOF
24921 13956
24922elif test "x$sandbox_arg" = "xrlimit" || \ 13957elif test "x$sandbox_arg" = "xrlimit" || \
24923 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" && \ 13958 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" && \
24924 test "x$select_works_with_rlimit" = "xyes" && \ 13959 test "x$select_works_with_rlimit" = "xyes" && \
24925 test "x$rlimit_nofile_zero_works" = "xyes" ) ; then 13960 test "x$rlimit_nofile_zero_works" = "xyes" ) ; then
24926 test "x$ac_cv_func_setrlimit" != "xyes" && \ 13961 test "x$ac_cv_func_setrlimit" != "xyes" && \
24927 { { echo "$as_me:$LINENO: error: rlimit sandbox requires setrlimit function" >&5 13962 as_fn_error $? "rlimit sandbox requires setrlimit function" "$LINENO" 5
24928echo "$as_me: error: rlimit sandbox requires setrlimit function" >&2;}
24929 { (exit 1); exit 1; }; }
24930 test "x$select_works_with_rlimit" != "xyes" && \ 13963 test "x$select_works_with_rlimit" != "xyes" && \
24931 { { echo "$as_me:$LINENO: error: rlimit sandbox requires select to work with rlimit" >&5 13964 as_fn_error $? "rlimit sandbox requires select to work with rlimit" "$LINENO" 5
24932echo "$as_me: error: rlimit sandbox requires select to work with rlimit" >&2;}
24933 { (exit 1); exit 1; }; }
24934 SANDBOX_STYLE="rlimit" 13965 SANDBOX_STYLE="rlimit"
24935 13966
24936cat >>confdefs.h <<\_ACEOF 13967$as_echo "#define SANDBOX_RLIMIT 1" >>confdefs.h
24937#define SANDBOX_RLIMIT 1
24938_ACEOF
24939 13968
24940elif test "x$sandbox_arg" = "xsolaris" || \ 13969elif test "x$sandbox_arg" = "xsolaris" || \
24941 ( test -z "$sandbox_arg" && test "x$SOLARIS_PRIVS" = "xyes" ) ; then 13970 ( test -z "$sandbox_arg" && test "x$SOLARIS_PRIVS" = "xyes" ) ; then
24942 SANDBOX_STYLE="solaris" 13971 SANDBOX_STYLE="solaris"
24943 13972
24944cat >>confdefs.h <<\_ACEOF 13973$as_echo "#define SANDBOX_SOLARIS 1" >>confdefs.h
24945#define SANDBOX_SOLARIS 1
24946_ACEOF
24947 13974
24948elif test -z "$sandbox_arg" || test "x$sandbox_arg" = "xno" || \ 13975elif test -z "$sandbox_arg" || test "x$sandbox_arg" = "xno" || \
24949 test "x$sandbox_arg" = "xnone" || test "x$sandbox_arg" = "xnull" ; then 13976 test "x$sandbox_arg" = "xnone" || test "x$sandbox_arg" = "xnull" ; then
24950 SANDBOX_STYLE="none" 13977 SANDBOX_STYLE="none"
24951 13978
24952cat >>confdefs.h <<\_ACEOF 13979$as_echo "#define SANDBOX_NULL 1" >>confdefs.h
24953#define SANDBOX_NULL 1
24954_ACEOF
24955 13980
24956else 13981else
24957 { { echo "$as_me:$LINENO: error: unsupported --with-sandbox" >&5 13982 as_fn_error $? "unsupported --with-sandbox" "$LINENO" 5
24958echo "$as_me: error: unsupported --with-sandbox" >&2;}
24959 { (exit 1); exit 1; }; }
24960fi 13983fi
24961 13984
24962# Cheap hack to ensure NEWS-OS libraries are arranged right. 13985# Cheap hack to ensure NEWS-OS libraries are arranged right.
@@ -24965,60 +13988,8 @@ if test ! -z "$SONY" ; then
24965fi 13988fi
24966 13989
24967# Check for long long datatypes 13990# Check for long long datatypes
24968{ echo "$as_me:$LINENO: checking for long long" >&5 13991ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
24969echo $ECHO_N "checking for long long... $ECHO_C" >&6; } 13992if test "x$ac_cv_type_long_long" = xyes; then :
24970if test "${ac_cv_type_long_long+set}" = set; then
24971 echo $ECHO_N "(cached) $ECHO_C" >&6
24972else
24973 cat >conftest.$ac_ext <<_ACEOF
24974/* confdefs.h. */
24975_ACEOF
24976cat confdefs.h >>conftest.$ac_ext
24977cat >>conftest.$ac_ext <<_ACEOF
24978/* end confdefs.h. */
24979$ac_includes_default
24980typedef long long ac__type_new_;
24981int
24982main ()
24983{
24984if ((ac__type_new_ *) 0)
24985 return 0;
24986if (sizeof (ac__type_new_))
24987 return 0;
24988 ;
24989 return 0;
24990}
24991_ACEOF
24992rm -f conftest.$ac_objext
24993if { (ac_try="$ac_compile"
24994case "(($ac_try" in
24995 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
24996 *) ac_try_echo=$ac_try;;
24997esac
24998eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
24999 (eval "$ac_compile") 2>conftest.er1
25000 ac_status=$?
25001 grep -v '^ *+' conftest.er1 >conftest.err
25002 rm -f conftest.er1
25003 cat conftest.err >&5
25004 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25005 (exit $ac_status); } && {
25006 test -z "$ac_c_werror_flag" ||
25007 test ! -s conftest.err
25008 } && test -s conftest.$ac_objext; then
25009 ac_cv_type_long_long=yes
25010else
25011 echo "$as_me: failed program was:" >&5
25012sed 's/^/| /' conftest.$ac_ext >&5
25013
25014 ac_cv_type_long_long=no
25015fi
25016
25017rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25018fi
25019{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
25020echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
25021if test $ac_cv_type_long_long = yes; then
25022 13993
25023cat >>confdefs.h <<_ACEOF 13994cat >>confdefs.h <<_ACEOF
25024#define HAVE_LONG_LONG 1 13995#define HAVE_LONG_LONG 1
@@ -25026,60 +13997,8 @@ _ACEOF
25026 13997
25027 13998
25028fi 13999fi
25029{ echo "$as_me:$LINENO: checking for unsigned long long" >&5 14000ac_fn_c_check_type "$LINENO" "unsigned long long" "ac_cv_type_unsigned_long_long" "$ac_includes_default"
25030echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } 14001if test "x$ac_cv_type_unsigned_long_long" = xyes; then :
25031if test "${ac_cv_type_unsigned_long_long+set}" = set; then
25032 echo $ECHO_N "(cached) $ECHO_C" >&6
25033else
25034 cat >conftest.$ac_ext <<_ACEOF
25035/* confdefs.h. */
25036_ACEOF
25037cat confdefs.h >>conftest.$ac_ext
25038cat >>conftest.$ac_ext <<_ACEOF
25039/* end confdefs.h. */
25040$ac_includes_default
25041typedef unsigned long long ac__type_new_;
25042int
25043main ()
25044{
25045if ((ac__type_new_ *) 0)
25046 return 0;
25047if (sizeof (ac__type_new_))
25048 return 0;
25049 ;
25050 return 0;
25051}
25052_ACEOF
25053rm -f conftest.$ac_objext
25054if { (ac_try="$ac_compile"
25055case "(($ac_try" in
25056 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25057 *) ac_try_echo=$ac_try;;
25058esac
25059eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25060 (eval "$ac_compile") 2>conftest.er1
25061 ac_status=$?
25062 grep -v '^ *+' conftest.er1 >conftest.err
25063 rm -f conftest.er1
25064 cat conftest.err >&5
25065 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25066 (exit $ac_status); } && {
25067 test -z "$ac_c_werror_flag" ||
25068 test ! -s conftest.err
25069 } && test -s conftest.$ac_objext; then
25070 ac_cv_type_unsigned_long_long=yes
25071else
25072 echo "$as_me: failed program was:" >&5
25073sed 's/^/| /' conftest.$ac_ext >&5
25074
25075 ac_cv_type_unsigned_long_long=no
25076fi
25077
25078rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25079fi
25080{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5
25081echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6; }
25082if test $ac_cv_type_unsigned_long_long = yes; then
25083 14002
25084cat >>confdefs.h <<_ACEOF 14003cat >>confdefs.h <<_ACEOF
25085#define HAVE_UNSIGNED_LONG_LONG 1 14004#define HAVE_UNSIGNED_LONG_LONG 1
@@ -25087,60 +14006,8 @@ _ACEOF
25087 14006
25088 14007
25089fi 14008fi
25090{ echo "$as_me:$LINENO: checking for long double" >&5 14009ac_fn_c_check_type "$LINENO" "long double" "ac_cv_type_long_double" "$ac_includes_default"
25091echo $ECHO_N "checking for long double... $ECHO_C" >&6; } 14010if test "x$ac_cv_type_long_double" = xyes; then :
25092if test "${ac_cv_type_long_double+set}" = set; then
25093 echo $ECHO_N "(cached) $ECHO_C" >&6
25094else
25095 cat >conftest.$ac_ext <<_ACEOF
25096/* confdefs.h. */
25097_ACEOF
25098cat confdefs.h >>conftest.$ac_ext
25099cat >>conftest.$ac_ext <<_ACEOF
25100/* end confdefs.h. */
25101$ac_includes_default
25102typedef long double ac__type_new_;
25103int
25104main ()
25105{
25106if ((ac__type_new_ *) 0)
25107 return 0;
25108if (sizeof (ac__type_new_))
25109 return 0;
25110 ;
25111 return 0;
25112}
25113_ACEOF
25114rm -f conftest.$ac_objext
25115if { (ac_try="$ac_compile"
25116case "(($ac_try" in
25117 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25118 *) ac_try_echo=$ac_try;;
25119esac
25120eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25121 (eval "$ac_compile") 2>conftest.er1
25122 ac_status=$?
25123 grep -v '^ *+' conftest.er1 >conftest.err
25124 rm -f conftest.er1
25125 cat conftest.err >&5
25126 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25127 (exit $ac_status); } && {
25128 test -z "$ac_c_werror_flag" ||
25129 test ! -s conftest.err
25130 } && test -s conftest.$ac_objext; then
25131 ac_cv_type_long_double=yes
25132else
25133 echo "$as_me: failed program was:" >&5
25134sed 's/^/| /' conftest.$ac_ext >&5
25135
25136 ac_cv_type_long_double=no
25137fi
25138
25139rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25140fi
25141{ echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
25142echo "${ECHO_T}$ac_cv_type_long_double" >&6; }
25143if test $ac_cv_type_long_double = yes; then
25144 14011
25145cat >>confdefs.h <<_ACEOF 14012cat >>confdefs.h <<_ACEOF
25146#define HAVE_LONG_DOUBLE 1 14013#define HAVE_LONG_DOUBLE 1
@@ -25151,403 +14018,31 @@ fi
25151 14018
25152 14019
25153# Check datatype sizes 14020# Check datatype sizes
25154{ echo "$as_me:$LINENO: checking for short int" >&5
25155echo $ECHO_N "checking for short int... $ECHO_C" >&6; }
25156if test "${ac_cv_type_short_int+set}" = set; then
25157 echo $ECHO_N "(cached) $ECHO_C" >&6
25158else
25159 cat >conftest.$ac_ext <<_ACEOF
25160/* confdefs.h. */
25161_ACEOF
25162cat confdefs.h >>conftest.$ac_ext
25163cat >>conftest.$ac_ext <<_ACEOF
25164/* end confdefs.h. */
25165$ac_includes_default
25166typedef short int ac__type_new_;
25167int
25168main ()
25169{
25170if ((ac__type_new_ *) 0)
25171 return 0;
25172if (sizeof (ac__type_new_))
25173 return 0;
25174 ;
25175 return 0;
25176}
25177_ACEOF
25178rm -f conftest.$ac_objext
25179if { (ac_try="$ac_compile"
25180case "(($ac_try" in
25181 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25182 *) ac_try_echo=$ac_try;;
25183esac
25184eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25185 (eval "$ac_compile") 2>conftest.er1
25186 ac_status=$?
25187 grep -v '^ *+' conftest.er1 >conftest.err
25188 rm -f conftest.er1
25189 cat conftest.err >&5
25190 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25191 (exit $ac_status); } && {
25192 test -z "$ac_c_werror_flag" ||
25193 test ! -s conftest.err
25194 } && test -s conftest.$ac_objext; then
25195 ac_cv_type_short_int=yes
25196else
25197 echo "$as_me: failed program was:" >&5
25198sed 's/^/| /' conftest.$ac_ext >&5
25199
25200 ac_cv_type_short_int=no
25201fi
25202
25203rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25204fi
25205{ echo "$as_me:$LINENO: result: $ac_cv_type_short_int" >&5
25206echo "${ECHO_T}$ac_cv_type_short_int" >&6; }
25207
25208# The cast to long int works around a bug in the HP C Compiler 14021# The cast to long int works around a bug in the HP C Compiler
25209# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects 14022# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
25210# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. 14023# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
25211# This bug is HP SR number 8606223364. 14024# This bug is HP SR number 8606223364.
25212{ echo "$as_me:$LINENO: checking size of short int" >&5 14025{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5
25213echo $ECHO_N "checking size of short int... $ECHO_C" >&6; } 14026$as_echo_n "checking size of short int... " >&6; }
25214if test "${ac_cv_sizeof_short_int+set}" = set; then 14027if ${ac_cv_sizeof_short_int+:} false; then :
25215 echo $ECHO_N "(cached) $ECHO_C" >&6 14028 $as_echo_n "(cached) " >&6
25216else
25217 if test "$cross_compiling" = yes; then
25218 # Depending upon the size, compute the lo and hi bounds.
25219cat >conftest.$ac_ext <<_ACEOF
25220/* confdefs.h. */
25221_ACEOF
25222cat confdefs.h >>conftest.$ac_ext
25223cat >>conftest.$ac_ext <<_ACEOF
25224/* end confdefs.h. */
25225$ac_includes_default
25226 typedef short int ac__type_sizeof_;
25227int
25228main ()
25229{
25230static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
25231test_array [0] = 0
25232
25233 ;
25234 return 0;
25235}
25236_ACEOF
25237rm -f conftest.$ac_objext
25238if { (ac_try="$ac_compile"
25239case "(($ac_try" in
25240 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25241 *) ac_try_echo=$ac_try;;
25242esac
25243eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25244 (eval "$ac_compile") 2>conftest.er1
25245 ac_status=$?
25246 grep -v '^ *+' conftest.er1 >conftest.err
25247 rm -f conftest.er1
25248 cat conftest.err >&5
25249 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25250 (exit $ac_status); } && {
25251 test -z "$ac_c_werror_flag" ||
25252 test ! -s conftest.err
25253 } && test -s conftest.$ac_objext; then
25254 ac_lo=0 ac_mid=0
25255 while :; do
25256 cat >conftest.$ac_ext <<_ACEOF
25257/* confdefs.h. */
25258_ACEOF
25259cat confdefs.h >>conftest.$ac_ext
25260cat >>conftest.$ac_ext <<_ACEOF
25261/* end confdefs.h. */
25262$ac_includes_default
25263 typedef short int ac__type_sizeof_;
25264int
25265main ()
25266{
25267static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
25268test_array [0] = 0
25269
25270 ;
25271 return 0;
25272}
25273_ACEOF
25274rm -f conftest.$ac_objext
25275if { (ac_try="$ac_compile"
25276case "(($ac_try" in
25277 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25278 *) ac_try_echo=$ac_try;;
25279esac
25280eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25281 (eval "$ac_compile") 2>conftest.er1
25282 ac_status=$?
25283 grep -v '^ *+' conftest.er1 >conftest.err
25284 rm -f conftest.er1
25285 cat conftest.err >&5
25286 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25287 (exit $ac_status); } && {
25288 test -z "$ac_c_werror_flag" ||
25289 test ! -s conftest.err
25290 } && test -s conftest.$ac_objext; then
25291 ac_hi=$ac_mid; break
25292else 14029else
25293 echo "$as_me: failed program was:" >&5 14030 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short int))" "ac_cv_sizeof_short_int" "$ac_includes_default"; then :
25294sed 's/^/| /' conftest.$ac_ext >&5
25295
25296 ac_lo=`expr $ac_mid + 1`
25297 if test $ac_lo -le $ac_mid; then
25298 ac_lo= ac_hi=
25299 break
25300 fi
25301 ac_mid=`expr 2 '*' $ac_mid + 1`
25302fi
25303 14031
25304rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25305 done
25306else 14032else
25307 echo "$as_me: failed program was:" >&5 14033 if test "$ac_cv_type_short_int" = yes; then
25308sed 's/^/| /' conftest.$ac_ext >&5 14034 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
25309 14035$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
25310 cat >conftest.$ac_ext <<_ACEOF 14036as_fn_error 77 "cannot compute sizeof (short int)
25311/* confdefs.h. */ 14037See \`config.log' for more details" "$LINENO" 5; }
25312_ACEOF
25313cat confdefs.h >>conftest.$ac_ext
25314cat >>conftest.$ac_ext <<_ACEOF
25315/* end confdefs.h. */
25316$ac_includes_default
25317 typedef short int ac__type_sizeof_;
25318int
25319main ()
25320{
25321static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
25322test_array [0] = 0
25323
25324 ;
25325 return 0;
25326}
25327_ACEOF
25328rm -f conftest.$ac_objext
25329if { (ac_try="$ac_compile"
25330case "(($ac_try" in
25331 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25332 *) ac_try_echo=$ac_try;;
25333esac
25334eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25335 (eval "$ac_compile") 2>conftest.er1
25336 ac_status=$?
25337 grep -v '^ *+' conftest.er1 >conftest.err
25338 rm -f conftest.er1
25339 cat conftest.err >&5
25340 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25341 (exit $ac_status); } && {
25342 test -z "$ac_c_werror_flag" ||
25343 test ! -s conftest.err
25344 } && test -s conftest.$ac_objext; then
25345 ac_hi=-1 ac_mid=-1
25346 while :; do
25347 cat >conftest.$ac_ext <<_ACEOF
25348/* confdefs.h. */
25349_ACEOF
25350cat confdefs.h >>conftest.$ac_ext
25351cat >>conftest.$ac_ext <<_ACEOF
25352/* end confdefs.h. */
25353$ac_includes_default
25354 typedef short int ac__type_sizeof_;
25355int
25356main ()
25357{
25358static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
25359test_array [0] = 0
25360
25361 ;
25362 return 0;
25363}
25364_ACEOF
25365rm -f conftest.$ac_objext
25366if { (ac_try="$ac_compile"
25367case "(($ac_try" in
25368 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25369 *) ac_try_echo=$ac_try;;
25370esac
25371eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25372 (eval "$ac_compile") 2>conftest.er1
25373 ac_status=$?
25374 grep -v '^ *+' conftest.er1 >conftest.err
25375 rm -f conftest.er1
25376 cat conftest.err >&5
25377 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25378 (exit $ac_status); } && {
25379 test -z "$ac_c_werror_flag" ||
25380 test ! -s conftest.err
25381 } && test -s conftest.$ac_objext; then
25382 ac_lo=$ac_mid; break
25383else
25384 echo "$as_me: failed program was:" >&5
25385sed 's/^/| /' conftest.$ac_ext >&5
25386
25387 ac_hi=`expr '(' $ac_mid ')' - 1`
25388 if test $ac_mid -le $ac_hi; then
25389 ac_lo= ac_hi=
25390 break
25391 fi
25392 ac_mid=`expr 2 '*' $ac_mid`
25393fi
25394
25395rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25396 done
25397else
25398 echo "$as_me: failed program was:" >&5
25399sed 's/^/| /' conftest.$ac_ext >&5
25400
25401 ac_lo= ac_hi=
25402fi
25403
25404rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25405fi
25406
25407rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25408# Binary search between lo and hi bounds.
25409while test "x$ac_lo" != "x$ac_hi"; do
25410 ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
25411 cat >conftest.$ac_ext <<_ACEOF
25412/* confdefs.h. */
25413_ACEOF
25414cat confdefs.h >>conftest.$ac_ext
25415cat >>conftest.$ac_ext <<_ACEOF
25416/* end confdefs.h. */
25417$ac_includes_default
25418 typedef short int ac__type_sizeof_;
25419int
25420main ()
25421{
25422static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
25423test_array [0] = 0
25424
25425 ;
25426 return 0;
25427}
25428_ACEOF
25429rm -f conftest.$ac_objext
25430if { (ac_try="$ac_compile"
25431case "(($ac_try" in
25432 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25433 *) ac_try_echo=$ac_try;;
25434esac
25435eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25436 (eval "$ac_compile") 2>conftest.er1
25437 ac_status=$?
25438 grep -v '^ *+' conftest.er1 >conftest.err
25439 rm -f conftest.er1
25440 cat conftest.err >&5
25441 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25442 (exit $ac_status); } && {
25443 test -z "$ac_c_werror_flag" ||
25444 test ! -s conftest.err
25445 } && test -s conftest.$ac_objext; then
25446 ac_hi=$ac_mid
25447else
25448 echo "$as_me: failed program was:" >&5
25449sed 's/^/| /' conftest.$ac_ext >&5
25450
25451 ac_lo=`expr '(' $ac_mid ')' + 1`
25452fi
25453
25454rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25455done
25456case $ac_lo in
25457?*) ac_cv_sizeof_short_int=$ac_lo;;
25458'') if test "$ac_cv_type_short_int" = yes; then
25459 { { echo "$as_me:$LINENO: error: cannot compute sizeof (short int)
25460See \`config.log' for more details." >&5
25461echo "$as_me: error: cannot compute sizeof (short int)
25462See \`config.log' for more details." >&2;}
25463 { (exit 77); exit 77; }; }
25464 else
25465 ac_cv_sizeof_short_int=0
25466 fi ;;
25467esac
25468else
25469 cat >conftest.$ac_ext <<_ACEOF
25470/* confdefs.h. */
25471_ACEOF
25472cat confdefs.h >>conftest.$ac_ext
25473cat >>conftest.$ac_ext <<_ACEOF
25474/* end confdefs.h. */
25475$ac_includes_default
25476 typedef short int ac__type_sizeof_;
25477static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
25478static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
25479#include <stdio.h>
25480#include <stdlib.h>
25481int
25482main ()
25483{
25484
25485 FILE *f = fopen ("conftest.val", "w");
25486 if (! f)
25487 return 1;
25488 if (((long int) (sizeof (ac__type_sizeof_))) < 0)
25489 {
25490 long int i = longval ();
25491 if (i != ((long int) (sizeof (ac__type_sizeof_))))
25492 return 1;
25493 fprintf (f, "%ld\n", i);
25494 }
25495 else
25496 {
25497 unsigned long int i = ulongval ();
25498 if (i != ((long int) (sizeof (ac__type_sizeof_))))
25499 return 1;
25500 fprintf (f, "%lu\n", i);
25501 }
25502 return ferror (f) || fclose (f) != 0;
25503
25504 ;
25505 return 0;
25506}
25507_ACEOF
25508rm -f conftest$ac_exeext
25509if { (ac_try="$ac_link"
25510case "(($ac_try" in
25511 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25512 *) ac_try_echo=$ac_try;;
25513esac
25514eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25515 (eval "$ac_link") 2>&5
25516 ac_status=$?
25517 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25518 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
25519 { (case "(($ac_try" in
25520 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25521 *) ac_try_echo=$ac_try;;
25522esac
25523eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25524 (eval "$ac_try") 2>&5
25525 ac_status=$?
25526 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25527 (exit $ac_status); }; }; then
25528 ac_cv_sizeof_short_int=`cat conftest.val`
25529else
25530 echo "$as_me: program exited with status $ac_status" >&5
25531echo "$as_me: failed program was:" >&5
25532sed 's/^/| /' conftest.$ac_ext >&5
25533
25534( exit $ac_status )
25535if test "$ac_cv_type_short_int" = yes; then
25536 { { echo "$as_me:$LINENO: error: cannot compute sizeof (short int)
25537See \`config.log' for more details." >&5
25538echo "$as_me: error: cannot compute sizeof (short int)
25539See \`config.log' for more details." >&2;}
25540 { (exit 77); exit 77; }; }
25541 else 14038 else
25542 ac_cv_sizeof_short_int=0 14039 ac_cv_sizeof_short_int=0
25543 fi 14040 fi
25544fi 14041fi
25545rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 14042
25546fi
25547rm -f conftest.val
25548fi 14043fi
25549{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short_int" >&5 14044{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short_int" >&5
25550echo "${ECHO_T}$ac_cv_sizeof_short_int" >&6; } 14045$as_echo "$ac_cv_sizeof_short_int" >&6; }
25551 14046
25552 14047
25553 14048
@@ -25556,403 +14051,31 @@ cat >>confdefs.h <<_ACEOF
25556_ACEOF 14051_ACEOF
25557 14052
25558 14053
25559{ echo "$as_me:$LINENO: checking for int" >&5
25560echo $ECHO_N "checking for int... $ECHO_C" >&6; }
25561if test "${ac_cv_type_int+set}" = set; then
25562 echo $ECHO_N "(cached) $ECHO_C" >&6
25563else
25564 cat >conftest.$ac_ext <<_ACEOF
25565/* confdefs.h. */
25566_ACEOF
25567cat confdefs.h >>conftest.$ac_ext
25568cat >>conftest.$ac_ext <<_ACEOF
25569/* end confdefs.h. */
25570$ac_includes_default
25571typedef int ac__type_new_;
25572int
25573main ()
25574{
25575if ((ac__type_new_ *) 0)
25576 return 0;
25577if (sizeof (ac__type_new_))
25578 return 0;
25579 ;
25580 return 0;
25581}
25582_ACEOF
25583rm -f conftest.$ac_objext
25584if { (ac_try="$ac_compile"
25585case "(($ac_try" in
25586 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25587 *) ac_try_echo=$ac_try;;
25588esac
25589eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25590 (eval "$ac_compile") 2>conftest.er1
25591 ac_status=$?
25592 grep -v '^ *+' conftest.er1 >conftest.err
25593 rm -f conftest.er1
25594 cat conftest.err >&5
25595 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25596 (exit $ac_status); } && {
25597 test -z "$ac_c_werror_flag" ||
25598 test ! -s conftest.err
25599 } && test -s conftest.$ac_objext; then
25600 ac_cv_type_int=yes
25601else
25602 echo "$as_me: failed program was:" >&5
25603sed 's/^/| /' conftest.$ac_ext >&5
25604
25605 ac_cv_type_int=no
25606fi
25607
25608rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25609fi
25610{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
25611echo "${ECHO_T}$ac_cv_type_int" >&6; }
25612
25613# The cast to long int works around a bug in the HP C Compiler 14054# The cast to long int works around a bug in the HP C Compiler
25614# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects 14055# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
25615# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. 14056# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
25616# This bug is HP SR number 8606223364. 14057# This bug is HP SR number 8606223364.
25617{ echo "$as_me:$LINENO: checking size of int" >&5 14058{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
25618echo $ECHO_N "checking size of int... $ECHO_C" >&6; } 14059$as_echo_n "checking size of int... " >&6; }
25619if test "${ac_cv_sizeof_int+set}" = set; then 14060if ${ac_cv_sizeof_int+:} false; then :
25620 echo $ECHO_N "(cached) $ECHO_C" >&6 14061 $as_echo_n "(cached) " >&6
25621else
25622 if test "$cross_compiling" = yes; then
25623 # Depending upon the size, compute the lo and hi bounds.
25624cat >conftest.$ac_ext <<_ACEOF
25625/* confdefs.h. */
25626_ACEOF
25627cat confdefs.h >>conftest.$ac_ext
25628cat >>conftest.$ac_ext <<_ACEOF
25629/* end confdefs.h. */
25630$ac_includes_default
25631 typedef int ac__type_sizeof_;
25632int
25633main ()
25634{
25635static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
25636test_array [0] = 0
25637
25638 ;
25639 return 0;
25640}
25641_ACEOF
25642rm -f conftest.$ac_objext
25643if { (ac_try="$ac_compile"
25644case "(($ac_try" in
25645 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25646 *) ac_try_echo=$ac_try;;
25647esac
25648eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25649 (eval "$ac_compile") 2>conftest.er1
25650 ac_status=$?
25651 grep -v '^ *+' conftest.er1 >conftest.err
25652 rm -f conftest.er1
25653 cat conftest.err >&5
25654 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25655 (exit $ac_status); } && {
25656 test -z "$ac_c_werror_flag" ||
25657 test ! -s conftest.err
25658 } && test -s conftest.$ac_objext; then
25659 ac_lo=0 ac_mid=0
25660 while :; do
25661 cat >conftest.$ac_ext <<_ACEOF
25662/* confdefs.h. */
25663_ACEOF
25664cat confdefs.h >>conftest.$ac_ext
25665cat >>conftest.$ac_ext <<_ACEOF
25666/* end confdefs.h. */
25667$ac_includes_default
25668 typedef int ac__type_sizeof_;
25669int
25670main ()
25671{
25672static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
25673test_array [0] = 0
25674
25675 ;
25676 return 0;
25677}
25678_ACEOF
25679rm -f conftest.$ac_objext
25680if { (ac_try="$ac_compile"
25681case "(($ac_try" in
25682 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25683 *) ac_try_echo=$ac_try;;
25684esac
25685eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25686 (eval "$ac_compile") 2>conftest.er1
25687 ac_status=$?
25688 grep -v '^ *+' conftest.er1 >conftest.err
25689 rm -f conftest.er1
25690 cat conftest.err >&5
25691 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25692 (exit $ac_status); } && {
25693 test -z "$ac_c_werror_flag" ||
25694 test ! -s conftest.err
25695 } && test -s conftest.$ac_objext; then
25696 ac_hi=$ac_mid; break
25697else
25698 echo "$as_me: failed program was:" >&5
25699sed 's/^/| /' conftest.$ac_ext >&5
25700
25701 ac_lo=`expr $ac_mid + 1`
25702 if test $ac_lo -le $ac_mid; then
25703 ac_lo= ac_hi=
25704 break
25705 fi
25706 ac_mid=`expr 2 '*' $ac_mid + 1`
25707fi
25708
25709rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25710 done
25711else
25712 echo "$as_me: failed program was:" >&5
25713sed 's/^/| /' conftest.$ac_ext >&5
25714
25715 cat >conftest.$ac_ext <<_ACEOF
25716/* confdefs.h. */
25717_ACEOF
25718cat confdefs.h >>conftest.$ac_ext
25719cat >>conftest.$ac_ext <<_ACEOF
25720/* end confdefs.h. */
25721$ac_includes_default
25722 typedef int ac__type_sizeof_;
25723int
25724main ()
25725{
25726static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
25727test_array [0] = 0
25728
25729 ;
25730 return 0;
25731}
25732_ACEOF
25733rm -f conftest.$ac_objext
25734if { (ac_try="$ac_compile"
25735case "(($ac_try" in
25736 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25737 *) ac_try_echo=$ac_try;;
25738esac
25739eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25740 (eval "$ac_compile") 2>conftest.er1
25741 ac_status=$?
25742 grep -v '^ *+' conftest.er1 >conftest.err
25743 rm -f conftest.er1
25744 cat conftest.err >&5
25745 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25746 (exit $ac_status); } && {
25747 test -z "$ac_c_werror_flag" ||
25748 test ! -s conftest.err
25749 } && test -s conftest.$ac_objext; then
25750 ac_hi=-1 ac_mid=-1
25751 while :; do
25752 cat >conftest.$ac_ext <<_ACEOF
25753/* confdefs.h. */
25754_ACEOF
25755cat confdefs.h >>conftest.$ac_ext
25756cat >>conftest.$ac_ext <<_ACEOF
25757/* end confdefs.h. */
25758$ac_includes_default
25759 typedef int ac__type_sizeof_;
25760int
25761main ()
25762{
25763static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
25764test_array [0] = 0
25765
25766 ;
25767 return 0;
25768}
25769_ACEOF
25770rm -f conftest.$ac_objext
25771if { (ac_try="$ac_compile"
25772case "(($ac_try" in
25773 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25774 *) ac_try_echo=$ac_try;;
25775esac
25776eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25777 (eval "$ac_compile") 2>conftest.er1
25778 ac_status=$?
25779 grep -v '^ *+' conftest.er1 >conftest.err
25780 rm -f conftest.er1
25781 cat conftest.err >&5
25782 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25783 (exit $ac_status); } && {
25784 test -z "$ac_c_werror_flag" ||
25785 test ! -s conftest.err
25786 } && test -s conftest.$ac_objext; then
25787 ac_lo=$ac_mid; break
25788else
25789 echo "$as_me: failed program was:" >&5
25790sed 's/^/| /' conftest.$ac_ext >&5
25791
25792 ac_hi=`expr '(' $ac_mid ')' - 1`
25793 if test $ac_mid -le $ac_hi; then
25794 ac_lo= ac_hi=
25795 break
25796 fi
25797 ac_mid=`expr 2 '*' $ac_mid`
25798fi
25799
25800rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25801 done
25802else
25803 echo "$as_me: failed program was:" >&5
25804sed 's/^/| /' conftest.$ac_ext >&5
25805
25806 ac_lo= ac_hi=
25807fi
25808
25809rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25810fi
25811
25812rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25813# Binary search between lo and hi bounds.
25814while test "x$ac_lo" != "x$ac_hi"; do
25815 ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
25816 cat >conftest.$ac_ext <<_ACEOF
25817/* confdefs.h. */
25818_ACEOF
25819cat confdefs.h >>conftest.$ac_ext
25820cat >>conftest.$ac_ext <<_ACEOF
25821/* end confdefs.h. */
25822$ac_includes_default
25823 typedef int ac__type_sizeof_;
25824int
25825main ()
25826{
25827static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
25828test_array [0] = 0
25829
25830 ;
25831 return 0;
25832}
25833_ACEOF
25834rm -f conftest.$ac_objext
25835if { (ac_try="$ac_compile"
25836case "(($ac_try" in
25837 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25838 *) ac_try_echo=$ac_try;;
25839esac
25840eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25841 (eval "$ac_compile") 2>conftest.er1
25842 ac_status=$?
25843 grep -v '^ *+' conftest.er1 >conftest.err
25844 rm -f conftest.er1
25845 cat conftest.err >&5
25846 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25847 (exit $ac_status); } && {
25848 test -z "$ac_c_werror_flag" ||
25849 test ! -s conftest.err
25850 } && test -s conftest.$ac_objext; then
25851 ac_hi=$ac_mid
25852else
25853 echo "$as_me: failed program was:" >&5
25854sed 's/^/| /' conftest.$ac_ext >&5
25855
25856 ac_lo=`expr '(' $ac_mid ')' + 1`
25857fi
25858
25859rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
25860done
25861case $ac_lo in
25862?*) ac_cv_sizeof_int=$ac_lo;;
25863'') if test "$ac_cv_type_int" = yes; then
25864 { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
25865See \`config.log' for more details." >&5
25866echo "$as_me: error: cannot compute sizeof (int)
25867See \`config.log' for more details." >&2;}
25868 { (exit 77); exit 77; }; }
25869 else
25870 ac_cv_sizeof_int=0
25871 fi ;;
25872esac
25873else 14062else
25874 cat >conftest.$ac_ext <<_ACEOF 14063 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
25875/* confdefs.h. */
25876_ACEOF
25877cat confdefs.h >>conftest.$ac_ext
25878cat >>conftest.$ac_ext <<_ACEOF
25879/* end confdefs.h. */
25880$ac_includes_default
25881 typedef int ac__type_sizeof_;
25882static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
25883static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
25884#include <stdio.h>
25885#include <stdlib.h>
25886int
25887main ()
25888{
25889 14064
25890 FILE *f = fopen ("conftest.val", "w");
25891 if (! f)
25892 return 1;
25893 if (((long int) (sizeof (ac__type_sizeof_))) < 0)
25894 {
25895 long int i = longval ();
25896 if (i != ((long int) (sizeof (ac__type_sizeof_))))
25897 return 1;
25898 fprintf (f, "%ld\n", i);
25899 }
25900 else
25901 {
25902 unsigned long int i = ulongval ();
25903 if (i != ((long int) (sizeof (ac__type_sizeof_))))
25904 return 1;
25905 fprintf (f, "%lu\n", i);
25906 }
25907 return ferror (f) || fclose (f) != 0;
25908
25909 ;
25910 return 0;
25911}
25912_ACEOF
25913rm -f conftest$ac_exeext
25914if { (ac_try="$ac_link"
25915case "(($ac_try" in
25916 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25917 *) ac_try_echo=$ac_try;;
25918esac
25919eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25920 (eval "$ac_link") 2>&5
25921 ac_status=$?
25922 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25923 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
25924 { (case "(($ac_try" in
25925 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25926 *) ac_try_echo=$ac_try;;
25927esac
25928eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25929 (eval "$ac_try") 2>&5
25930 ac_status=$?
25931 echo "$as_me:$LINENO: \$? = $ac_status" >&5
25932 (exit $ac_status); }; }; then
25933 ac_cv_sizeof_int=`cat conftest.val`
25934else 14065else
25935 echo "$as_me: program exited with status $ac_status" >&5 14066 if test "$ac_cv_type_int" = yes; then
25936echo "$as_me: failed program was:" >&5 14067 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
25937sed 's/^/| /' conftest.$ac_ext >&5 14068$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
25938 14069as_fn_error 77 "cannot compute sizeof (int)
25939( exit $ac_status ) 14070See \`config.log' for more details" "$LINENO" 5; }
25940if test "$ac_cv_type_int" = yes; then
25941 { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
25942See \`config.log' for more details." >&5
25943echo "$as_me: error: cannot compute sizeof (int)
25944See \`config.log' for more details." >&2;}
25945 { (exit 77); exit 77; }; }
25946 else 14071 else
25947 ac_cv_sizeof_int=0 14072 ac_cv_sizeof_int=0
25948 fi 14073 fi
25949fi 14074fi
25950rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 14075
25951fi
25952rm -f conftest.val
25953fi 14076fi
25954{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 14077{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
25955echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } 14078$as_echo "$ac_cv_sizeof_int" >&6; }
25956 14079
25957 14080
25958 14081
@@ -25961,403 +14084,31 @@ cat >>confdefs.h <<_ACEOF
25961_ACEOF 14084_ACEOF
25962 14085
25963 14086
25964{ echo "$as_me:$LINENO: checking for long int" >&5
25965echo $ECHO_N "checking for long int... $ECHO_C" >&6; }
25966if test "${ac_cv_type_long_int+set}" = set; then
25967 echo $ECHO_N "(cached) $ECHO_C" >&6
25968else
25969 cat >conftest.$ac_ext <<_ACEOF
25970/* confdefs.h. */
25971_ACEOF
25972cat confdefs.h >>conftest.$ac_ext
25973cat >>conftest.$ac_ext <<_ACEOF
25974/* end confdefs.h. */
25975$ac_includes_default
25976typedef long int ac__type_new_;
25977int
25978main ()
25979{
25980if ((ac__type_new_ *) 0)
25981 return 0;
25982if (sizeof (ac__type_new_))
25983 return 0;
25984 ;
25985 return 0;
25986}
25987_ACEOF
25988rm -f conftest.$ac_objext
25989if { (ac_try="$ac_compile"
25990case "(($ac_try" in
25991 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
25992 *) ac_try_echo=$ac_try;;
25993esac
25994eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
25995 (eval "$ac_compile") 2>conftest.er1
25996 ac_status=$?
25997 grep -v '^ *+' conftest.er1 >conftest.err
25998 rm -f conftest.er1
25999 cat conftest.err >&5
26000 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26001 (exit $ac_status); } && {
26002 test -z "$ac_c_werror_flag" ||
26003 test ! -s conftest.err
26004 } && test -s conftest.$ac_objext; then
26005 ac_cv_type_long_int=yes
26006else
26007 echo "$as_me: failed program was:" >&5
26008sed 's/^/| /' conftest.$ac_ext >&5
26009
26010 ac_cv_type_long_int=no
26011fi
26012
26013rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26014fi
26015{ echo "$as_me:$LINENO: result: $ac_cv_type_long_int" >&5
26016echo "${ECHO_T}$ac_cv_type_long_int" >&6; }
26017
26018# The cast to long int works around a bug in the HP C Compiler 14087# The cast to long int works around a bug in the HP C Compiler
26019# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects 14088# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
26020# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. 14089# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
26021# This bug is HP SR number 8606223364. 14090# This bug is HP SR number 8606223364.
26022{ echo "$as_me:$LINENO: checking size of long int" >&5 14091{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long int" >&5
26023echo $ECHO_N "checking size of long int... $ECHO_C" >&6; } 14092$as_echo_n "checking size of long int... " >&6; }
26024if test "${ac_cv_sizeof_long_int+set}" = set; then 14093if ${ac_cv_sizeof_long_int+:} false; then :
26025 echo $ECHO_N "(cached) $ECHO_C" >&6 14094 $as_echo_n "(cached) " >&6
26026else 14095else
26027 if test "$cross_compiling" = yes; then 14096 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long int))" "ac_cv_sizeof_long_int" "$ac_includes_default"; then :
26028 # Depending upon the size, compute the lo and hi bounds.
26029cat >conftest.$ac_ext <<_ACEOF
26030/* confdefs.h. */
26031_ACEOF
26032cat confdefs.h >>conftest.$ac_ext
26033cat >>conftest.$ac_ext <<_ACEOF
26034/* end confdefs.h. */
26035$ac_includes_default
26036 typedef long int ac__type_sizeof_;
26037int
26038main ()
26039{
26040static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
26041test_array [0] = 0
26042 14097
26043 ;
26044 return 0;
26045}
26046_ACEOF
26047rm -f conftest.$ac_objext
26048if { (ac_try="$ac_compile"
26049case "(($ac_try" in
26050 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26051 *) ac_try_echo=$ac_try;;
26052esac
26053eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26054 (eval "$ac_compile") 2>conftest.er1
26055 ac_status=$?
26056 grep -v '^ *+' conftest.er1 >conftest.err
26057 rm -f conftest.er1
26058 cat conftest.err >&5
26059 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26060 (exit $ac_status); } && {
26061 test -z "$ac_c_werror_flag" ||
26062 test ! -s conftest.err
26063 } && test -s conftest.$ac_objext; then
26064 ac_lo=0 ac_mid=0
26065 while :; do
26066 cat >conftest.$ac_ext <<_ACEOF
26067/* confdefs.h. */
26068_ACEOF
26069cat confdefs.h >>conftest.$ac_ext
26070cat >>conftest.$ac_ext <<_ACEOF
26071/* end confdefs.h. */
26072$ac_includes_default
26073 typedef long int ac__type_sizeof_;
26074int
26075main ()
26076{
26077static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
26078test_array [0] = 0
26079
26080 ;
26081 return 0;
26082}
26083_ACEOF
26084rm -f conftest.$ac_objext
26085if { (ac_try="$ac_compile"
26086case "(($ac_try" in
26087 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26088 *) ac_try_echo=$ac_try;;
26089esac
26090eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26091 (eval "$ac_compile") 2>conftest.er1
26092 ac_status=$?
26093 grep -v '^ *+' conftest.er1 >conftest.err
26094 rm -f conftest.er1
26095 cat conftest.err >&5
26096 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26097 (exit $ac_status); } && {
26098 test -z "$ac_c_werror_flag" ||
26099 test ! -s conftest.err
26100 } && test -s conftest.$ac_objext; then
26101 ac_hi=$ac_mid; break
26102else
26103 echo "$as_me: failed program was:" >&5
26104sed 's/^/| /' conftest.$ac_ext >&5
26105
26106 ac_lo=`expr $ac_mid + 1`
26107 if test $ac_lo -le $ac_mid; then
26108 ac_lo= ac_hi=
26109 break
26110 fi
26111 ac_mid=`expr 2 '*' $ac_mid + 1`
26112fi
26113
26114rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26115 done
26116else
26117 echo "$as_me: failed program was:" >&5
26118sed 's/^/| /' conftest.$ac_ext >&5
26119
26120 cat >conftest.$ac_ext <<_ACEOF
26121/* confdefs.h. */
26122_ACEOF
26123cat confdefs.h >>conftest.$ac_ext
26124cat >>conftest.$ac_ext <<_ACEOF
26125/* end confdefs.h. */
26126$ac_includes_default
26127 typedef long int ac__type_sizeof_;
26128int
26129main ()
26130{
26131static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
26132test_array [0] = 0
26133
26134 ;
26135 return 0;
26136}
26137_ACEOF
26138rm -f conftest.$ac_objext
26139if { (ac_try="$ac_compile"
26140case "(($ac_try" in
26141 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26142 *) ac_try_echo=$ac_try;;
26143esac
26144eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26145 (eval "$ac_compile") 2>conftest.er1
26146 ac_status=$?
26147 grep -v '^ *+' conftest.er1 >conftest.err
26148 rm -f conftest.er1
26149 cat conftest.err >&5
26150 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26151 (exit $ac_status); } && {
26152 test -z "$ac_c_werror_flag" ||
26153 test ! -s conftest.err
26154 } && test -s conftest.$ac_objext; then
26155 ac_hi=-1 ac_mid=-1
26156 while :; do
26157 cat >conftest.$ac_ext <<_ACEOF
26158/* confdefs.h. */
26159_ACEOF
26160cat confdefs.h >>conftest.$ac_ext
26161cat >>conftest.$ac_ext <<_ACEOF
26162/* end confdefs.h. */
26163$ac_includes_default
26164 typedef long int ac__type_sizeof_;
26165int
26166main ()
26167{
26168static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
26169test_array [0] = 0
26170
26171 ;
26172 return 0;
26173}
26174_ACEOF
26175rm -f conftest.$ac_objext
26176if { (ac_try="$ac_compile"
26177case "(($ac_try" in
26178 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26179 *) ac_try_echo=$ac_try;;
26180esac
26181eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26182 (eval "$ac_compile") 2>conftest.er1
26183 ac_status=$?
26184 grep -v '^ *+' conftest.er1 >conftest.err
26185 rm -f conftest.er1
26186 cat conftest.err >&5
26187 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26188 (exit $ac_status); } && {
26189 test -z "$ac_c_werror_flag" ||
26190 test ! -s conftest.err
26191 } && test -s conftest.$ac_objext; then
26192 ac_lo=$ac_mid; break
26193else
26194 echo "$as_me: failed program was:" >&5
26195sed 's/^/| /' conftest.$ac_ext >&5
26196
26197 ac_hi=`expr '(' $ac_mid ')' - 1`
26198 if test $ac_mid -le $ac_hi; then
26199 ac_lo= ac_hi=
26200 break
26201 fi
26202 ac_mid=`expr 2 '*' $ac_mid`
26203fi
26204
26205rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26206 done
26207else 14098else
26208 echo "$as_me: failed program was:" >&5 14099 if test "$ac_cv_type_long_int" = yes; then
26209sed 's/^/| /' conftest.$ac_ext >&5 14100 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
26210 14101$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
26211 ac_lo= ac_hi= 14102as_fn_error 77 "cannot compute sizeof (long int)
26212fi 14103See \`config.log' for more details" "$LINENO" 5; }
26213
26214rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26215fi
26216
26217rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26218# Binary search between lo and hi bounds.
26219while test "x$ac_lo" != "x$ac_hi"; do
26220 ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
26221 cat >conftest.$ac_ext <<_ACEOF
26222/* confdefs.h. */
26223_ACEOF
26224cat confdefs.h >>conftest.$ac_ext
26225cat >>conftest.$ac_ext <<_ACEOF
26226/* end confdefs.h. */
26227$ac_includes_default
26228 typedef long int ac__type_sizeof_;
26229int
26230main ()
26231{
26232static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
26233test_array [0] = 0
26234
26235 ;
26236 return 0;
26237}
26238_ACEOF
26239rm -f conftest.$ac_objext
26240if { (ac_try="$ac_compile"
26241case "(($ac_try" in
26242 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26243 *) ac_try_echo=$ac_try;;
26244esac
26245eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26246 (eval "$ac_compile") 2>conftest.er1
26247 ac_status=$?
26248 grep -v '^ *+' conftest.er1 >conftest.err
26249 rm -f conftest.er1
26250 cat conftest.err >&5
26251 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26252 (exit $ac_status); } && {
26253 test -z "$ac_c_werror_flag" ||
26254 test ! -s conftest.err
26255 } && test -s conftest.$ac_objext; then
26256 ac_hi=$ac_mid
26257else
26258 echo "$as_me: failed program was:" >&5
26259sed 's/^/| /' conftest.$ac_ext >&5
26260
26261 ac_lo=`expr '(' $ac_mid ')' + 1`
26262fi
26263
26264rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26265done
26266case $ac_lo in
26267?*) ac_cv_sizeof_long_int=$ac_lo;;
26268'') if test "$ac_cv_type_long_int" = yes; then
26269 { { echo "$as_me:$LINENO: error: cannot compute sizeof (long int)
26270See \`config.log' for more details." >&5
26271echo "$as_me: error: cannot compute sizeof (long int)
26272See \`config.log' for more details." >&2;}
26273 { (exit 77); exit 77; }; }
26274 else
26275 ac_cv_sizeof_long_int=0
26276 fi ;;
26277esac
26278else
26279 cat >conftest.$ac_ext <<_ACEOF
26280/* confdefs.h. */
26281_ACEOF
26282cat confdefs.h >>conftest.$ac_ext
26283cat >>conftest.$ac_ext <<_ACEOF
26284/* end confdefs.h. */
26285$ac_includes_default
26286 typedef long int ac__type_sizeof_;
26287static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
26288static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
26289#include <stdio.h>
26290#include <stdlib.h>
26291int
26292main ()
26293{
26294
26295 FILE *f = fopen ("conftest.val", "w");
26296 if (! f)
26297 return 1;
26298 if (((long int) (sizeof (ac__type_sizeof_))) < 0)
26299 {
26300 long int i = longval ();
26301 if (i != ((long int) (sizeof (ac__type_sizeof_))))
26302 return 1;
26303 fprintf (f, "%ld\n", i);
26304 }
26305 else
26306 {
26307 unsigned long int i = ulongval ();
26308 if (i != ((long int) (sizeof (ac__type_sizeof_))))
26309 return 1;
26310 fprintf (f, "%lu\n", i);
26311 }
26312 return ferror (f) || fclose (f) != 0;
26313
26314 ;
26315 return 0;
26316}
26317_ACEOF
26318rm -f conftest$ac_exeext
26319if { (ac_try="$ac_link"
26320case "(($ac_try" in
26321 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26322 *) ac_try_echo=$ac_try;;
26323esac
26324eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26325 (eval "$ac_link") 2>&5
26326 ac_status=$?
26327 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26328 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
26329 { (case "(($ac_try" in
26330 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26331 *) ac_try_echo=$ac_try;;
26332esac
26333eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26334 (eval "$ac_try") 2>&5
26335 ac_status=$?
26336 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26337 (exit $ac_status); }; }; then
26338 ac_cv_sizeof_long_int=`cat conftest.val`
26339else
26340 echo "$as_me: program exited with status $ac_status" >&5
26341echo "$as_me: failed program was:" >&5
26342sed 's/^/| /' conftest.$ac_ext >&5
26343
26344( exit $ac_status )
26345if test "$ac_cv_type_long_int" = yes; then
26346 { { echo "$as_me:$LINENO: error: cannot compute sizeof (long int)
26347See \`config.log' for more details." >&5
26348echo "$as_me: error: cannot compute sizeof (long int)
26349See \`config.log' for more details." >&2;}
26350 { (exit 77); exit 77; }; }
26351 else 14104 else
26352 ac_cv_sizeof_long_int=0 14105 ac_cv_sizeof_long_int=0
26353 fi 14106 fi
26354fi 14107fi
26355rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 14108
26356fi
26357rm -f conftest.val
26358fi 14109fi
26359{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_int" >&5 14110{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_int" >&5
26360echo "${ECHO_T}$ac_cv_sizeof_long_int" >&6; } 14111$as_echo "$ac_cv_sizeof_long_int" >&6; }
26361 14112
26362 14113
26363 14114
@@ -26366,403 +14117,31 @@ cat >>confdefs.h <<_ACEOF
26366_ACEOF 14117_ACEOF
26367 14118
26368 14119
26369{ echo "$as_me:$LINENO: checking for long long int" >&5
26370echo $ECHO_N "checking for long long int... $ECHO_C" >&6; }
26371if test "${ac_cv_type_long_long_int+set}" = set; then
26372 echo $ECHO_N "(cached) $ECHO_C" >&6
26373else
26374 cat >conftest.$ac_ext <<_ACEOF
26375/* confdefs.h. */
26376_ACEOF
26377cat confdefs.h >>conftest.$ac_ext
26378cat >>conftest.$ac_ext <<_ACEOF
26379/* end confdefs.h. */
26380$ac_includes_default
26381typedef long long int ac__type_new_;
26382int
26383main ()
26384{
26385if ((ac__type_new_ *) 0)
26386 return 0;
26387if (sizeof (ac__type_new_))
26388 return 0;
26389 ;
26390 return 0;
26391}
26392_ACEOF
26393rm -f conftest.$ac_objext
26394if { (ac_try="$ac_compile"
26395case "(($ac_try" in
26396 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26397 *) ac_try_echo=$ac_try;;
26398esac
26399eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26400 (eval "$ac_compile") 2>conftest.er1
26401 ac_status=$?
26402 grep -v '^ *+' conftest.er1 >conftest.err
26403 rm -f conftest.er1
26404 cat conftest.err >&5
26405 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26406 (exit $ac_status); } && {
26407 test -z "$ac_c_werror_flag" ||
26408 test ! -s conftest.err
26409 } && test -s conftest.$ac_objext; then
26410 ac_cv_type_long_long_int=yes
26411else
26412 echo "$as_me: failed program was:" >&5
26413sed 's/^/| /' conftest.$ac_ext >&5
26414
26415 ac_cv_type_long_long_int=no
26416fi
26417
26418rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26419fi
26420{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
26421echo "${ECHO_T}$ac_cv_type_long_long_int" >&6; }
26422
26423# The cast to long int works around a bug in the HP C Compiler 14120# The cast to long int works around a bug in the HP C Compiler
26424# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects 14121# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
26425# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. 14122# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
26426# This bug is HP SR number 8606223364. 14123# This bug is HP SR number 8606223364.
26427{ echo "$as_me:$LINENO: checking size of long long int" >&5 14124{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long int" >&5
26428echo $ECHO_N "checking size of long long int... $ECHO_C" >&6; } 14125$as_echo_n "checking size of long long int... " >&6; }
26429if test "${ac_cv_sizeof_long_long_int+set}" = set; then 14126if ${ac_cv_sizeof_long_long_int+:} false; then :
26430 echo $ECHO_N "(cached) $ECHO_C" >&6 14127 $as_echo_n "(cached) " >&6
26431else
26432 if test "$cross_compiling" = yes; then
26433 # Depending upon the size, compute the lo and hi bounds.
26434cat >conftest.$ac_ext <<_ACEOF
26435/* confdefs.h. */
26436_ACEOF
26437cat confdefs.h >>conftest.$ac_ext
26438cat >>conftest.$ac_ext <<_ACEOF
26439/* end confdefs.h. */
26440$ac_includes_default
26441 typedef long long int ac__type_sizeof_;
26442int
26443main ()
26444{
26445static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
26446test_array [0] = 0
26447
26448 ;
26449 return 0;
26450}
26451_ACEOF
26452rm -f conftest.$ac_objext
26453if { (ac_try="$ac_compile"
26454case "(($ac_try" in
26455 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26456 *) ac_try_echo=$ac_try;;
26457esac
26458eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26459 (eval "$ac_compile") 2>conftest.er1
26460 ac_status=$?
26461 grep -v '^ *+' conftest.er1 >conftest.err
26462 rm -f conftest.er1
26463 cat conftest.err >&5
26464 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26465 (exit $ac_status); } && {
26466 test -z "$ac_c_werror_flag" ||
26467 test ! -s conftest.err
26468 } && test -s conftest.$ac_objext; then
26469 ac_lo=0 ac_mid=0
26470 while :; do
26471 cat >conftest.$ac_ext <<_ACEOF
26472/* confdefs.h. */
26473_ACEOF
26474cat confdefs.h >>conftest.$ac_ext
26475cat >>conftest.$ac_ext <<_ACEOF
26476/* end confdefs.h. */
26477$ac_includes_default
26478 typedef long long int ac__type_sizeof_;
26479int
26480main ()
26481{
26482static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
26483test_array [0] = 0
26484
26485 ;
26486 return 0;
26487}
26488_ACEOF
26489rm -f conftest.$ac_objext
26490if { (ac_try="$ac_compile"
26491case "(($ac_try" in
26492 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26493 *) ac_try_echo=$ac_try;;
26494esac
26495eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26496 (eval "$ac_compile") 2>conftest.er1
26497 ac_status=$?
26498 grep -v '^ *+' conftest.er1 >conftest.err
26499 rm -f conftest.er1
26500 cat conftest.err >&5
26501 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26502 (exit $ac_status); } && {
26503 test -z "$ac_c_werror_flag" ||
26504 test ! -s conftest.err
26505 } && test -s conftest.$ac_objext; then
26506 ac_hi=$ac_mid; break
26507else 14128else
26508 echo "$as_me: failed program was:" >&5 14129 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long int))" "ac_cv_sizeof_long_long_int" "$ac_includes_default"; then :
26509sed 's/^/| /' conftest.$ac_ext >&5
26510 14130
26511 ac_lo=`expr $ac_mid + 1`
26512 if test $ac_lo -le $ac_mid; then
26513 ac_lo= ac_hi=
26514 break
26515 fi
26516 ac_mid=`expr 2 '*' $ac_mid + 1`
26517fi
26518
26519rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26520 done
26521else 14131else
26522 echo "$as_me: failed program was:" >&5 14132 if test "$ac_cv_type_long_long_int" = yes; then
26523sed 's/^/| /' conftest.$ac_ext >&5 14133 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
26524 14134$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
26525 cat >conftest.$ac_ext <<_ACEOF 14135as_fn_error 77 "cannot compute sizeof (long long int)
26526/* confdefs.h. */ 14136See \`config.log' for more details" "$LINENO" 5; }
26527_ACEOF
26528cat confdefs.h >>conftest.$ac_ext
26529cat >>conftest.$ac_ext <<_ACEOF
26530/* end confdefs.h. */
26531$ac_includes_default
26532 typedef long long int ac__type_sizeof_;
26533int
26534main ()
26535{
26536static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
26537test_array [0] = 0
26538
26539 ;
26540 return 0;
26541}
26542_ACEOF
26543rm -f conftest.$ac_objext
26544if { (ac_try="$ac_compile"
26545case "(($ac_try" in
26546 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26547 *) ac_try_echo=$ac_try;;
26548esac
26549eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26550 (eval "$ac_compile") 2>conftest.er1
26551 ac_status=$?
26552 grep -v '^ *+' conftest.er1 >conftest.err
26553 rm -f conftest.er1
26554 cat conftest.err >&5
26555 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26556 (exit $ac_status); } && {
26557 test -z "$ac_c_werror_flag" ||
26558 test ! -s conftest.err
26559 } && test -s conftest.$ac_objext; then
26560 ac_hi=-1 ac_mid=-1
26561 while :; do
26562 cat >conftest.$ac_ext <<_ACEOF
26563/* confdefs.h. */
26564_ACEOF
26565cat confdefs.h >>conftest.$ac_ext
26566cat >>conftest.$ac_ext <<_ACEOF
26567/* end confdefs.h. */
26568$ac_includes_default
26569 typedef long long int ac__type_sizeof_;
26570int
26571main ()
26572{
26573static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
26574test_array [0] = 0
26575
26576 ;
26577 return 0;
26578}
26579_ACEOF
26580rm -f conftest.$ac_objext
26581if { (ac_try="$ac_compile"
26582case "(($ac_try" in
26583 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26584 *) ac_try_echo=$ac_try;;
26585esac
26586eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26587 (eval "$ac_compile") 2>conftest.er1
26588 ac_status=$?
26589 grep -v '^ *+' conftest.er1 >conftest.err
26590 rm -f conftest.er1
26591 cat conftest.err >&5
26592 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26593 (exit $ac_status); } && {
26594 test -z "$ac_c_werror_flag" ||
26595 test ! -s conftest.err
26596 } && test -s conftest.$ac_objext; then
26597 ac_lo=$ac_mid; break
26598else
26599 echo "$as_me: failed program was:" >&5
26600sed 's/^/| /' conftest.$ac_ext >&5
26601
26602 ac_hi=`expr '(' $ac_mid ')' - 1`
26603 if test $ac_mid -le $ac_hi; then
26604 ac_lo= ac_hi=
26605 break
26606 fi
26607 ac_mid=`expr 2 '*' $ac_mid`
26608fi
26609
26610rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26611 done
26612else
26613 echo "$as_me: failed program was:" >&5
26614sed 's/^/| /' conftest.$ac_ext >&5
26615
26616 ac_lo= ac_hi=
26617fi
26618
26619rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26620fi
26621
26622rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26623# Binary search between lo and hi bounds.
26624while test "x$ac_lo" != "x$ac_hi"; do
26625 ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
26626 cat >conftest.$ac_ext <<_ACEOF
26627/* confdefs.h. */
26628_ACEOF
26629cat confdefs.h >>conftest.$ac_ext
26630cat >>conftest.$ac_ext <<_ACEOF
26631/* end confdefs.h. */
26632$ac_includes_default
26633 typedef long long int ac__type_sizeof_;
26634int
26635main ()
26636{
26637static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
26638test_array [0] = 0
26639
26640 ;
26641 return 0;
26642}
26643_ACEOF
26644rm -f conftest.$ac_objext
26645if { (ac_try="$ac_compile"
26646case "(($ac_try" in
26647 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26648 *) ac_try_echo=$ac_try;;
26649esac
26650eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26651 (eval "$ac_compile") 2>conftest.er1
26652 ac_status=$?
26653 grep -v '^ *+' conftest.er1 >conftest.err
26654 rm -f conftest.er1
26655 cat conftest.err >&5
26656 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26657 (exit $ac_status); } && {
26658 test -z "$ac_c_werror_flag" ||
26659 test ! -s conftest.err
26660 } && test -s conftest.$ac_objext; then
26661 ac_hi=$ac_mid
26662else
26663 echo "$as_me: failed program was:" >&5
26664sed 's/^/| /' conftest.$ac_ext >&5
26665
26666 ac_lo=`expr '(' $ac_mid ')' + 1`
26667fi
26668
26669rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26670done
26671case $ac_lo in
26672?*) ac_cv_sizeof_long_long_int=$ac_lo;;
26673'') if test "$ac_cv_type_long_long_int" = yes; then
26674 { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long int)
26675See \`config.log' for more details." >&5
26676echo "$as_me: error: cannot compute sizeof (long long int)
26677See \`config.log' for more details." >&2;}
26678 { (exit 77); exit 77; }; }
26679 else
26680 ac_cv_sizeof_long_long_int=0
26681 fi ;;
26682esac
26683else
26684 cat >conftest.$ac_ext <<_ACEOF
26685/* confdefs.h. */
26686_ACEOF
26687cat confdefs.h >>conftest.$ac_ext
26688cat >>conftest.$ac_ext <<_ACEOF
26689/* end confdefs.h. */
26690$ac_includes_default
26691 typedef long long int ac__type_sizeof_;
26692static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
26693static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
26694#include <stdio.h>
26695#include <stdlib.h>
26696int
26697main ()
26698{
26699
26700 FILE *f = fopen ("conftest.val", "w");
26701 if (! f)
26702 return 1;
26703 if (((long int) (sizeof (ac__type_sizeof_))) < 0)
26704 {
26705 long int i = longval ();
26706 if (i != ((long int) (sizeof (ac__type_sizeof_))))
26707 return 1;
26708 fprintf (f, "%ld\n", i);
26709 }
26710 else
26711 {
26712 unsigned long int i = ulongval ();
26713 if (i != ((long int) (sizeof (ac__type_sizeof_))))
26714 return 1;
26715 fprintf (f, "%lu\n", i);
26716 }
26717 return ferror (f) || fclose (f) != 0;
26718
26719 ;
26720 return 0;
26721}
26722_ACEOF
26723rm -f conftest$ac_exeext
26724if { (ac_try="$ac_link"
26725case "(($ac_try" in
26726 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26727 *) ac_try_echo=$ac_try;;
26728esac
26729eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26730 (eval "$ac_link") 2>&5
26731 ac_status=$?
26732 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26733 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
26734 { (case "(($ac_try" in
26735 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26736 *) ac_try_echo=$ac_try;;
26737esac
26738eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26739 (eval "$ac_try") 2>&5
26740 ac_status=$?
26741 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26742 (exit $ac_status); }; }; then
26743 ac_cv_sizeof_long_long_int=`cat conftest.val`
26744else
26745 echo "$as_me: program exited with status $ac_status" >&5
26746echo "$as_me: failed program was:" >&5
26747sed 's/^/| /' conftest.$ac_ext >&5
26748
26749( exit $ac_status )
26750if test "$ac_cv_type_long_long_int" = yes; then
26751 { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long int)
26752See \`config.log' for more details." >&5
26753echo "$as_me: error: cannot compute sizeof (long long int)
26754See \`config.log' for more details." >&2;}
26755 { (exit 77); exit 77; }; }
26756 else 14137 else
26757 ac_cv_sizeof_long_long_int=0 14138 ac_cv_sizeof_long_long_int=0
26758 fi 14139 fi
26759fi 14140fi
26760rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 14141
26761fi
26762rm -f conftest.val
26763fi 14142fi
26764{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long_int" >&5 14143{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long_int" >&5
26765echo "${ECHO_T}$ac_cv_sizeof_long_long_int" >&6; } 14144$as_echo "$ac_cv_sizeof_long_long_int" >&6; }
26766 14145
26767 14146
26768 14147
@@ -26779,20 +14158,16 @@ fi
26779 14158
26780# compute LLONG_MIN and LLONG_MAX if we don't know them. 14159# compute LLONG_MIN and LLONG_MAX if we don't know them.
26781if test -z "$have_llong_max"; then 14160if test -z "$have_llong_max"; then
26782 { echo "$as_me:$LINENO: checking for max value of long long" >&5 14161 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for max value of long long" >&5
26783echo $ECHO_N "checking for max value of long long... $ECHO_C" >&6; } 14162$as_echo_n "checking for max value of long long... " >&6; }
26784 if test "$cross_compiling" = yes; then 14163 if test "$cross_compiling" = yes; then :
26785 14164
26786 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking" >&5 14165 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
26787echo "$as_me: WARNING: cross compiling: not checking" >&2;} 14166$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
26788 14167
26789 14168
26790else 14169else
26791 cat >conftest.$ac_ext <<_ACEOF 14170 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
26792/* confdefs.h. */
26793_ACEOF
26794cat confdefs.h >>conftest.$ac_ext
26795cat >>conftest.$ac_ext <<_ACEOF
26796/* end confdefs.h. */ 14171/* end confdefs.h. */
26797 14172
26798#include <stdio.h> 14173#include <stdio.h>
@@ -26873,41 +14248,22 @@ main ()
26873 return 0; 14248 return 0;
26874} 14249}
26875_ACEOF 14250_ACEOF
26876rm -f conftest$ac_exeext 14251if ac_fn_c_try_run "$LINENO"; then :
26877if { (ac_try="$ac_link"
26878case "(($ac_try" in
26879 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26880 *) ac_try_echo=$ac_try;;
26881esac
26882eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26883 (eval "$ac_link") 2>&5
26884 ac_status=$?
26885 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26886 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
26887 { (case "(($ac_try" in
26888 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26889 *) ac_try_echo=$ac_try;;
26890esac
26891eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26892 (eval "$ac_try") 2>&5
26893 ac_status=$?
26894 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26895 (exit $ac_status); }; }; then
26896 14252
26897 llong_min=`$AWK '{print $1}' conftest.llminmax` 14253 llong_min=`$AWK '{print $1}' conftest.llminmax`
26898 llong_max=`$AWK '{print $2}' conftest.llminmax` 14254 llong_max=`$AWK '{print $2}' conftest.llminmax`
26899 14255
26900 { echo "$as_me:$LINENO: result: $llong_max" >&5 14256 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $llong_max" >&5
26901echo "${ECHO_T}$llong_max" >&6; } 14257$as_echo "$llong_max" >&6; }
26902 14258
26903cat >>confdefs.h <<_ACEOF 14259cat >>confdefs.h <<_ACEOF
26904#define LLONG_MAX ${llong_max}LL 14260#define LLONG_MAX ${llong_max}LL
26905_ACEOF 14261_ACEOF
26906 14262
26907 { echo "$as_me:$LINENO: checking for min value of long long" >&5 14263 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for min value of long long" >&5
26908echo $ECHO_N "checking for min value of long long... $ECHO_C" >&6; } 14264$as_echo_n "checking for min value of long long... " >&6; }
26909 { echo "$as_me:$LINENO: result: $llong_min" >&5 14265 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $llong_min" >&5
26910echo "${ECHO_T}$llong_min" >&6; } 14266$as_echo "$llong_min" >&6; }
26911 14267
26912cat >>confdefs.h <<_ACEOF 14268cat >>confdefs.h <<_ACEOF
26913#define LLONG_MIN ${llong_min}LL 14269#define LLONG_MIN ${llong_min}LL
@@ -26915,35 +14271,26 @@ _ACEOF
26915 14271
26916 14272
26917else 14273else
26918 echo "$as_me: program exited with status $ac_status" >&5
26919echo "$as_me: failed program was:" >&5
26920sed 's/^/| /' conftest.$ac_ext >&5
26921
26922( exit $ac_status )
26923 14274
26924 { echo "$as_me:$LINENO: result: not found" >&5 14275 { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
26925echo "${ECHO_T}not found" >&6; } 14276$as_echo "not found" >&6; }
26926 14277
26927fi 14278fi
26928rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 14279rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
14280 conftest.$ac_objext conftest.beam conftest.$ac_ext
26929fi 14281fi
26930 14282
26931
26932fi 14283fi
26933 14284
26934 14285
26935# More checks for data types 14286# More checks for data types
26936{ echo "$as_me:$LINENO: checking for u_int type" >&5 14287{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int type" >&5
26937echo $ECHO_N "checking for u_int type... $ECHO_C" >&6; } 14288$as_echo_n "checking for u_int type... " >&6; }
26938if test "${ac_cv_have_u_int+set}" = set; then 14289if ${ac_cv_have_u_int+:} false; then :
26939 echo $ECHO_N "(cached) $ECHO_C" >&6 14290 $as_echo_n "(cached) " >&6
26940else 14291else
26941 14292
26942 cat >conftest.$ac_ext <<_ACEOF 14293 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
26943/* confdefs.h. */
26944_ACEOF
26945cat confdefs.h >>conftest.$ac_ext
26946cat >>conftest.$ac_ext <<_ACEOF
26947/* end confdefs.h. */ 14294/* end confdefs.h. */
26948 #include <sys/types.h> 14295 #include <sys/types.h>
26949int 14296int
@@ -26954,57 +14301,31 @@ main ()
26954 return 0; 14301 return 0;
26955} 14302}
26956_ACEOF 14303_ACEOF
26957rm -f conftest.$ac_objext 14304if ac_fn_c_try_compile "$LINENO"; then :
26958if { (ac_try="$ac_compile"
26959case "(($ac_try" in
26960 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
26961 *) ac_try_echo=$ac_try;;
26962esac
26963eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
26964 (eval "$ac_compile") 2>conftest.er1
26965 ac_status=$?
26966 grep -v '^ *+' conftest.er1 >conftest.err
26967 rm -f conftest.er1
26968 cat conftest.err >&5
26969 echo "$as_me:$LINENO: \$? = $ac_status" >&5
26970 (exit $ac_status); } && {
26971 test -z "$ac_c_werror_flag" ||
26972 test ! -s conftest.err
26973 } && test -s conftest.$ac_objext; then
26974 ac_cv_have_u_int="yes" 14305 ac_cv_have_u_int="yes"
26975else 14306else
26976 echo "$as_me: failed program was:" >&5 14307 ac_cv_have_u_int="no"
26977sed 's/^/| /' conftest.$ac_ext >&5
26978
26979 ac_cv_have_u_int="no"
26980 14308
26981fi 14309fi
26982
26983rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14310rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
26984 14311
26985fi 14312fi
26986{ echo "$as_me:$LINENO: result: $ac_cv_have_u_int" >&5 14313{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int" >&5
26987echo "${ECHO_T}$ac_cv_have_u_int" >&6; } 14314$as_echo "$ac_cv_have_u_int" >&6; }
26988if test "x$ac_cv_have_u_int" = "xyes" ; then 14315if test "x$ac_cv_have_u_int" = "xyes" ; then
26989 14316
26990cat >>confdefs.h <<\_ACEOF 14317$as_echo "#define HAVE_U_INT 1" >>confdefs.h
26991#define HAVE_U_INT 1
26992_ACEOF
26993 14318
26994 have_u_int=1 14319 have_u_int=1
26995fi 14320fi
26996 14321
26997{ echo "$as_me:$LINENO: checking for intXX_t types" >&5 14322{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t types" >&5
26998echo $ECHO_N "checking for intXX_t types... $ECHO_C" >&6; } 14323$as_echo_n "checking for intXX_t types... " >&6; }
26999if test "${ac_cv_have_intxx_t+set}" = set; then 14324if ${ac_cv_have_intxx_t+:} false; then :
27000 echo $ECHO_N "(cached) $ECHO_C" >&6 14325 $as_echo_n "(cached) " >&6
27001else 14326else
27002 14327
27003 cat >conftest.$ac_ext <<_ACEOF 14328 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27004/* confdefs.h. */
27005_ACEOF
27006cat confdefs.h >>conftest.$ac_ext
27007cat >>conftest.$ac_ext <<_ACEOF
27008/* end confdefs.h. */ 14329/* end confdefs.h. */
27009 #include <sys/types.h> 14330 #include <sys/types.h>
27010int 14331int
@@ -27015,42 +14336,20 @@ main ()
27015 return 0; 14336 return 0;
27016} 14337}
27017_ACEOF 14338_ACEOF
27018rm -f conftest.$ac_objext 14339if ac_fn_c_try_compile "$LINENO"; then :
27019if { (ac_try="$ac_compile"
27020case "(($ac_try" in
27021 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27022 *) ac_try_echo=$ac_try;;
27023esac
27024eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27025 (eval "$ac_compile") 2>conftest.er1
27026 ac_status=$?
27027 grep -v '^ *+' conftest.er1 >conftest.err
27028 rm -f conftest.er1
27029 cat conftest.err >&5
27030 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27031 (exit $ac_status); } && {
27032 test -z "$ac_c_werror_flag" ||
27033 test ! -s conftest.err
27034 } && test -s conftest.$ac_objext; then
27035 ac_cv_have_intxx_t="yes" 14340 ac_cv_have_intxx_t="yes"
27036else 14341else
27037 echo "$as_me: failed program was:" >&5 14342 ac_cv_have_intxx_t="no"
27038sed 's/^/| /' conftest.$ac_ext >&5
27039
27040 ac_cv_have_intxx_t="no"
27041 14343
27042fi 14344fi
27043
27044rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14345rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27045 14346
27046fi 14347fi
27047{ echo "$as_me:$LINENO: result: $ac_cv_have_intxx_t" >&5 14348{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_intxx_t" >&5
27048echo "${ECHO_T}$ac_cv_have_intxx_t" >&6; } 14349$as_echo "$ac_cv_have_intxx_t" >&6; }
27049if test "x$ac_cv_have_intxx_t" = "xyes" ; then 14350if test "x$ac_cv_have_intxx_t" = "xyes" ; then
27050 14351
27051cat >>confdefs.h <<\_ACEOF 14352$as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
27052#define HAVE_INTXX_T 1
27053_ACEOF
27054 14353
27055 have_intxx_t=1 14354 have_intxx_t=1
27056fi 14355fi
@@ -27058,13 +14357,9 @@ fi
27058if (test -z "$have_intxx_t" && \ 14357if (test -z "$have_intxx_t" && \
27059 test "x$ac_cv_header_stdint_h" = "xyes") 14358 test "x$ac_cv_header_stdint_h" = "xyes")
27060then 14359then
27061 { echo "$as_me:$LINENO: checking for intXX_t types in stdint.h" >&5 14360 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t types in stdint.h" >&5
27062echo $ECHO_N "checking for intXX_t types in stdint.h... $ECHO_C" >&6; } 14361$as_echo_n "checking for intXX_t types in stdint.h... " >&6; }
27063 cat >conftest.$ac_ext <<_ACEOF 14362 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27064/* confdefs.h. */
27065_ACEOF
27066cat confdefs.h >>conftest.$ac_ext
27067cat >>conftest.$ac_ext <<_ACEOF
27068/* end confdefs.h. */ 14363/* end confdefs.h. */
27069 #include <stdint.h> 14364 #include <stdint.h>
27070int 14365int
@@ -27075,54 +14370,28 @@ main ()
27075 return 0; 14370 return 0;
27076} 14371}
27077_ACEOF 14372_ACEOF
27078rm -f conftest.$ac_objext 14373if ac_fn_c_try_compile "$LINENO"; then :
27079if { (ac_try="$ac_compile"
27080case "(($ac_try" in
27081 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27082 *) ac_try_echo=$ac_try;;
27083esac
27084eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27085 (eval "$ac_compile") 2>conftest.er1
27086 ac_status=$?
27087 grep -v '^ *+' conftest.er1 >conftest.err
27088 rm -f conftest.er1
27089 cat conftest.err >&5
27090 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27091 (exit $ac_status); } && {
27092 test -z "$ac_c_werror_flag" ||
27093 test ! -s conftest.err
27094 } && test -s conftest.$ac_objext; then
27095 14374
27096 cat >>confdefs.h <<\_ACEOF 14375 $as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
27097#define HAVE_INTXX_T 1
27098_ACEOF
27099 14376
27100 { echo "$as_me:$LINENO: result: yes" >&5 14377 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27101echo "${ECHO_T}yes" >&6; } 14378$as_echo "yes" >&6; }
27102 14379
27103else 14380else
27104 echo "$as_me: failed program was:" >&5 14381 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27105sed 's/^/| /' conftest.$ac_ext >&5 14382$as_echo "no" >&6; }
27106
27107 { echo "$as_me:$LINENO: result: no" >&5
27108echo "${ECHO_T}no" >&6; }
27109 14383
27110fi 14384fi
27111
27112rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14385rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27113fi 14386fi
27114 14387
27115{ echo "$as_me:$LINENO: checking for int64_t type" >&5 14388{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t type" >&5
27116echo $ECHO_N "checking for int64_t type... $ECHO_C" >&6; } 14389$as_echo_n "checking for int64_t type... " >&6; }
27117if test "${ac_cv_have_int64_t+set}" = set; then 14390if ${ac_cv_have_int64_t+:} false; then :
27118 echo $ECHO_N "(cached) $ECHO_C" >&6 14391 $as_echo_n "(cached) " >&6
27119else 14392else
27120 14393
27121 cat >conftest.$ac_ext <<_ACEOF 14394 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27122/* confdefs.h. */
27123_ACEOF
27124cat confdefs.h >>conftest.$ac_ext
27125cat >>conftest.$ac_ext <<_ACEOF
27126/* end confdefs.h. */ 14395/* end confdefs.h. */
27127 14396
27128#include <sys/types.h> 14397#include <sys/types.h>
@@ -27144,56 +14413,30 @@ int64_t a; a = 1;
27144 return 0; 14413 return 0;
27145} 14414}
27146_ACEOF 14415_ACEOF
27147rm -f conftest.$ac_objext 14416if ac_fn_c_try_compile "$LINENO"; then :
27148if { (ac_try="$ac_compile"
27149case "(($ac_try" in
27150 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27151 *) ac_try_echo=$ac_try;;
27152esac
27153eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27154 (eval "$ac_compile") 2>conftest.er1
27155 ac_status=$?
27156 grep -v '^ *+' conftest.er1 >conftest.err
27157 rm -f conftest.er1
27158 cat conftest.err >&5
27159 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27160 (exit $ac_status); } && {
27161 test -z "$ac_c_werror_flag" ||
27162 test ! -s conftest.err
27163 } && test -s conftest.$ac_objext; then
27164 ac_cv_have_int64_t="yes" 14417 ac_cv_have_int64_t="yes"
27165else 14418else
27166 echo "$as_me: failed program was:" >&5 14419 ac_cv_have_int64_t="no"
27167sed 's/^/| /' conftest.$ac_ext >&5
27168
27169 ac_cv_have_int64_t="no"
27170 14420
27171fi 14421fi
27172
27173rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14422rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27174 14423
27175fi 14424fi
27176{ echo "$as_me:$LINENO: result: $ac_cv_have_int64_t" >&5 14425{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_int64_t" >&5
27177echo "${ECHO_T}$ac_cv_have_int64_t" >&6; } 14426$as_echo "$ac_cv_have_int64_t" >&6; }
27178if test "x$ac_cv_have_int64_t" = "xyes" ; then 14427if test "x$ac_cv_have_int64_t" = "xyes" ; then
27179 14428
27180cat >>confdefs.h <<\_ACEOF 14429$as_echo "#define HAVE_INT64_T 1" >>confdefs.h
27181#define HAVE_INT64_T 1
27182_ACEOF
27183 14430
27184fi 14431fi
27185 14432
27186{ echo "$as_me:$LINENO: checking for u_intXX_t types" >&5 14433{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types" >&5
27187echo $ECHO_N "checking for u_intXX_t types... $ECHO_C" >&6; } 14434$as_echo_n "checking for u_intXX_t types... " >&6; }
27188if test "${ac_cv_have_u_intxx_t+set}" = set; then 14435if ${ac_cv_have_u_intxx_t+:} false; then :
27189 echo $ECHO_N "(cached) $ECHO_C" >&6 14436 $as_echo_n "(cached) " >&6
27190else 14437else
27191 14438
27192 cat >conftest.$ac_ext <<_ACEOF 14439 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27193/* confdefs.h. */
27194_ACEOF
27195cat confdefs.h >>conftest.$ac_ext
27196cat >>conftest.$ac_ext <<_ACEOF
27197/* end confdefs.h. */ 14440/* end confdefs.h. */
27198 #include <sys/types.h> 14441 #include <sys/types.h>
27199int 14442int
@@ -27204,54 +14447,28 @@ main ()
27204 return 0; 14447 return 0;
27205} 14448}
27206_ACEOF 14449_ACEOF
27207rm -f conftest.$ac_objext 14450if ac_fn_c_try_compile "$LINENO"; then :
27208if { (ac_try="$ac_compile"
27209case "(($ac_try" in
27210 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27211 *) ac_try_echo=$ac_try;;
27212esac
27213eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27214 (eval "$ac_compile") 2>conftest.er1
27215 ac_status=$?
27216 grep -v '^ *+' conftest.er1 >conftest.err
27217 rm -f conftest.er1
27218 cat conftest.err >&5
27219 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27220 (exit $ac_status); } && {
27221 test -z "$ac_c_werror_flag" ||
27222 test ! -s conftest.err
27223 } && test -s conftest.$ac_objext; then
27224 ac_cv_have_u_intxx_t="yes" 14451 ac_cv_have_u_intxx_t="yes"
27225else 14452else
27226 echo "$as_me: failed program was:" >&5 14453 ac_cv_have_u_intxx_t="no"
27227sed 's/^/| /' conftest.$ac_ext >&5
27228
27229 ac_cv_have_u_intxx_t="no"
27230 14454
27231fi 14455fi
27232
27233rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14456rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27234 14457
27235fi 14458fi
27236{ echo "$as_me:$LINENO: result: $ac_cv_have_u_intxx_t" >&5 14459{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_intxx_t" >&5
27237echo "${ECHO_T}$ac_cv_have_u_intxx_t" >&6; } 14460$as_echo "$ac_cv_have_u_intxx_t" >&6; }
27238if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then 14461if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
27239 14462
27240cat >>confdefs.h <<\_ACEOF 14463$as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
27241#define HAVE_U_INTXX_T 1
27242_ACEOF
27243 14464
27244 have_u_intxx_t=1 14465 have_u_intxx_t=1
27245fi 14466fi
27246 14467
27247if test -z "$have_u_intxx_t" ; then 14468if test -z "$have_u_intxx_t" ; then
27248 { echo "$as_me:$LINENO: checking for u_intXX_t types in sys/socket.h" >&5 14469 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types in sys/socket.h" >&5
27249echo $ECHO_N "checking for u_intXX_t types in sys/socket.h... $ECHO_C" >&6; } 14470$as_echo_n "checking for u_intXX_t types in sys/socket.h... " >&6; }
27250 cat >conftest.$ac_ext <<_ACEOF 14471 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27251/* confdefs.h. */
27252_ACEOF
27253cat confdefs.h >>conftest.$ac_ext
27254cat >>conftest.$ac_ext <<_ACEOF
27255/* end confdefs.h. */ 14472/* end confdefs.h. */
27256 #include <sys/socket.h> 14473 #include <sys/socket.h>
27257int 14474int
@@ -27262,54 +14479,28 @@ main ()
27262 return 0; 14479 return 0;
27263} 14480}
27264_ACEOF 14481_ACEOF
27265rm -f conftest.$ac_objext 14482if ac_fn_c_try_compile "$LINENO"; then :
27266if { (ac_try="$ac_compile"
27267case "(($ac_try" in
27268 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27269 *) ac_try_echo=$ac_try;;
27270esac
27271eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27272 (eval "$ac_compile") 2>conftest.er1
27273 ac_status=$?
27274 grep -v '^ *+' conftest.er1 >conftest.err
27275 rm -f conftest.er1
27276 cat conftest.err >&5
27277 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27278 (exit $ac_status); } && {
27279 test -z "$ac_c_werror_flag" ||
27280 test ! -s conftest.err
27281 } && test -s conftest.$ac_objext; then
27282 14483
27283 cat >>confdefs.h <<\_ACEOF 14484 $as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
27284#define HAVE_U_INTXX_T 1
27285_ACEOF
27286 14485
27287 { echo "$as_me:$LINENO: result: yes" >&5 14486 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27288echo "${ECHO_T}yes" >&6; } 14487$as_echo "yes" >&6; }
27289 14488
27290else 14489else
27291 echo "$as_me: failed program was:" >&5 14490 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27292sed 's/^/| /' conftest.$ac_ext >&5 14491$as_echo "no" >&6; }
27293
27294 { echo "$as_me:$LINENO: result: no" >&5
27295echo "${ECHO_T}no" >&6; }
27296 14492
27297fi 14493fi
27298
27299rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14494rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27300fi 14495fi
27301 14496
27302{ echo "$as_me:$LINENO: checking for u_int64_t types" >&5 14497{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int64_t types" >&5
27303echo $ECHO_N "checking for u_int64_t types... $ECHO_C" >&6; } 14498$as_echo_n "checking for u_int64_t types... " >&6; }
27304if test "${ac_cv_have_u_int64_t+set}" = set; then 14499if ${ac_cv_have_u_int64_t+:} false; then :
27305 echo $ECHO_N "(cached) $ECHO_C" >&6 14500 $as_echo_n "(cached) " >&6
27306else 14501else
27307 14502
27308 cat >conftest.$ac_ext <<_ACEOF 14503 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27309/* confdefs.h. */
27310_ACEOF
27311cat confdefs.h >>conftest.$ac_ext
27312cat >>conftest.$ac_ext <<_ACEOF
27313/* end confdefs.h. */ 14504/* end confdefs.h. */
27314 #include <sys/types.h> 14505 #include <sys/types.h>
27315int 14506int
@@ -27320,42 +14511,20 @@ main ()
27320 return 0; 14511 return 0;
27321} 14512}
27322_ACEOF 14513_ACEOF
27323rm -f conftest.$ac_objext 14514if ac_fn_c_try_compile "$LINENO"; then :
27324if { (ac_try="$ac_compile"
27325case "(($ac_try" in
27326 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27327 *) ac_try_echo=$ac_try;;
27328esac
27329eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27330 (eval "$ac_compile") 2>conftest.er1
27331 ac_status=$?
27332 grep -v '^ *+' conftest.er1 >conftest.err
27333 rm -f conftest.er1
27334 cat conftest.err >&5
27335 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27336 (exit $ac_status); } && {
27337 test -z "$ac_c_werror_flag" ||
27338 test ! -s conftest.err
27339 } && test -s conftest.$ac_objext; then
27340 ac_cv_have_u_int64_t="yes" 14515 ac_cv_have_u_int64_t="yes"
27341else 14516else
27342 echo "$as_me: failed program was:" >&5 14517 ac_cv_have_u_int64_t="no"
27343sed 's/^/| /' conftest.$ac_ext >&5
27344
27345 ac_cv_have_u_int64_t="no"
27346 14518
27347fi 14519fi
27348
27349rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14520rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27350 14521
27351fi 14522fi
27352{ echo "$as_me:$LINENO: result: $ac_cv_have_u_int64_t" >&5 14523{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int64_t" >&5
27353echo "${ECHO_T}$ac_cv_have_u_int64_t" >&6; } 14524$as_echo "$ac_cv_have_u_int64_t" >&6; }
27354if test "x$ac_cv_have_u_int64_t" = "xyes" ; then 14525if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
27355 14526
27356cat >>confdefs.h <<\_ACEOF 14527$as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
27357#define HAVE_U_INT64_T 1
27358_ACEOF
27359 14528
27360 have_u_int64_t=1 14529 have_u_int64_t=1
27361fi 14530fi
@@ -27363,13 +14532,9 @@ fi
27363if (test -z "$have_u_int64_t" && \ 14532if (test -z "$have_u_int64_t" && \
27364 test "x$ac_cv_header_sys_bitypes_h" = "xyes") 14533 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
27365then 14534then
27366 { echo "$as_me:$LINENO: checking for u_int64_t type in sys/bitypes.h" >&5 14535 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int64_t type in sys/bitypes.h" >&5
27367echo $ECHO_N "checking for u_int64_t type in sys/bitypes.h... $ECHO_C" >&6; } 14536$as_echo_n "checking for u_int64_t type in sys/bitypes.h... " >&6; }
27368 cat >conftest.$ac_ext <<_ACEOF 14537 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27369/* confdefs.h. */
27370_ACEOF
27371cat confdefs.h >>conftest.$ac_ext
27372cat >>conftest.$ac_ext <<_ACEOF
27373/* end confdefs.h. */ 14538/* end confdefs.h. */
27374 #include <sys/bitypes.h> 14539 #include <sys/bitypes.h>
27375int 14540int
@@ -27380,55 +14545,29 @@ main ()
27380 return 0; 14545 return 0;
27381} 14546}
27382_ACEOF 14547_ACEOF
27383rm -f conftest.$ac_objext 14548if ac_fn_c_try_compile "$LINENO"; then :
27384if { (ac_try="$ac_compile"
27385case "(($ac_try" in
27386 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27387 *) ac_try_echo=$ac_try;;
27388esac
27389eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27390 (eval "$ac_compile") 2>conftest.er1
27391 ac_status=$?
27392 grep -v '^ *+' conftest.er1 >conftest.err
27393 rm -f conftest.er1
27394 cat conftest.err >&5
27395 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27396 (exit $ac_status); } && {
27397 test -z "$ac_c_werror_flag" ||
27398 test ! -s conftest.err
27399 } && test -s conftest.$ac_objext; then
27400 14549
27401 cat >>confdefs.h <<\_ACEOF 14550 $as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
27402#define HAVE_U_INT64_T 1
27403_ACEOF
27404 14551
27405 { echo "$as_me:$LINENO: result: yes" >&5 14552 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27406echo "${ECHO_T}yes" >&6; } 14553$as_echo "yes" >&6; }
27407 14554
27408else 14555else
27409 echo "$as_me: failed program was:" >&5 14556 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27410sed 's/^/| /' conftest.$ac_ext >&5 14557$as_echo "no" >&6; }
27411
27412 { echo "$as_me:$LINENO: result: no" >&5
27413echo "${ECHO_T}no" >&6; }
27414 14558
27415fi 14559fi
27416
27417rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14560rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27418fi 14561fi
27419 14562
27420if test -z "$have_u_intxx_t" ; then 14563if test -z "$have_u_intxx_t" ; then
27421 { echo "$as_me:$LINENO: checking for uintXX_t types" >&5 14564 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types" >&5
27422echo $ECHO_N "checking for uintXX_t types... $ECHO_C" >&6; } 14565$as_echo_n "checking for uintXX_t types... " >&6; }
27423if test "${ac_cv_have_uintxx_t+set}" = set; then 14566if ${ac_cv_have_uintxx_t+:} false; then :
27424 echo $ECHO_N "(cached) $ECHO_C" >&6 14567 $as_echo_n "(cached) " >&6
27425else 14568else
27426 14569
27427 cat >conftest.$ac_ext <<_ACEOF 14570 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27428/* confdefs.h. */
27429_ACEOF
27430cat confdefs.h >>conftest.$ac_ext
27431cat >>conftest.$ac_ext <<_ACEOF
27432/* end confdefs.h. */ 14571/* end confdefs.h. */
27433 14572
27434#include <sys/types.h> 14573#include <sys/types.h>
@@ -27446,42 +14585,20 @@ main ()
27446 return 0; 14585 return 0;
27447} 14586}
27448_ACEOF 14587_ACEOF
27449rm -f conftest.$ac_objext 14588if ac_fn_c_try_compile "$LINENO"; then :
27450if { (ac_try="$ac_compile"
27451case "(($ac_try" in
27452 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27453 *) ac_try_echo=$ac_try;;
27454esac
27455eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27456 (eval "$ac_compile") 2>conftest.er1
27457 ac_status=$?
27458 grep -v '^ *+' conftest.er1 >conftest.err
27459 rm -f conftest.er1
27460 cat conftest.err >&5
27461 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27462 (exit $ac_status); } && {
27463 test -z "$ac_c_werror_flag" ||
27464 test ! -s conftest.err
27465 } && test -s conftest.$ac_objext; then
27466 ac_cv_have_uintxx_t="yes" 14589 ac_cv_have_uintxx_t="yes"
27467else 14590else
27468 echo "$as_me: failed program was:" >&5 14591 ac_cv_have_uintxx_t="no"
27469sed 's/^/| /' conftest.$ac_ext >&5
27470
27471 ac_cv_have_uintxx_t="no"
27472 14592
27473fi 14593fi
27474
27475rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14594rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27476 14595
27477fi 14596fi
27478{ echo "$as_me:$LINENO: result: $ac_cv_have_uintxx_t" >&5 14597{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_uintxx_t" >&5
27479echo "${ECHO_T}$ac_cv_have_uintxx_t" >&6; } 14598$as_echo "$ac_cv_have_uintxx_t" >&6; }
27480 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then 14599 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
27481 14600
27482cat >>confdefs.h <<\_ACEOF 14601$as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
27483#define HAVE_UINTXX_T 1
27484_ACEOF
27485 14602
27486 fi 14603 fi
27487fi 14604fi
@@ -27489,13 +14606,9 @@ fi
27489if (test -z "$have_uintxx_t" && \ 14606if (test -z "$have_uintxx_t" && \
27490 test "x$ac_cv_header_stdint_h" = "xyes") 14607 test "x$ac_cv_header_stdint_h" = "xyes")
27491then 14608then
27492 { echo "$as_me:$LINENO: checking for uintXX_t types in stdint.h" >&5 14609 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in stdint.h" >&5
27493echo $ECHO_N "checking for uintXX_t types in stdint.h... $ECHO_C" >&6; } 14610$as_echo_n "checking for uintXX_t types in stdint.h... " >&6; }
27494 cat >conftest.$ac_ext <<_ACEOF 14611 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27495/* confdefs.h. */
27496_ACEOF
27497cat confdefs.h >>conftest.$ac_ext
27498cat >>conftest.$ac_ext <<_ACEOF
27499/* end confdefs.h. */ 14612/* end confdefs.h. */
27500 #include <stdint.h> 14613 #include <stdint.h>
27501int 14614int
@@ -27506,53 +14619,27 @@ main ()
27506 return 0; 14619 return 0;
27507} 14620}
27508_ACEOF 14621_ACEOF
27509rm -f conftest.$ac_objext 14622if ac_fn_c_try_compile "$LINENO"; then :
27510if { (ac_try="$ac_compile"
27511case "(($ac_try" in
27512 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27513 *) ac_try_echo=$ac_try;;
27514esac
27515eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27516 (eval "$ac_compile") 2>conftest.er1
27517 ac_status=$?
27518 grep -v '^ *+' conftest.er1 >conftest.err
27519 rm -f conftest.er1
27520 cat conftest.err >&5
27521 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27522 (exit $ac_status); } && {
27523 test -z "$ac_c_werror_flag" ||
27524 test ! -s conftest.err
27525 } && test -s conftest.$ac_objext; then
27526 14623
27527 cat >>confdefs.h <<\_ACEOF 14624 $as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
27528#define HAVE_UINTXX_T 1
27529_ACEOF
27530 14625
27531 { echo "$as_me:$LINENO: result: yes" >&5 14626 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27532echo "${ECHO_T}yes" >&6; } 14627$as_echo "yes" >&6; }
27533 14628
27534else 14629else
27535 echo "$as_me: failed program was:" >&5 14630 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27536sed 's/^/| /' conftest.$ac_ext >&5 14631$as_echo "no" >&6; }
27537
27538 { echo "$as_me:$LINENO: result: no" >&5
27539echo "${ECHO_T}no" >&6; }
27540 14632
27541fi 14633fi
27542
27543rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14634rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27544fi 14635fi
27545 14636
27546if (test -z "$have_uintxx_t" && \ 14637if (test -z "$have_uintxx_t" && \
27547 test "x$ac_cv_header_inttypes_h" = "xyes") 14638 test "x$ac_cv_header_inttypes_h" = "xyes")
27548then 14639then
27549 { echo "$as_me:$LINENO: checking for uintXX_t types in inttypes.h" >&5 14640 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in inttypes.h" >&5
27550echo $ECHO_N "checking for uintXX_t types in inttypes.h... $ECHO_C" >&6; } 14641$as_echo_n "checking for uintXX_t types in inttypes.h... " >&6; }
27551 cat >conftest.$ac_ext <<_ACEOF 14642 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27552/* confdefs.h. */
27553_ACEOF
27554cat confdefs.h >>conftest.$ac_ext
27555cat >>conftest.$ac_ext <<_ACEOF
27556/* end confdefs.h. */ 14643/* end confdefs.h. */
27557 #include <inttypes.h> 14644 #include <inttypes.h>
27558int 14645int
@@ -27563,53 +14650,27 @@ main ()
27563 return 0; 14650 return 0;
27564} 14651}
27565_ACEOF 14652_ACEOF
27566rm -f conftest.$ac_objext 14653if ac_fn_c_try_compile "$LINENO"; then :
27567if { (ac_try="$ac_compile"
27568case "(($ac_try" in
27569 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27570 *) ac_try_echo=$ac_try;;
27571esac
27572eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27573 (eval "$ac_compile") 2>conftest.er1
27574 ac_status=$?
27575 grep -v '^ *+' conftest.er1 >conftest.err
27576 rm -f conftest.er1
27577 cat conftest.err >&5
27578 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27579 (exit $ac_status); } && {
27580 test -z "$ac_c_werror_flag" ||
27581 test ! -s conftest.err
27582 } && test -s conftest.$ac_objext; then
27583 14654
27584 cat >>confdefs.h <<\_ACEOF 14655 $as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
27585#define HAVE_UINTXX_T 1
27586_ACEOF
27587 14656
27588 { echo "$as_me:$LINENO: result: yes" >&5 14657 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27589echo "${ECHO_T}yes" >&6; } 14658$as_echo "yes" >&6; }
27590 14659
27591else 14660else
27592 echo "$as_me: failed program was:" >&5 14661 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27593sed 's/^/| /' conftest.$ac_ext >&5 14662$as_echo "no" >&6; }
27594
27595 { echo "$as_me:$LINENO: result: no" >&5
27596echo "${ECHO_T}no" >&6; }
27597 14663
27598fi 14664fi
27599
27600rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14665rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27601fi 14666fi
27602 14667
27603if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \ 14668if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
27604 test "x$ac_cv_header_sys_bitypes_h" = "xyes") 14669 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
27605then 14670then
27606 { echo "$as_me:$LINENO: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5 14671 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5
27607echo $ECHO_N "checking for intXX_t and u_intXX_t types in sys/bitypes.h... $ECHO_C" >&6; } 14672$as_echo_n "checking for intXX_t and u_intXX_t types in sys/bitypes.h... " >&6; }
27608 cat >conftest.$ac_ext <<_ACEOF 14673 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27609/* confdefs.h. */
27610_ACEOF
27611cat confdefs.h >>conftest.$ac_ext
27612cat >>conftest.$ac_ext <<_ACEOF
27613/* end confdefs.h. */ 14674/* end confdefs.h. */
27614 14675
27615#include <sys/bitypes.h> 14676#include <sys/bitypes.h>
@@ -27626,59 +14687,31 @@ main ()
27626 return 0; 14687 return 0;
27627} 14688}
27628_ACEOF 14689_ACEOF
27629rm -f conftest.$ac_objext 14690if ac_fn_c_try_compile "$LINENO"; then :
27630if { (ac_try="$ac_compile"
27631case "(($ac_try" in
27632 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27633 *) ac_try_echo=$ac_try;;
27634esac
27635eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27636 (eval "$ac_compile") 2>conftest.er1
27637 ac_status=$?
27638 grep -v '^ *+' conftest.er1 >conftest.err
27639 rm -f conftest.er1
27640 cat conftest.err >&5
27641 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27642 (exit $ac_status); } && {
27643 test -z "$ac_c_werror_flag" ||
27644 test ! -s conftest.err
27645 } && test -s conftest.$ac_objext; then
27646 14691
27647 cat >>confdefs.h <<\_ACEOF 14692 $as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
27648#define HAVE_U_INTXX_T 1
27649_ACEOF
27650 14693
27651 cat >>confdefs.h <<\_ACEOF 14694 $as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
27652#define HAVE_INTXX_T 1
27653_ACEOF
27654 14695
27655 { echo "$as_me:$LINENO: result: yes" >&5 14696 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
27656echo "${ECHO_T}yes" >&6; } 14697$as_echo "yes" >&6; }
27657 14698
27658else 14699else
27659 echo "$as_me: failed program was:" >&5 14700 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
27660sed 's/^/| /' conftest.$ac_ext >&5 14701$as_echo "no" >&6; }
27661
27662 { echo "$as_me:$LINENO: result: no" >&5
27663echo "${ECHO_T}no" >&6; }
27664 14702
27665fi 14703fi
27666
27667rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14704rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27668fi 14705fi
27669 14706
27670 14707
27671{ echo "$as_me:$LINENO: checking for u_char" >&5 14708{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_char" >&5
27672echo $ECHO_N "checking for u_char... $ECHO_C" >&6; } 14709$as_echo_n "checking for u_char... " >&6; }
27673if test "${ac_cv_have_u_char+set}" = set; then 14710if ${ac_cv_have_u_char+:} false; then :
27674 echo $ECHO_N "(cached) $ECHO_C" >&6 14711 $as_echo_n "(cached) " >&6
27675else 14712else
27676 14713
27677 cat >conftest.$ac_ext <<_ACEOF 14714 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27678/* confdefs.h. */
27679_ACEOF
27680cat confdefs.h >>conftest.$ac_ext
27681cat >>conftest.$ac_ext <<_ACEOF
27682/* end confdefs.h. */ 14715/* end confdefs.h. */
27683 #include <sys/types.h> 14716 #include <sys/types.h>
27684int 14717int
@@ -27689,103 +14722,29 @@ main ()
27689 return 0; 14722 return 0;
27690} 14723}
27691_ACEOF 14724_ACEOF
27692rm -f conftest.$ac_objext 14725if ac_fn_c_try_compile "$LINENO"; then :
27693if { (ac_try="$ac_compile"
27694case "(($ac_try" in
27695 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27696 *) ac_try_echo=$ac_try;;
27697esac
27698eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27699 (eval "$ac_compile") 2>conftest.er1
27700 ac_status=$?
27701 grep -v '^ *+' conftest.er1 >conftest.err
27702 rm -f conftest.er1
27703 cat conftest.err >&5
27704 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27705 (exit $ac_status); } && {
27706 test -z "$ac_c_werror_flag" ||
27707 test ! -s conftest.err
27708 } && test -s conftest.$ac_objext; then
27709 ac_cv_have_u_char="yes" 14726 ac_cv_have_u_char="yes"
27710else 14727else
27711 echo "$as_me: failed program was:" >&5 14728 ac_cv_have_u_char="no"
27712sed 's/^/| /' conftest.$ac_ext >&5
27713
27714 ac_cv_have_u_char="no"
27715 14729
27716fi 14730fi
27717
27718rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14731rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27719 14732
27720fi 14733fi
27721{ echo "$as_me:$LINENO: result: $ac_cv_have_u_char" >&5 14734{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_char" >&5
27722echo "${ECHO_T}$ac_cv_have_u_char" >&6; } 14735$as_echo "$ac_cv_have_u_char" >&6; }
27723if test "x$ac_cv_have_u_char" = "xyes" ; then 14736if test "x$ac_cv_have_u_char" = "xyes" ; then
27724 14737
27725cat >>confdefs.h <<\_ACEOF 14738$as_echo "#define HAVE_U_CHAR 1" >>confdefs.h
27726#define HAVE_U_CHAR 1
27727_ACEOF
27728 14739
27729fi 14740fi
27730 14741
27731{ echo "$as_me:$LINENO: checking for intmax_t" >&5 14742ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "
27732echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; }
27733if test "${ac_cv_type_intmax_t+set}" = set; then
27734 echo $ECHO_N "(cached) $ECHO_C" >&6
27735else
27736 cat >conftest.$ac_ext <<_ACEOF
27737/* confdefs.h. */
27738_ACEOF
27739cat confdefs.h >>conftest.$ac_ext
27740cat >>conftest.$ac_ext <<_ACEOF
27741/* end confdefs.h. */
27742
27743#include <sys/types.h> 14743#include <sys/types.h>
27744#include <stdint.h> 14744#include <stdint.h>
27745 14745
27746 14746"
27747typedef intmax_t ac__type_new_; 14747if test "x$ac_cv_type_intmax_t" = xyes; then :
27748int
27749main ()
27750{
27751if ((ac__type_new_ *) 0)
27752 return 0;
27753if (sizeof (ac__type_new_))
27754 return 0;
27755 ;
27756 return 0;
27757}
27758_ACEOF
27759rm -f conftest.$ac_objext
27760if { (ac_try="$ac_compile"
27761case "(($ac_try" in
27762 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27763 *) ac_try_echo=$ac_try;;
27764esac
27765eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27766 (eval "$ac_compile") 2>conftest.er1
27767 ac_status=$?
27768 grep -v '^ *+' conftest.er1 >conftest.err
27769 rm -f conftest.er1
27770 cat conftest.err >&5
27771 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27772 (exit $ac_status); } && {
27773 test -z "$ac_c_werror_flag" ||
27774 test ! -s conftest.err
27775 } && test -s conftest.$ac_objext; then
27776 ac_cv_type_intmax_t=yes
27777else
27778 echo "$as_me: failed program was:" >&5
27779sed 's/^/| /' conftest.$ac_ext >&5
27780
27781 ac_cv_type_intmax_t=no
27782fi
27783
27784rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27785fi
27786{ echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
27787echo "${ECHO_T}$ac_cv_type_intmax_t" >&6; }
27788if test $ac_cv_type_intmax_t = yes; then
27789 14748
27790cat >>confdefs.h <<_ACEOF 14749cat >>confdefs.h <<_ACEOF
27791#define HAVE_INTMAX_T 1 14750#define HAVE_INTMAX_T 1
@@ -27793,64 +14752,12 @@ _ACEOF
27793 14752
27794 14753
27795fi 14754fi
27796{ echo "$as_me:$LINENO: checking for uintmax_t" >&5 14755ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "
27797echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6; }
27798if test "${ac_cv_type_uintmax_t+set}" = set; then
27799 echo $ECHO_N "(cached) $ECHO_C" >&6
27800else
27801 cat >conftest.$ac_ext <<_ACEOF
27802/* confdefs.h. */
27803_ACEOF
27804cat confdefs.h >>conftest.$ac_ext
27805cat >>conftest.$ac_ext <<_ACEOF
27806/* end confdefs.h. */
27807
27808#include <sys/types.h> 14756#include <sys/types.h>
27809#include <stdint.h> 14757#include <stdint.h>
27810 14758
27811 14759"
27812typedef uintmax_t ac__type_new_; 14760if test "x$ac_cv_type_uintmax_t" = xyes; then :
27813int
27814main ()
27815{
27816if ((ac__type_new_ *) 0)
27817 return 0;
27818if (sizeof (ac__type_new_))
27819 return 0;
27820 ;
27821 return 0;
27822}
27823_ACEOF
27824rm -f conftest.$ac_objext
27825if { (ac_try="$ac_compile"
27826case "(($ac_try" in
27827 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27828 *) ac_try_echo=$ac_try;;
27829esac
27830eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27831 (eval "$ac_compile") 2>conftest.er1
27832 ac_status=$?
27833 grep -v '^ *+' conftest.er1 >conftest.err
27834 rm -f conftest.er1
27835 cat conftest.err >&5
27836 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27837 (exit $ac_status); } && {
27838 test -z "$ac_c_werror_flag" ||
27839 test ! -s conftest.err
27840 } && test -s conftest.$ac_objext; then
27841 ac_cv_type_uintmax_t=yes
27842else
27843 echo "$as_me: failed program was:" >&5
27844sed 's/^/| /' conftest.$ac_ext >&5
27845
27846 ac_cv_type_uintmax_t=no
27847fi
27848
27849rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27850fi
27851{ echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5
27852echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6; }
27853if test $ac_cv_type_uintmax_t = yes; then
27854 14761
27855cat >>confdefs.h <<_ACEOF 14762cat >>confdefs.h <<_ACEOF
27856#define HAVE_UINTMAX_T 1 14763#define HAVE_UINTMAX_T 1
@@ -27861,69 +14768,17 @@ fi
27861 14768
27862 14769
27863 14770
27864 { echo "$as_me:$LINENO: checking for socklen_t" >&5 14771 ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
27865echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; }
27866if test "${ac_cv_type_socklen_t+set}" = set; then
27867 echo $ECHO_N "(cached) $ECHO_C" >&6
27868else
27869 cat >conftest.$ac_ext <<_ACEOF
27870/* confdefs.h. */
27871_ACEOF
27872cat confdefs.h >>conftest.$ac_ext
27873cat >>conftest.$ac_ext <<_ACEOF
27874/* end confdefs.h. */
27875#include <sys/types.h>
27876#include <sys/socket.h> 14772#include <sys/socket.h>
14773"
14774if test "x$ac_cv_type_socklen_t" = xyes; then :
27877 14775
27878typedef socklen_t ac__type_new_;
27879int
27880main ()
27881{
27882if ((ac__type_new_ *) 0)
27883 return 0;
27884if (sizeof (ac__type_new_))
27885 return 0;
27886 ;
27887 return 0;
27888}
27889_ACEOF
27890rm -f conftest.$ac_objext
27891if { (ac_try="$ac_compile"
27892case "(($ac_try" in
27893 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27894 *) ac_try_echo=$ac_try;;
27895esac
27896eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27897 (eval "$ac_compile") 2>conftest.er1
27898 ac_status=$?
27899 grep -v '^ *+' conftest.er1 >conftest.err
27900 rm -f conftest.er1
27901 cat conftest.err >&5
27902 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27903 (exit $ac_status); } && {
27904 test -z "$ac_c_werror_flag" ||
27905 test ! -s conftest.err
27906 } && test -s conftest.$ac_objext; then
27907 ac_cv_type_socklen_t=yes
27908else
27909 echo "$as_me: failed program was:" >&5
27910sed 's/^/| /' conftest.$ac_ext >&5
27911
27912 ac_cv_type_socklen_t=no
27913fi
27914
27915rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27916fi
27917{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
27918echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
27919if test $ac_cv_type_socklen_t = yes; then
27920 :
27921else 14776else
27922 14777
27923 { echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5 14778 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t equivalent" >&5
27924echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6; } 14779$as_echo_n "checking for socklen_t equivalent... " >&6; }
27925 if test "${curl_cv_socklen_t_equiv+set}" = set; then 14780 if ${curl_cv_socklen_t_equiv+:} false; then :
27926 echo $ECHO_N "(cached) $ECHO_C" >&6 14781 $as_echo_n "(cached) " >&6
27927else 14782else
27928 14783
27929 # Systems have either "struct sockaddr *" or 14784 # Systems have either "struct sockaddr *" or
@@ -27931,11 +14786,7 @@ else
27931 curl_cv_socklen_t_equiv= 14786 curl_cv_socklen_t_equiv=
27932 for arg2 in "struct sockaddr" void; do 14787 for arg2 in "struct sockaddr" void; do
27933 for t in int size_t unsigned long "unsigned long"; do 14788 for t in int size_t unsigned long "unsigned long"; do
27934 cat >conftest.$ac_ext <<_ACEOF 14789 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
27935/* confdefs.h. */
27936_ACEOF
27937cat confdefs.h >>conftest.$ac_ext
27938cat >>conftest.$ac_ext <<_ACEOF
27939/* end confdefs.h. */ 14790/* end confdefs.h. */
27940 14791
27941 #include <sys/types.h> 14792 #include <sys/types.h>
@@ -27954,48 +14805,24 @@ main ()
27954 return 0; 14805 return 0;
27955} 14806}
27956_ACEOF 14807_ACEOF
27957rm -f conftest.$ac_objext 14808if ac_fn_c_try_compile "$LINENO"; then :
27958if { (ac_try="$ac_compile"
27959case "(($ac_try" in
27960 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
27961 *) ac_try_echo=$ac_try;;
27962esac
27963eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
27964 (eval "$ac_compile") 2>conftest.er1
27965 ac_status=$?
27966 grep -v '^ *+' conftest.er1 >conftest.err
27967 rm -f conftest.er1
27968 cat conftest.err >&5
27969 echo "$as_me:$LINENO: \$? = $ac_status" >&5
27970 (exit $ac_status); } && {
27971 test -z "$ac_c_werror_flag" ||
27972 test ! -s conftest.err
27973 } && test -s conftest.$ac_objext; then
27974 14809
27975 curl_cv_socklen_t_equiv="$t" 14810 curl_cv_socklen_t_equiv="$t"
27976 break 14811 break
27977 14812
27978else
27979 echo "$as_me: failed program was:" >&5
27980sed 's/^/| /' conftest.$ac_ext >&5
27981
27982
27983fi 14813fi
27984
27985rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14814rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
27986 done 14815 done
27987 done 14816 done
27988 14817
27989 if test "x$curl_cv_socklen_t_equiv" = x; then 14818 if test "x$curl_cv_socklen_t_equiv" = x; then
27990 { { echo "$as_me:$LINENO: error: Cannot find a type to use in place of socklen_t" >&5 14819 as_fn_error $? "Cannot find a type to use in place of socklen_t" "$LINENO" 5
27991echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;}
27992 { (exit 1); exit 1; }; }
27993 fi 14820 fi
27994 14821
27995fi 14822fi
27996 14823
27997 { echo "$as_me:$LINENO: result: $curl_cv_socklen_t_equiv" >&5 14824 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $curl_cv_socklen_t_equiv" >&5
27998echo "${ECHO_T}$curl_cv_socklen_t_equiv" >&6; } 14825$as_echo "$curl_cv_socklen_t_equiv" >&6; }
27999 14826
28000cat >>confdefs.h <<_ACEOF 14827cat >>confdefs.h <<_ACEOF
28001#define socklen_t $curl_cv_socklen_t_equiv 14828#define socklen_t $curl_cv_socklen_t_equiv
@@ -28005,61 +14832,9 @@ fi
28005 14832
28006 14833
28007 14834
28008{ echo "$as_me:$LINENO: checking for sig_atomic_t" >&5 14835ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <signal.h>
28009echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6; } 14836"
28010if test "${ac_cv_type_sig_atomic_t+set}" = set; then 14837if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
28011 echo $ECHO_N "(cached) $ECHO_C" >&6
28012else
28013 cat >conftest.$ac_ext <<_ACEOF
28014/* confdefs.h. */
28015_ACEOF
28016cat confdefs.h >>conftest.$ac_ext
28017cat >>conftest.$ac_ext <<_ACEOF
28018/* end confdefs.h. */
28019#include <signal.h>
28020
28021typedef sig_atomic_t ac__type_new_;
28022int
28023main ()
28024{
28025if ((ac__type_new_ *) 0)
28026 return 0;
28027if (sizeof (ac__type_new_))
28028 return 0;
28029 ;
28030 return 0;
28031}
28032_ACEOF
28033rm -f conftest.$ac_objext
28034if { (ac_try="$ac_compile"
28035case "(($ac_try" in
28036 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28037 *) ac_try_echo=$ac_try;;
28038esac
28039eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28040 (eval "$ac_compile") 2>conftest.er1
28041 ac_status=$?
28042 grep -v '^ *+' conftest.er1 >conftest.err
28043 rm -f conftest.er1
28044 cat conftest.err >&5
28045 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28046 (exit $ac_status); } && {
28047 test -z "$ac_c_werror_flag" ||
28048 test ! -s conftest.err
28049 } && test -s conftest.$ac_objext; then
28050 ac_cv_type_sig_atomic_t=yes
28051else
28052 echo "$as_me: failed program was:" >&5
28053sed 's/^/| /' conftest.$ac_ext >&5
28054
28055 ac_cv_type_sig_atomic_t=no
28056fi
28057
28058rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28059fi
28060{ echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5
28061echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6; }
28062if test $ac_cv_type_sig_atomic_t = yes; then
28063 14838
28064cat >>confdefs.h <<_ACEOF 14839cat >>confdefs.h <<_ACEOF
28065#define HAVE_SIG_ATOMIC_T 1 14840#define HAVE_SIG_ATOMIC_T 1
@@ -28068,18 +14843,7 @@ _ACEOF
28068 14843
28069fi 14844fi
28070 14845
28071{ echo "$as_me:$LINENO: checking for fsblkcnt_t" >&5 14846ac_fn_c_check_type "$LINENO" "fsblkcnt_t" "ac_cv_type_fsblkcnt_t" "
28072echo $ECHO_N "checking for fsblkcnt_t... $ECHO_C" >&6; }
28073if test "${ac_cv_type_fsblkcnt_t+set}" = set; then
28074 echo $ECHO_N "(cached) $ECHO_C" >&6
28075else
28076 cat >conftest.$ac_ext <<_ACEOF
28077/* confdefs.h. */
28078_ACEOF
28079cat confdefs.h >>conftest.$ac_ext
28080cat >>conftest.$ac_ext <<_ACEOF
28081/* end confdefs.h. */
28082
28083#include <sys/types.h> 14847#include <sys/types.h>
28084#ifdef HAVE_SYS_BITYPES_H 14848#ifdef HAVE_SYS_BITYPES_H
28085#include <sys/bitypes.h> 14849#include <sys/bitypes.h>
@@ -28091,49 +14855,8 @@ cat >>conftest.$ac_ext <<_ACEOF
28091#include <sys/statvfs.h> 14855#include <sys/statvfs.h>
28092#endif 14856#endif
28093 14857
28094 14858"
28095typedef fsblkcnt_t ac__type_new_; 14859if test "x$ac_cv_type_fsblkcnt_t" = xyes; then :
28096int
28097main ()
28098{
28099if ((ac__type_new_ *) 0)
28100 return 0;
28101if (sizeof (ac__type_new_))
28102 return 0;
28103 ;
28104 return 0;
28105}
28106_ACEOF
28107rm -f conftest.$ac_objext
28108if { (ac_try="$ac_compile"
28109case "(($ac_try" in
28110 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28111 *) ac_try_echo=$ac_try;;
28112esac
28113eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28114 (eval "$ac_compile") 2>conftest.er1
28115 ac_status=$?
28116 grep -v '^ *+' conftest.er1 >conftest.err
28117 rm -f conftest.er1
28118 cat conftest.err >&5
28119 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28120 (exit $ac_status); } && {
28121 test -z "$ac_c_werror_flag" ||
28122 test ! -s conftest.err
28123 } && test -s conftest.$ac_objext; then
28124 ac_cv_type_fsblkcnt_t=yes
28125else
28126 echo "$as_me: failed program was:" >&5
28127sed 's/^/| /' conftest.$ac_ext >&5
28128
28129 ac_cv_type_fsblkcnt_t=no
28130fi
28131
28132rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28133fi
28134{ echo "$as_me:$LINENO: result: $ac_cv_type_fsblkcnt_t" >&5
28135echo "${ECHO_T}$ac_cv_type_fsblkcnt_t" >&6; }
28136if test $ac_cv_type_fsblkcnt_t = yes; then
28137 14860
28138cat >>confdefs.h <<_ACEOF 14861cat >>confdefs.h <<_ACEOF
28139#define HAVE_FSBLKCNT_T 1 14862#define HAVE_FSBLKCNT_T 1
@@ -28141,18 +14864,7 @@ _ACEOF
28141 14864
28142 14865
28143fi 14866fi
28144{ echo "$as_me:$LINENO: checking for fsfilcnt_t" >&5 14867ac_fn_c_check_type "$LINENO" "fsfilcnt_t" "ac_cv_type_fsfilcnt_t" "
28145echo $ECHO_N "checking for fsfilcnt_t... $ECHO_C" >&6; }
28146if test "${ac_cv_type_fsfilcnt_t+set}" = set; then
28147 echo $ECHO_N "(cached) $ECHO_C" >&6
28148else
28149 cat >conftest.$ac_ext <<_ACEOF
28150/* confdefs.h. */
28151_ACEOF
28152cat confdefs.h >>conftest.$ac_ext
28153cat >>conftest.$ac_ext <<_ACEOF
28154/* end confdefs.h. */
28155
28156#include <sys/types.h> 14868#include <sys/types.h>
28157#ifdef HAVE_SYS_BITYPES_H 14869#ifdef HAVE_SYS_BITYPES_H
28158#include <sys/bitypes.h> 14870#include <sys/bitypes.h>
@@ -28164,49 +14876,8 @@ cat >>conftest.$ac_ext <<_ACEOF
28164#include <sys/statvfs.h> 14876#include <sys/statvfs.h>
28165#endif 14877#endif
28166 14878
28167 14879"
28168typedef fsfilcnt_t ac__type_new_; 14880if test "x$ac_cv_type_fsfilcnt_t" = xyes; then :
28169int
28170main ()
28171{
28172if ((ac__type_new_ *) 0)
28173 return 0;
28174if (sizeof (ac__type_new_))
28175 return 0;
28176 ;
28177 return 0;
28178}
28179_ACEOF
28180rm -f conftest.$ac_objext
28181if { (ac_try="$ac_compile"
28182case "(($ac_try" in
28183 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28184 *) ac_try_echo=$ac_try;;
28185esac
28186eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28187 (eval "$ac_compile") 2>conftest.er1
28188 ac_status=$?
28189 grep -v '^ *+' conftest.er1 >conftest.err
28190 rm -f conftest.er1
28191 cat conftest.err >&5
28192 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28193 (exit $ac_status); } && {
28194 test -z "$ac_c_werror_flag" ||
28195 test ! -s conftest.err
28196 } && test -s conftest.$ac_objext; then
28197 ac_cv_type_fsfilcnt_t=yes
28198else
28199 echo "$as_me: failed program was:" >&5
28200sed 's/^/| /' conftest.$ac_ext >&5
28201
28202 ac_cv_type_fsfilcnt_t=no
28203fi
28204
28205rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28206fi
28207{ echo "$as_me:$LINENO: result: $ac_cv_type_fsfilcnt_t" >&5
28208echo "${ECHO_T}$ac_cv_type_fsfilcnt_t" >&6; }
28209if test $ac_cv_type_fsfilcnt_t = yes; then
28210 14881
28211cat >>confdefs.h <<_ACEOF 14882cat >>confdefs.h <<_ACEOF
28212#define HAVE_FSFILCNT_T 1 14883#define HAVE_FSFILCNT_T 1
@@ -28216,62 +14887,10 @@ _ACEOF
28216fi 14887fi
28217 14888
28218 14889
28219{ echo "$as_me:$LINENO: checking for in_addr_t" >&5 14890ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" "#include <sys/types.h>
28220echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6; }
28221if test "${ac_cv_type_in_addr_t+set}" = set; then
28222 echo $ECHO_N "(cached) $ECHO_C" >&6
28223else
28224 cat >conftest.$ac_ext <<_ACEOF
28225/* confdefs.h. */
28226_ACEOF
28227cat confdefs.h >>conftest.$ac_ext
28228cat >>conftest.$ac_ext <<_ACEOF
28229/* end confdefs.h. */
28230#include <sys/types.h>
28231#include <netinet/in.h> 14891#include <netinet/in.h>
28232 14892"
28233typedef in_addr_t ac__type_new_; 14893if test "x$ac_cv_type_in_addr_t" = xyes; then :
28234int
28235main ()
28236{
28237if ((ac__type_new_ *) 0)
28238 return 0;
28239if (sizeof (ac__type_new_))
28240 return 0;
28241 ;
28242 return 0;
28243}
28244_ACEOF
28245rm -f conftest.$ac_objext
28246if { (ac_try="$ac_compile"
28247case "(($ac_try" in
28248 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28249 *) ac_try_echo=$ac_try;;
28250esac
28251eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28252 (eval "$ac_compile") 2>conftest.er1
28253 ac_status=$?
28254 grep -v '^ *+' conftest.er1 >conftest.err
28255 rm -f conftest.er1
28256 cat conftest.err >&5
28257 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28258 (exit $ac_status); } && {
28259 test -z "$ac_c_werror_flag" ||
28260 test ! -s conftest.err
28261 } && test -s conftest.$ac_objext; then
28262 ac_cv_type_in_addr_t=yes
28263else
28264 echo "$as_me: failed program was:" >&5
28265sed 's/^/| /' conftest.$ac_ext >&5
28266
28267 ac_cv_type_in_addr_t=no
28268fi
28269
28270rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28271fi
28272{ echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5
28273echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6; }
28274if test $ac_cv_type_in_addr_t = yes; then
28275 14894
28276cat >>confdefs.h <<_ACEOF 14895cat >>confdefs.h <<_ACEOF
28277#define HAVE_IN_ADDR_T 1 14896#define HAVE_IN_ADDR_T 1
@@ -28279,62 +14898,10 @@ _ACEOF
28279 14898
28280 14899
28281fi 14900fi
28282{ echo "$as_me:$LINENO: checking for in_port_t" >&5 14901ac_fn_c_check_type "$LINENO" "in_port_t" "ac_cv_type_in_port_t" "#include <sys/types.h>
28283echo $ECHO_N "checking for in_port_t... $ECHO_C" >&6; }
28284if test "${ac_cv_type_in_port_t+set}" = set; then
28285 echo $ECHO_N "(cached) $ECHO_C" >&6
28286else
28287 cat >conftest.$ac_ext <<_ACEOF
28288/* confdefs.h. */
28289_ACEOF
28290cat confdefs.h >>conftest.$ac_ext
28291cat >>conftest.$ac_ext <<_ACEOF
28292/* end confdefs.h. */
28293#include <sys/types.h>
28294#include <netinet/in.h> 14902#include <netinet/in.h>
28295 14903"
28296typedef in_port_t ac__type_new_; 14904if test "x$ac_cv_type_in_port_t" = xyes; then :
28297int
28298main ()
28299{
28300if ((ac__type_new_ *) 0)
28301 return 0;
28302if (sizeof (ac__type_new_))
28303 return 0;
28304 ;
28305 return 0;
28306}
28307_ACEOF
28308rm -f conftest.$ac_objext
28309if { (ac_try="$ac_compile"
28310case "(($ac_try" in
28311 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28312 *) ac_try_echo=$ac_try;;
28313esac
28314eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28315 (eval "$ac_compile") 2>conftest.er1
28316 ac_status=$?
28317 grep -v '^ *+' conftest.er1 >conftest.err
28318 rm -f conftest.er1
28319 cat conftest.err >&5
28320 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28321 (exit $ac_status); } && {
28322 test -z "$ac_c_werror_flag" ||
28323 test ! -s conftest.err
28324 } && test -s conftest.$ac_objext; then
28325 ac_cv_type_in_port_t=yes
28326else
28327 echo "$as_me: failed program was:" >&5
28328sed 's/^/| /' conftest.$ac_ext >&5
28329
28330 ac_cv_type_in_port_t=no
28331fi
28332
28333rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28334fi
28335{ echo "$as_me:$LINENO: result: $ac_cv_type_in_port_t" >&5
28336echo "${ECHO_T}$ac_cv_type_in_port_t" >&6; }
28337if test $ac_cv_type_in_port_t = yes; then
28338 14905
28339cat >>confdefs.h <<_ACEOF 14906cat >>confdefs.h <<_ACEOF
28340#define HAVE_IN_PORT_T 1 14907#define HAVE_IN_PORT_T 1
@@ -28344,17 +14911,13 @@ _ACEOF
28344fi 14911fi
28345 14912
28346 14913
28347{ echo "$as_me:$LINENO: checking for size_t" >&5 14914{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size_t" >&5
28348echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } 14915$as_echo_n "checking for size_t... " >&6; }
28349if test "${ac_cv_have_size_t+set}" = set; then 14916if ${ac_cv_have_size_t+:} false; then :
28350 echo $ECHO_N "(cached) $ECHO_C" >&6 14917 $as_echo_n "(cached) " >&6
28351else 14918else
28352 14919
28353 cat >conftest.$ac_ext <<_ACEOF 14920 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28354/* confdefs.h. */
28355_ACEOF
28356cat confdefs.h >>conftest.$ac_ext
28357cat >>conftest.$ac_ext <<_ACEOF
28358/* end confdefs.h. */ 14921/* end confdefs.h. */
28359 #include <sys/types.h> 14922 #include <sys/types.h>
28360int 14923int
@@ -28365,56 +14928,30 @@ main ()
28365 return 0; 14928 return 0;
28366} 14929}
28367_ACEOF 14930_ACEOF
28368rm -f conftest.$ac_objext 14931if ac_fn_c_try_compile "$LINENO"; then :
28369if { (ac_try="$ac_compile"
28370case "(($ac_try" in
28371 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28372 *) ac_try_echo=$ac_try;;
28373esac
28374eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28375 (eval "$ac_compile") 2>conftest.er1
28376 ac_status=$?
28377 grep -v '^ *+' conftest.er1 >conftest.err
28378 rm -f conftest.er1
28379 cat conftest.err >&5
28380 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28381 (exit $ac_status); } && {
28382 test -z "$ac_c_werror_flag" ||
28383 test ! -s conftest.err
28384 } && test -s conftest.$ac_objext; then
28385 ac_cv_have_size_t="yes" 14932 ac_cv_have_size_t="yes"
28386else 14933else
28387 echo "$as_me: failed program was:" >&5 14934 ac_cv_have_size_t="no"
28388sed 's/^/| /' conftest.$ac_ext >&5
28389
28390 ac_cv_have_size_t="no"
28391 14935
28392fi 14936fi
28393
28394rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14937rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28395 14938
28396fi 14939fi
28397{ echo "$as_me:$LINENO: result: $ac_cv_have_size_t" >&5 14940{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_size_t" >&5
28398echo "${ECHO_T}$ac_cv_have_size_t" >&6; } 14941$as_echo "$ac_cv_have_size_t" >&6; }
28399if test "x$ac_cv_have_size_t" = "xyes" ; then 14942if test "x$ac_cv_have_size_t" = "xyes" ; then
28400 14943
28401cat >>confdefs.h <<\_ACEOF 14944$as_echo "#define HAVE_SIZE_T 1" >>confdefs.h
28402#define HAVE_SIZE_T 1
28403_ACEOF
28404 14945
28405fi 14946fi
28406 14947
28407{ echo "$as_me:$LINENO: checking for ssize_t" >&5 14948{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
28408echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } 14949$as_echo_n "checking for ssize_t... " >&6; }
28409if test "${ac_cv_have_ssize_t+set}" = set; then 14950if ${ac_cv_have_ssize_t+:} false; then :
28410 echo $ECHO_N "(cached) $ECHO_C" >&6 14951 $as_echo_n "(cached) " >&6
28411else 14952else
28412 14953
28413 cat >conftest.$ac_ext <<_ACEOF 14954 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28414/* confdefs.h. */
28415_ACEOF
28416cat confdefs.h >>conftest.$ac_ext
28417cat >>conftest.$ac_ext <<_ACEOF
28418/* end confdefs.h. */ 14955/* end confdefs.h. */
28419 #include <sys/types.h> 14956 #include <sys/types.h>
28420int 14957int
@@ -28425,56 +14962,30 @@ main ()
28425 return 0; 14962 return 0;
28426} 14963}
28427_ACEOF 14964_ACEOF
28428rm -f conftest.$ac_objext 14965if ac_fn_c_try_compile "$LINENO"; then :
28429if { (ac_try="$ac_compile"
28430case "(($ac_try" in
28431 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28432 *) ac_try_echo=$ac_try;;
28433esac
28434eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28435 (eval "$ac_compile") 2>conftest.er1
28436 ac_status=$?
28437 grep -v '^ *+' conftest.er1 >conftest.err
28438 rm -f conftest.er1
28439 cat conftest.err >&5
28440 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28441 (exit $ac_status); } && {
28442 test -z "$ac_c_werror_flag" ||
28443 test ! -s conftest.err
28444 } && test -s conftest.$ac_objext; then
28445 ac_cv_have_ssize_t="yes" 14966 ac_cv_have_ssize_t="yes"
28446else 14967else
28447 echo "$as_me: failed program was:" >&5 14968 ac_cv_have_ssize_t="no"
28448sed 's/^/| /' conftest.$ac_ext >&5
28449
28450 ac_cv_have_ssize_t="no"
28451 14969
28452fi 14970fi
28453
28454rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 14971rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28455 14972
28456fi 14973fi
28457{ echo "$as_me:$LINENO: result: $ac_cv_have_ssize_t" >&5 14974{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ssize_t" >&5
28458echo "${ECHO_T}$ac_cv_have_ssize_t" >&6; } 14975$as_echo "$ac_cv_have_ssize_t" >&6; }
28459if test "x$ac_cv_have_ssize_t" = "xyes" ; then 14976if test "x$ac_cv_have_ssize_t" = "xyes" ; then
28460 14977
28461cat >>confdefs.h <<\_ACEOF 14978$as_echo "#define HAVE_SSIZE_T 1" >>confdefs.h
28462#define HAVE_SSIZE_T 1
28463_ACEOF
28464 14979
28465fi 14980fi
28466 14981
28467{ echo "$as_me:$LINENO: checking for clock_t" >&5 14982{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5
28468echo $ECHO_N "checking for clock_t... $ECHO_C" >&6; } 14983$as_echo_n "checking for clock_t... " >&6; }
28469if test "${ac_cv_have_clock_t+set}" = set; then 14984if ${ac_cv_have_clock_t+:} false; then :
28470 echo $ECHO_N "(cached) $ECHO_C" >&6 14985 $as_echo_n "(cached) " >&6
28471else 14986else
28472 14987
28473 cat >conftest.$ac_ext <<_ACEOF 14988 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28474/* confdefs.h. */
28475_ACEOF
28476cat confdefs.h >>conftest.$ac_ext
28477cat >>conftest.$ac_ext <<_ACEOF
28478/* end confdefs.h. */ 14989/* end confdefs.h. */
28479 #include <time.h> 14990 #include <time.h>
28480int 14991int
@@ -28485,56 +14996,30 @@ main ()
28485 return 0; 14996 return 0;
28486} 14997}
28487_ACEOF 14998_ACEOF
28488rm -f conftest.$ac_objext 14999if ac_fn_c_try_compile "$LINENO"; then :
28489if { (ac_try="$ac_compile"
28490case "(($ac_try" in
28491 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28492 *) ac_try_echo=$ac_try;;
28493esac
28494eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28495 (eval "$ac_compile") 2>conftest.er1
28496 ac_status=$?
28497 grep -v '^ *+' conftest.er1 >conftest.err
28498 rm -f conftest.er1
28499 cat conftest.err >&5
28500 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28501 (exit $ac_status); } && {
28502 test -z "$ac_c_werror_flag" ||
28503 test ! -s conftest.err
28504 } && test -s conftest.$ac_objext; then
28505 ac_cv_have_clock_t="yes" 15000 ac_cv_have_clock_t="yes"
28506else 15001else
28507 echo "$as_me: failed program was:" >&5 15002 ac_cv_have_clock_t="no"
28508sed 's/^/| /' conftest.$ac_ext >&5
28509
28510 ac_cv_have_clock_t="no"
28511 15003
28512fi 15004fi
28513
28514rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15005rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28515 15006
28516fi 15007fi
28517{ echo "$as_me:$LINENO: result: $ac_cv_have_clock_t" >&5 15008{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_clock_t" >&5
28518echo "${ECHO_T}$ac_cv_have_clock_t" >&6; } 15009$as_echo "$ac_cv_have_clock_t" >&6; }
28519if test "x$ac_cv_have_clock_t" = "xyes" ; then 15010if test "x$ac_cv_have_clock_t" = "xyes" ; then
28520 15011
28521cat >>confdefs.h <<\_ACEOF 15012$as_echo "#define HAVE_CLOCK_T 1" >>confdefs.h
28522#define HAVE_CLOCK_T 1
28523_ACEOF
28524 15013
28525fi 15014fi
28526 15015
28527{ echo "$as_me:$LINENO: checking for sa_family_t" >&5 15016{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5
28528echo $ECHO_N "checking for sa_family_t... $ECHO_C" >&6; } 15017$as_echo_n "checking for sa_family_t... " >&6; }
28529if test "${ac_cv_have_sa_family_t+set}" = set; then 15018if ${ac_cv_have_sa_family_t+:} false; then :
28530 echo $ECHO_N "(cached) $ECHO_C" >&6 15019 $as_echo_n "(cached) " >&6
28531else 15020else
28532 15021
28533 cat >conftest.$ac_ext <<_ACEOF 15022 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28534/* confdefs.h. */
28535_ACEOF
28536cat confdefs.h >>conftest.$ac_ext
28537cat >>conftest.$ac_ext <<_ACEOF
28538/* end confdefs.h. */ 15023/* end confdefs.h. */
28539 15024
28540#include <sys/types.h> 15025#include <sys/types.h>
@@ -28548,33 +15033,10 @@ main ()
28548 return 0; 15033 return 0;
28549} 15034}
28550_ACEOF 15035_ACEOF
28551rm -f conftest.$ac_objext 15036if ac_fn_c_try_compile "$LINENO"; then :
28552if { (ac_try="$ac_compile"
28553case "(($ac_try" in
28554 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28555 *) ac_try_echo=$ac_try;;
28556esac
28557eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28558 (eval "$ac_compile") 2>conftest.er1
28559 ac_status=$?
28560 grep -v '^ *+' conftest.er1 >conftest.err
28561 rm -f conftest.er1
28562 cat conftest.err >&5
28563 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28564 (exit $ac_status); } && {
28565 test -z "$ac_c_werror_flag" ||
28566 test ! -s conftest.err
28567 } && test -s conftest.$ac_objext; then
28568 ac_cv_have_sa_family_t="yes" 15037 ac_cv_have_sa_family_t="yes"
28569else 15038else
28570 echo "$as_me: failed program was:" >&5 15039 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28571sed 's/^/| /' conftest.$ac_ext >&5
28572
28573 cat >conftest.$ac_ext <<_ACEOF
28574/* confdefs.h. */
28575_ACEOF
28576cat confdefs.h >>conftest.$ac_ext
28577cat >>conftest.$ac_ext <<_ACEOF
28578/* end confdefs.h. */ 15040/* end confdefs.h. */
28579 15041
28580#include <sys/types.h> 15042#include <sys/types.h>
@@ -28589,60 +15051,33 @@ main ()
28589 return 0; 15051 return 0;
28590} 15052}
28591_ACEOF 15053_ACEOF
28592rm -f conftest.$ac_objext 15054if ac_fn_c_try_compile "$LINENO"; then :
28593if { (ac_try="$ac_compile"
28594case "(($ac_try" in
28595 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28596 *) ac_try_echo=$ac_try;;
28597esac
28598eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28599 (eval "$ac_compile") 2>conftest.er1
28600 ac_status=$?
28601 grep -v '^ *+' conftest.er1 >conftest.err
28602 rm -f conftest.er1
28603 cat conftest.err >&5
28604 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28605 (exit $ac_status); } && {
28606 test -z "$ac_c_werror_flag" ||
28607 test ! -s conftest.err
28608 } && test -s conftest.$ac_objext; then
28609 ac_cv_have_sa_family_t="yes" 15055 ac_cv_have_sa_family_t="yes"
28610else 15056else
28611 echo "$as_me: failed program was:" >&5 15057 ac_cv_have_sa_family_t="no"
28612sed 's/^/| /' conftest.$ac_ext >&5
28613
28614 ac_cv_have_sa_family_t="no"
28615 15058
28616fi 15059fi
28617
28618rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15060rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28619 15061
28620fi 15062fi
28621
28622rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15063rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28623 15064
28624fi 15065fi
28625{ echo "$as_me:$LINENO: result: $ac_cv_have_sa_family_t" >&5 15066{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sa_family_t" >&5
28626echo "${ECHO_T}$ac_cv_have_sa_family_t" >&6; } 15067$as_echo "$ac_cv_have_sa_family_t" >&6; }
28627if test "x$ac_cv_have_sa_family_t" = "xyes" ; then 15068if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
28628 15069
28629cat >>confdefs.h <<\_ACEOF 15070$as_echo "#define HAVE_SA_FAMILY_T 1" >>confdefs.h
28630#define HAVE_SA_FAMILY_T 1
28631_ACEOF
28632 15071
28633fi 15072fi
28634 15073
28635{ echo "$as_me:$LINENO: checking for pid_t" >&5 15074{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pid_t" >&5
28636echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } 15075$as_echo_n "checking for pid_t... " >&6; }
28637if test "${ac_cv_have_pid_t+set}" = set; then 15076if ${ac_cv_have_pid_t+:} false; then :
28638 echo $ECHO_N "(cached) $ECHO_C" >&6 15077 $as_echo_n "(cached) " >&6
28639else 15078else
28640 15079
28641 cat >conftest.$ac_ext <<_ACEOF 15080 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28642/* confdefs.h. */
28643_ACEOF
28644cat confdefs.h >>conftest.$ac_ext
28645cat >>conftest.$ac_ext <<_ACEOF
28646/* end confdefs.h. */ 15081/* end confdefs.h. */
28647 #include <sys/types.h> 15082 #include <sys/types.h>
28648int 15083int
@@ -28653,56 +15088,30 @@ main ()
28653 return 0; 15088 return 0;
28654} 15089}
28655_ACEOF 15090_ACEOF
28656rm -f conftest.$ac_objext 15091if ac_fn_c_try_compile "$LINENO"; then :
28657if { (ac_try="$ac_compile"
28658case "(($ac_try" in
28659 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28660 *) ac_try_echo=$ac_try;;
28661esac
28662eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28663 (eval "$ac_compile") 2>conftest.er1
28664 ac_status=$?
28665 grep -v '^ *+' conftest.er1 >conftest.err
28666 rm -f conftest.er1
28667 cat conftest.err >&5
28668 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28669 (exit $ac_status); } && {
28670 test -z "$ac_c_werror_flag" ||
28671 test ! -s conftest.err
28672 } && test -s conftest.$ac_objext; then
28673 ac_cv_have_pid_t="yes" 15092 ac_cv_have_pid_t="yes"
28674else 15093else
28675 echo "$as_me: failed program was:" >&5 15094 ac_cv_have_pid_t="no"
28676sed 's/^/| /' conftest.$ac_ext >&5
28677
28678 ac_cv_have_pid_t="no"
28679 15095
28680fi 15096fi
28681
28682rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15097rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28683 15098
28684fi 15099fi
28685{ echo "$as_me:$LINENO: result: $ac_cv_have_pid_t" >&5 15100{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pid_t" >&5
28686echo "${ECHO_T}$ac_cv_have_pid_t" >&6; } 15101$as_echo "$ac_cv_have_pid_t" >&6; }
28687if test "x$ac_cv_have_pid_t" = "xyes" ; then 15102if test "x$ac_cv_have_pid_t" = "xyes" ; then
28688 15103
28689cat >>confdefs.h <<\_ACEOF 15104$as_echo "#define HAVE_PID_T 1" >>confdefs.h
28690#define HAVE_PID_T 1
28691_ACEOF
28692 15105
28693fi 15106fi
28694 15107
28695{ echo "$as_me:$LINENO: checking for mode_t" >&5 15108{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mode_t" >&5
28696echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; } 15109$as_echo_n "checking for mode_t... " >&6; }
28697if test "${ac_cv_have_mode_t+set}" = set; then 15110if ${ac_cv_have_mode_t+:} false; then :
28698 echo $ECHO_N "(cached) $ECHO_C" >&6 15111 $as_echo_n "(cached) " >&6
28699else 15112else
28700 15113
28701 cat >conftest.$ac_ext <<_ACEOF 15114 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28702/* confdefs.h. */
28703_ACEOF
28704cat confdefs.h >>conftest.$ac_ext
28705cat >>conftest.$ac_ext <<_ACEOF
28706/* end confdefs.h. */ 15115/* end confdefs.h. */
28707 #include <sys/types.h> 15116 #include <sys/types.h>
28708int 15117int
@@ -28713,57 +15122,31 @@ main ()
28713 return 0; 15122 return 0;
28714} 15123}
28715_ACEOF 15124_ACEOF
28716rm -f conftest.$ac_objext 15125if ac_fn_c_try_compile "$LINENO"; then :
28717if { (ac_try="$ac_compile"
28718case "(($ac_try" in
28719 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28720 *) ac_try_echo=$ac_try;;
28721esac
28722eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28723 (eval "$ac_compile") 2>conftest.er1
28724 ac_status=$?
28725 grep -v '^ *+' conftest.er1 >conftest.err
28726 rm -f conftest.er1
28727 cat conftest.err >&5
28728 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28729 (exit $ac_status); } && {
28730 test -z "$ac_c_werror_flag" ||
28731 test ! -s conftest.err
28732 } && test -s conftest.$ac_objext; then
28733 ac_cv_have_mode_t="yes" 15126 ac_cv_have_mode_t="yes"
28734else 15127else
28735 echo "$as_me: failed program was:" >&5 15128 ac_cv_have_mode_t="no"
28736sed 's/^/| /' conftest.$ac_ext >&5
28737
28738 ac_cv_have_mode_t="no"
28739 15129
28740fi 15130fi
28741
28742rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15131rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28743 15132
28744fi 15133fi
28745{ echo "$as_me:$LINENO: result: $ac_cv_have_mode_t" >&5 15134{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_mode_t" >&5
28746echo "${ECHO_T}$ac_cv_have_mode_t" >&6; } 15135$as_echo "$ac_cv_have_mode_t" >&6; }
28747if test "x$ac_cv_have_mode_t" = "xyes" ; then 15136if test "x$ac_cv_have_mode_t" = "xyes" ; then
28748 15137
28749cat >>confdefs.h <<\_ACEOF 15138$as_echo "#define HAVE_MODE_T 1" >>confdefs.h
28750#define HAVE_MODE_T 1
28751_ACEOF
28752 15139
28753fi 15140fi
28754 15141
28755 15142
28756{ echo "$as_me:$LINENO: checking for struct sockaddr_storage" >&5 15143{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5
28757echo $ECHO_N "checking for struct sockaddr_storage... $ECHO_C" >&6; } 15144$as_echo_n "checking for struct sockaddr_storage... " >&6; }
28758if test "${ac_cv_have_struct_sockaddr_storage+set}" = set; then 15145if ${ac_cv_have_struct_sockaddr_storage+:} false; then :
28759 echo $ECHO_N "(cached) $ECHO_C" >&6 15146 $as_echo_n "(cached) " >&6
28760else 15147else
28761 15148
28762 cat >conftest.$ac_ext <<_ACEOF 15149 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28763/* confdefs.h. */
28764_ACEOF
28765cat confdefs.h >>conftest.$ac_ext
28766cat >>conftest.$ac_ext <<_ACEOF
28767/* end confdefs.h. */ 15150/* end confdefs.h. */
28768 15151
28769#include <sys/types.h> 15152#include <sys/types.h>
@@ -28777,56 +15160,30 @@ main ()
28777 return 0; 15160 return 0;
28778} 15161}
28779_ACEOF 15162_ACEOF
28780rm -f conftest.$ac_objext 15163if ac_fn_c_try_compile "$LINENO"; then :
28781if { (ac_try="$ac_compile"
28782case "(($ac_try" in
28783 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28784 *) ac_try_echo=$ac_try;;
28785esac
28786eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28787 (eval "$ac_compile") 2>conftest.er1
28788 ac_status=$?
28789 grep -v '^ *+' conftest.er1 >conftest.err
28790 rm -f conftest.er1
28791 cat conftest.err >&5
28792 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28793 (exit $ac_status); } && {
28794 test -z "$ac_c_werror_flag" ||
28795 test ! -s conftest.err
28796 } && test -s conftest.$ac_objext; then
28797 ac_cv_have_struct_sockaddr_storage="yes" 15164 ac_cv_have_struct_sockaddr_storage="yes"
28798else 15165else
28799 echo "$as_me: failed program was:" >&5 15166 ac_cv_have_struct_sockaddr_storage="no"
28800sed 's/^/| /' conftest.$ac_ext >&5
28801
28802 ac_cv_have_struct_sockaddr_storage="no"
28803 15167
28804fi 15168fi
28805
28806rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15169rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28807 15170
28808fi 15171fi
28809{ echo "$as_me:$LINENO: result: $ac_cv_have_struct_sockaddr_storage" >&5 15172{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_storage" >&5
28810echo "${ECHO_T}$ac_cv_have_struct_sockaddr_storage" >&6; } 15173$as_echo "$ac_cv_have_struct_sockaddr_storage" >&6; }
28811if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then 15174if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
28812 15175
28813cat >>confdefs.h <<\_ACEOF 15176$as_echo "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h
28814#define HAVE_STRUCT_SOCKADDR_STORAGE 1
28815_ACEOF
28816 15177
28817fi 15178fi
28818 15179
28819{ echo "$as_me:$LINENO: checking for struct sockaddr_in6" >&5 15180{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5
28820echo $ECHO_N "checking for struct sockaddr_in6... $ECHO_C" >&6; } 15181$as_echo_n "checking for struct sockaddr_in6... " >&6; }
28821if test "${ac_cv_have_struct_sockaddr_in6+set}" = set; then 15182if ${ac_cv_have_struct_sockaddr_in6+:} false; then :
28822 echo $ECHO_N "(cached) $ECHO_C" >&6 15183 $as_echo_n "(cached) " >&6
28823else 15184else
28824 15185
28825 cat >conftest.$ac_ext <<_ACEOF 15186 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28826/* confdefs.h. */
28827_ACEOF
28828cat confdefs.h >>conftest.$ac_ext
28829cat >>conftest.$ac_ext <<_ACEOF
28830/* end confdefs.h. */ 15187/* end confdefs.h. */
28831 15188
28832#include <sys/types.h> 15189#include <sys/types.h>
@@ -28840,56 +15197,30 @@ main ()
28840 return 0; 15197 return 0;
28841} 15198}
28842_ACEOF 15199_ACEOF
28843rm -f conftest.$ac_objext 15200if ac_fn_c_try_compile "$LINENO"; then :
28844if { (ac_try="$ac_compile"
28845case "(($ac_try" in
28846 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28847 *) ac_try_echo=$ac_try;;
28848esac
28849eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28850 (eval "$ac_compile") 2>conftest.er1
28851 ac_status=$?
28852 grep -v '^ *+' conftest.er1 >conftest.err
28853 rm -f conftest.er1
28854 cat conftest.err >&5
28855 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28856 (exit $ac_status); } && {
28857 test -z "$ac_c_werror_flag" ||
28858 test ! -s conftest.err
28859 } && test -s conftest.$ac_objext; then
28860 ac_cv_have_struct_sockaddr_in6="yes" 15201 ac_cv_have_struct_sockaddr_in6="yes"
28861else 15202else
28862 echo "$as_me: failed program was:" >&5 15203 ac_cv_have_struct_sockaddr_in6="no"
28863sed 's/^/| /' conftest.$ac_ext >&5
28864
28865 ac_cv_have_struct_sockaddr_in6="no"
28866 15204
28867fi 15205fi
28868
28869rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15206rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28870 15207
28871fi 15208fi
28872{ echo "$as_me:$LINENO: result: $ac_cv_have_struct_sockaddr_in6" >&5 15209{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_in6" >&5
28873echo "${ECHO_T}$ac_cv_have_struct_sockaddr_in6" >&6; } 15210$as_echo "$ac_cv_have_struct_sockaddr_in6" >&6; }
28874if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then 15211if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
28875 15212
28876cat >>confdefs.h <<\_ACEOF 15213$as_echo "#define HAVE_STRUCT_SOCKADDR_IN6 1" >>confdefs.h
28877#define HAVE_STRUCT_SOCKADDR_IN6 1
28878_ACEOF
28879 15214
28880fi 15215fi
28881 15216
28882{ echo "$as_me:$LINENO: checking for struct in6_addr" >&5 15217{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct in6_addr" >&5
28883echo $ECHO_N "checking for struct in6_addr... $ECHO_C" >&6; } 15218$as_echo_n "checking for struct in6_addr... " >&6; }
28884if test "${ac_cv_have_struct_in6_addr+set}" = set; then 15219if ${ac_cv_have_struct_in6_addr+:} false; then :
28885 echo $ECHO_N "(cached) $ECHO_C" >&6 15220 $as_echo_n "(cached) " >&6
28886else 15221else
28887 15222
28888 cat >conftest.$ac_ext <<_ACEOF 15223 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
28889/* confdefs.h. */
28890_ACEOF
28891cat confdefs.h >>conftest.$ac_ext
28892cat >>conftest.$ac_ext <<_ACEOF
28893/* end confdefs.h. */ 15224/* end confdefs.h. */
28894 15225
28895#include <sys/types.h> 15226#include <sys/types.h>
@@ -28903,150 +15234,30 @@ main ()
28903 return 0; 15234 return 0;
28904} 15235}
28905_ACEOF 15236_ACEOF
28906rm -f conftest.$ac_objext 15237if ac_fn_c_try_compile "$LINENO"; then :
28907if { (ac_try="$ac_compile"
28908case "(($ac_try" in
28909 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28910 *) ac_try_echo=$ac_try;;
28911esac
28912eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28913 (eval "$ac_compile") 2>conftest.er1
28914 ac_status=$?
28915 grep -v '^ *+' conftest.er1 >conftest.err
28916 rm -f conftest.er1
28917 cat conftest.err >&5
28918 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28919 (exit $ac_status); } && {
28920 test -z "$ac_c_werror_flag" ||
28921 test ! -s conftest.err
28922 } && test -s conftest.$ac_objext; then
28923 ac_cv_have_struct_in6_addr="yes" 15238 ac_cv_have_struct_in6_addr="yes"
28924else 15239else
28925 echo "$as_me: failed program was:" >&5 15240 ac_cv_have_struct_in6_addr="no"
28926sed 's/^/| /' conftest.$ac_ext >&5
28927
28928 ac_cv_have_struct_in6_addr="no"
28929 15241
28930fi 15242fi
28931
28932rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15243rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
28933 15244
28934fi 15245fi
28935{ echo "$as_me:$LINENO: result: $ac_cv_have_struct_in6_addr" >&5 15246{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_in6_addr" >&5
28936echo "${ECHO_T}$ac_cv_have_struct_in6_addr" >&6; } 15247$as_echo "$ac_cv_have_struct_in6_addr" >&6; }
28937if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then 15248if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
28938 15249
28939cat >>confdefs.h <<\_ACEOF 15250$as_echo "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h
28940#define HAVE_STRUCT_IN6_ADDR 1
28941_ACEOF
28942
28943
28944 { echo "$as_me:$LINENO: checking for struct sockaddr_in6.sin6_scope_id" >&5
28945echo $ECHO_N "checking for struct sockaddr_in6.sin6_scope_id... $ECHO_C" >&6; }
28946if test "${ac_cv_member_struct_sockaddr_in6_sin6_scope_id+set}" = set; then
28947 echo $ECHO_N "(cached) $ECHO_C" >&6
28948else
28949 cat >conftest.$ac_ext <<_ACEOF
28950/* confdefs.h. */
28951_ACEOF
28952cat confdefs.h >>conftest.$ac_ext
28953cat >>conftest.$ac_ext <<_ACEOF
28954/* end confdefs.h. */
28955
28956#ifdef HAVE_SYS_TYPES_H
28957#include <sys/types.h>
28958#endif
28959#include <netinet/in.h>
28960
28961
28962int
28963main ()
28964{
28965static struct sockaddr_in6 ac_aggr;
28966if (ac_aggr.sin6_scope_id)
28967return 0;
28968 ;
28969 return 0;
28970}
28971_ACEOF
28972rm -f conftest.$ac_objext
28973if { (ac_try="$ac_compile"
28974case "(($ac_try" in
28975 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
28976 *) ac_try_echo=$ac_try;;
28977esac
28978eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
28979 (eval "$ac_compile") 2>conftest.er1
28980 ac_status=$?
28981 grep -v '^ *+' conftest.er1 >conftest.err
28982 rm -f conftest.er1
28983 cat conftest.err >&5
28984 echo "$as_me:$LINENO: \$? = $ac_status" >&5
28985 (exit $ac_status); } && {
28986 test -z "$ac_c_werror_flag" ||
28987 test ! -s conftest.err
28988 } && test -s conftest.$ac_objext; then
28989 ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
28990else
28991 echo "$as_me: failed program was:" >&5
28992sed 's/^/| /' conftest.$ac_ext >&5
28993 15251
28994 cat >conftest.$ac_ext <<_ACEOF
28995/* confdefs.h. */
28996_ACEOF
28997cat confdefs.h >>conftest.$ac_ext
28998cat >>conftest.$ac_ext <<_ACEOF
28999/* end confdefs.h. */
29000 15252
15253 ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "
29001#ifdef HAVE_SYS_TYPES_H 15254#ifdef HAVE_SYS_TYPES_H
29002#include <sys/types.h> 15255#include <sys/types.h>
29003#endif 15256#endif
29004#include <netinet/in.h> 15257#include <netinet/in.h>
29005 15258
29006 15259"
29007int 15260if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = xyes; then :
29008main ()
29009{
29010static struct sockaddr_in6 ac_aggr;
29011if (sizeof ac_aggr.sin6_scope_id)
29012return 0;
29013 ;
29014 return 0;
29015}
29016_ACEOF
29017rm -f conftest.$ac_objext
29018if { (ac_try="$ac_compile"
29019case "(($ac_try" in
29020 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29021 *) ac_try_echo=$ac_try;;
29022esac
29023eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29024 (eval "$ac_compile") 2>conftest.er1
29025 ac_status=$?
29026 grep -v '^ *+' conftest.er1 >conftest.err
29027 rm -f conftest.er1
29028 cat conftest.err >&5
29029 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29030 (exit $ac_status); } && {
29031 test -z "$ac_c_werror_flag" ||
29032 test ! -s conftest.err
29033 } && test -s conftest.$ac_objext; then
29034 ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
29035else
29036 echo "$as_me: failed program was:" >&5
29037sed 's/^/| /' conftest.$ac_ext >&5
29038
29039 ac_cv_member_struct_sockaddr_in6_sin6_scope_id=no
29040fi
29041
29042rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
29043fi
29044
29045rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
29046fi
29047{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&5
29048echo "${ECHO_T}$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&6; }
29049if test $ac_cv_member_struct_sockaddr_in6_sin6_scope_id = yes; then
29050 15261
29051cat >>confdefs.h <<_ACEOF 15262cat >>confdefs.h <<_ACEOF
29052#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1 15263#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
@@ -29057,17 +15268,13 @@ fi
29057 15268
29058fi 15269fi
29059 15270
29060{ echo "$as_me:$LINENO: checking for struct addrinfo" >&5 15271{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct addrinfo" >&5
29061echo $ECHO_N "checking for struct addrinfo... $ECHO_C" >&6; } 15272$as_echo_n "checking for struct addrinfo... " >&6; }
29062if test "${ac_cv_have_struct_addrinfo+set}" = set; then 15273if ${ac_cv_have_struct_addrinfo+:} false; then :
29063 echo $ECHO_N "(cached) $ECHO_C" >&6 15274 $as_echo_n "(cached) " >&6
29064else 15275else
29065 15276
29066 cat >conftest.$ac_ext <<_ACEOF 15277 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29067/* confdefs.h. */
29068_ACEOF
29069cat confdefs.h >>conftest.$ac_ext
29070cat >>conftest.$ac_ext <<_ACEOF
29071/* end confdefs.h. */ 15278/* end confdefs.h. */
29072 15279
29073#include <sys/types.h> 15280#include <sys/types.h>
@@ -29082,56 +15289,30 @@ main ()
29082 return 0; 15289 return 0;
29083} 15290}
29084_ACEOF 15291_ACEOF
29085rm -f conftest.$ac_objext 15292if ac_fn_c_try_compile "$LINENO"; then :
29086if { (ac_try="$ac_compile"
29087case "(($ac_try" in
29088 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29089 *) ac_try_echo=$ac_try;;
29090esac
29091eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29092 (eval "$ac_compile") 2>conftest.er1
29093 ac_status=$?
29094 grep -v '^ *+' conftest.er1 >conftest.err
29095 rm -f conftest.er1
29096 cat conftest.err >&5
29097 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29098 (exit $ac_status); } && {
29099 test -z "$ac_c_werror_flag" ||
29100 test ! -s conftest.err
29101 } && test -s conftest.$ac_objext; then
29102 ac_cv_have_struct_addrinfo="yes" 15293 ac_cv_have_struct_addrinfo="yes"
29103else 15294else
29104 echo "$as_me: failed program was:" >&5 15295 ac_cv_have_struct_addrinfo="no"
29105sed 's/^/| /' conftest.$ac_ext >&5
29106
29107 ac_cv_have_struct_addrinfo="no"
29108 15296
29109fi 15297fi
29110
29111rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15298rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
29112 15299
29113fi 15300fi
29114{ echo "$as_me:$LINENO: result: $ac_cv_have_struct_addrinfo" >&5 15301{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_addrinfo" >&5
29115echo "${ECHO_T}$ac_cv_have_struct_addrinfo" >&6; } 15302$as_echo "$ac_cv_have_struct_addrinfo" >&6; }
29116if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then 15303if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
29117 15304
29118cat >>confdefs.h <<\_ACEOF 15305$as_echo "#define HAVE_STRUCT_ADDRINFO 1" >>confdefs.h
29119#define HAVE_STRUCT_ADDRINFO 1
29120_ACEOF
29121 15306
29122fi 15307fi
29123 15308
29124{ echo "$as_me:$LINENO: checking for struct timeval" >&5 15309{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
29125echo $ECHO_N "checking for struct timeval... $ECHO_C" >&6; } 15310$as_echo_n "checking for struct timeval... " >&6; }
29126if test "${ac_cv_have_struct_timeval+set}" = set; then 15311if ${ac_cv_have_struct_timeval+:} false; then :
29127 echo $ECHO_N "(cached) $ECHO_C" >&6 15312 $as_echo_n "(cached) " >&6
29128else 15313else
29129 15314
29130 cat >conftest.$ac_ext <<_ACEOF 15315 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29131/* confdefs.h. */
29132_ACEOF
29133cat confdefs.h >>conftest.$ac_ext
29134cat >>conftest.$ac_ext <<_ACEOF
29135/* end confdefs.h. */ 15316/* end confdefs.h. */
29136 #include <sys/time.h> 15317 #include <sys/time.h>
29137int 15318int
@@ -29142,100 +15323,26 @@ main ()
29142 return 0; 15323 return 0;
29143} 15324}
29144_ACEOF 15325_ACEOF
29145rm -f conftest.$ac_objext 15326if ac_fn_c_try_compile "$LINENO"; then :
29146if { (ac_try="$ac_compile"
29147case "(($ac_try" in
29148 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29149 *) ac_try_echo=$ac_try;;
29150esac
29151eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29152 (eval "$ac_compile") 2>conftest.er1
29153 ac_status=$?
29154 grep -v '^ *+' conftest.er1 >conftest.err
29155 rm -f conftest.er1
29156 cat conftest.err >&5
29157 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29158 (exit $ac_status); } && {
29159 test -z "$ac_c_werror_flag" ||
29160 test ! -s conftest.err
29161 } && test -s conftest.$ac_objext; then
29162 ac_cv_have_struct_timeval="yes" 15327 ac_cv_have_struct_timeval="yes"
29163else 15328else
29164 echo "$as_me: failed program was:" >&5 15329 ac_cv_have_struct_timeval="no"
29165sed 's/^/| /' conftest.$ac_ext >&5
29166
29167 ac_cv_have_struct_timeval="no"
29168 15330
29169fi 15331fi
29170
29171rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 15332rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
29172 15333
29173fi 15334fi
29174{ echo "$as_me:$LINENO: result: $ac_cv_have_struct_timeval" >&5 15335{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_timeval" >&5
29175echo "${ECHO_T}$ac_cv_have_struct_timeval" >&6; } 15336$as_echo "$ac_cv_have_struct_timeval" >&6; }
29176if test "x$ac_cv_have_struct_timeval" = "xyes" ; then 15337if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
29177 15338
29178cat >>confdefs.h <<\_ACEOF 15339$as_echo "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h
29179#define HAVE_STRUCT_TIMEVAL 1
29180_ACEOF
29181 15340
29182 have_struct_timeval=1 15341 have_struct_timeval=1
29183fi 15342fi
29184 15343
29185{ echo "$as_me:$LINENO: checking for struct timespec" >&5 15344ac_fn_c_check_type "$LINENO" "struct timespec" "ac_cv_type_struct_timespec" "$ac_includes_default"
29186echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6; } 15345if test "x$ac_cv_type_struct_timespec" = xyes; then :
29187if test "${ac_cv_type_struct_timespec+set}" = set; then
29188 echo $ECHO_N "(cached) $ECHO_C" >&6
29189else
29190 cat >conftest.$ac_ext <<_ACEOF
29191/* confdefs.h. */
29192_ACEOF
29193cat confdefs.h >>conftest.$ac_ext
29194cat >>conftest.$ac_ext <<_ACEOF
29195/* end confdefs.h. */
29196$ac_includes_default
29197typedef struct timespec ac__type_new_;
29198int
29199main ()
29200{
29201if ((ac__type_new_ *) 0)
29202 return 0;
29203if (sizeof (ac__type_new_))
29204 return 0;
29205 ;
29206 return 0;
29207}
29208_ACEOF
29209rm -f conftest.$ac_objext
29210if { (ac_try="$ac_compile"
29211case "(($ac_try" in
29212 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29213 *) ac_try_echo=$ac_try;;
29214esac
29215eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29216 (eval "$ac_compile") 2>conftest.er1
29217 ac_status=$?
29218 grep -v '^ *+' conftest.er1 >conftest.err
29219 rm -f conftest.er1
29220 cat conftest.err >&5
29221 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29222 (exit $ac_status); } && {
29223 test -z "$ac_c_werror_flag" ||
29224 test ! -s conftest.err
29225 } && test -s conftest.$ac_objext; then
29226 ac_cv_type_struct_timespec=yes
29227else
29228 echo "$as_me: failed program was:" >&5
29229sed 's/^/| /' conftest.$ac_ext >&5
29230
29231 ac_cv_type_struct_timespec=no
29232fi
29233
29234rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
29235fi
29236{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timespec" >&5
29237echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6; }
29238if test $ac_cv_type_struct_timespec = yes; then
29239 15346
29240cat >>confdefs.h <<_ACEOF 15347cat >>confdefs.h <<_ACEOF
29241#define HAVE_STRUCT_TIMESPEC 1 15348#define HAVE_STRUCT_TIMESPEC 1
@@ -29254,16 +15361,12 @@ if test "x$ac_cv_have_int64_t" = "xno" && \
29254 echo "" 15361 echo ""
29255 exit 1; 15362 exit 1;
29256else 15363else
29257 if test "$cross_compiling" = yes; then 15364 if test "$cross_compiling" = yes; then :
29258 { echo "$as_me:$LINENO: WARNING: cross compiling: Assuming working snprintf()" >&5 15365 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
29259echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;} 15366$as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
29260 15367
29261else 15368else
29262 cat >conftest.$ac_ext <<_ACEOF 15369 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29263/* confdefs.h. */
29264_ACEOF
29265cat confdefs.h >>conftest.$ac_ext
29266cat >>conftest.$ac_ext <<_ACEOF
29267/* end confdefs.h. */ 15370/* end confdefs.h. */
29268 15371
29269#include <stdio.h> 15372#include <stdio.h>
@@ -29290,65 +15393,35 @@ main() { exit(0); }
29290#endif 15393#endif
29291 15394
29292_ACEOF 15395_ACEOF
29293rm -f conftest$ac_exeext 15396if ac_fn_c_try_run "$LINENO"; then :
29294if { (ac_try="$ac_link"
29295case "(($ac_try" in
29296 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29297 *) ac_try_echo=$ac_try;;
29298esac
29299eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29300 (eval "$ac_link") 2>&5
29301 ac_status=$?
29302 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29303 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
29304 { (case "(($ac_try" in
29305 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
29306 *) ac_try_echo=$ac_try;;
29307esac
29308eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
29309 (eval "$ac_try") 2>&5
29310 ac_status=$?
29311 echo "$as_me:$LINENO: \$? = $ac_status" >&5
29312 (exit $ac_status); }; }; then
29313 true 15397 true
29314else 15398else
29315 echo "$as_me: program exited with status $ac_status" >&5 15399 $as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
29316echo "$as_me: failed program was:" >&5
29317sed 's/^/| /' conftest.$ac_ext >&5
29318
29319( exit $ac_status )
29320 cat >>confdefs.h <<\_ACEOF
29321#define BROKEN_SNPRINTF 1
29322_ACEOF
29323 15400
29324fi 15401fi
29325rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 15402rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
15403 conftest.$ac_objext conftest.beam conftest.$ac_ext
29326fi 15404fi
29327 15405
29328
29329fi 15406fi
29330 15407
29331 15408
29332# look for field 'ut_host' in header 'utmp.h' 15409# look for field 'ut_host' in header 'utmp.h'
29333 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15410 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29334 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host 15411 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host
29335 { echo "$as_me:$LINENO: checking for ut_host field in utmp.h" >&5 15412 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmp.h" >&5
29336echo $ECHO_N "checking for ut_host field in utmp.h... $ECHO_C" >&6; } 15413$as_echo_n "checking for ut_host field in utmp.h... " >&6; }
29337 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15414 if eval \${$ossh_varname+:} false; then :
29338 echo $ECHO_N "(cached) $ECHO_C" >&6 15415 $as_echo_n "(cached) " >&6
29339else 15416else
29340 15417
29341 cat >conftest.$ac_ext <<_ACEOF 15418 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29342/* confdefs.h. */
29343_ACEOF
29344cat confdefs.h >>conftest.$ac_ext
29345cat >>conftest.$ac_ext <<_ACEOF
29346/* end confdefs.h. */ 15419/* end confdefs.h. */
29347#include <utmp.h> 15420#include <utmp.h>
29348 15421
29349_ACEOF 15422_ACEOF
29350if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15423if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29351 $EGREP "ut_host" >/dev/null 2>&1; then 15424 $EGREP "ut_host" >/dev/null 2>&1; then :
29352 eval "$ossh_varname=yes" 15425 eval "$ossh_varname=yes"
29353else 15426else
29354 eval "$ossh_varname=no" 15427 eval "$ossh_varname=no"
@@ -29359,41 +15432,35 @@ fi
29359 15432
29360 ossh_result=`eval 'echo $'"$ossh_varname"` 15433 ossh_result=`eval 'echo $'"$ossh_varname"`
29361 if test -n "`echo $ossh_varname`"; then 15434 if test -n "`echo $ossh_varname`"; then
29362 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15435 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29363echo "${ECHO_T}$ossh_result" >&6; } 15436$as_echo "$ossh_result" >&6; }
29364 if test "x$ossh_result" = "xyes"; then 15437 if test "x$ossh_result" = "xyes"; then
29365 15438
29366cat >>confdefs.h <<\_ACEOF 15439$as_echo "#define HAVE_HOST_IN_UTMP 1" >>confdefs.h
29367#define HAVE_HOST_IN_UTMP 1
29368_ACEOF
29369 15440
29370 fi 15441 fi
29371 else 15442 else
29372 { echo "$as_me:$LINENO: result: no" >&5 15443 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29373echo "${ECHO_T}no" >&6; } 15444$as_echo "no" >&6; }
29374 fi 15445 fi
29375 15446
29376 15447
29377# look for field 'ut_host' in header 'utmpx.h' 15448# look for field 'ut_host' in header 'utmpx.h'
29378 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15449 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29379 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host 15450 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host
29380 { echo "$as_me:$LINENO: checking for ut_host field in utmpx.h" >&5 15451 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmpx.h" >&5
29381echo $ECHO_N "checking for ut_host field in utmpx.h... $ECHO_C" >&6; } 15452$as_echo_n "checking for ut_host field in utmpx.h... " >&6; }
29382 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15453 if eval \${$ossh_varname+:} false; then :
29383 echo $ECHO_N "(cached) $ECHO_C" >&6 15454 $as_echo_n "(cached) " >&6
29384else 15455else
29385 15456
29386 cat >conftest.$ac_ext <<_ACEOF 15457 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29387/* confdefs.h. */
29388_ACEOF
29389cat confdefs.h >>conftest.$ac_ext
29390cat >>conftest.$ac_ext <<_ACEOF
29391/* end confdefs.h. */ 15458/* end confdefs.h. */
29392#include <utmpx.h> 15459#include <utmpx.h>
29393 15460
29394_ACEOF 15461_ACEOF
29395if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15462if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29396 $EGREP "ut_host" >/dev/null 2>&1; then 15463 $EGREP "ut_host" >/dev/null 2>&1; then :
29397 eval "$ossh_varname=yes" 15464 eval "$ossh_varname=yes"
29398else 15465else
29399 eval "$ossh_varname=no" 15466 eval "$ossh_varname=no"
@@ -29404,41 +15471,35 @@ fi
29404 15471
29405 ossh_result=`eval 'echo $'"$ossh_varname"` 15472 ossh_result=`eval 'echo $'"$ossh_varname"`
29406 if test -n "`echo $ossh_varname`"; then 15473 if test -n "`echo $ossh_varname`"; then
29407 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15474 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29408echo "${ECHO_T}$ossh_result" >&6; } 15475$as_echo "$ossh_result" >&6; }
29409 if test "x$ossh_result" = "xyes"; then 15476 if test "x$ossh_result" = "xyes"; then
29410 15477
29411cat >>confdefs.h <<\_ACEOF 15478$as_echo "#define HAVE_HOST_IN_UTMPX 1" >>confdefs.h
29412#define HAVE_HOST_IN_UTMPX 1
29413_ACEOF
29414 15479
29415 fi 15480 fi
29416 else 15481 else
29417 { echo "$as_me:$LINENO: result: no" >&5 15482 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29418echo "${ECHO_T}no" >&6; } 15483$as_echo "no" >&6; }
29419 fi 15484 fi
29420 15485
29421 15486
29422# look for field 'syslen' in header 'utmpx.h' 15487# look for field 'syslen' in header 'utmpx.h'
29423 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15488 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29424 ossh_varname="ossh_cv_$ossh_safe""_has_"syslen 15489 ossh_varname="ossh_cv_$ossh_safe""_has_"syslen
29425 { echo "$as_me:$LINENO: checking for syslen field in utmpx.h" >&5 15490 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for syslen field in utmpx.h" >&5
29426echo $ECHO_N "checking for syslen field in utmpx.h... $ECHO_C" >&6; } 15491$as_echo_n "checking for syslen field in utmpx.h... " >&6; }
29427 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15492 if eval \${$ossh_varname+:} false; then :
29428 echo $ECHO_N "(cached) $ECHO_C" >&6 15493 $as_echo_n "(cached) " >&6
29429else 15494else
29430 15495
29431 cat >conftest.$ac_ext <<_ACEOF 15496 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29432/* confdefs.h. */
29433_ACEOF
29434cat confdefs.h >>conftest.$ac_ext
29435cat >>conftest.$ac_ext <<_ACEOF
29436/* end confdefs.h. */ 15497/* end confdefs.h. */
29437#include <utmpx.h> 15498#include <utmpx.h>
29438 15499
29439_ACEOF 15500_ACEOF
29440if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15501if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29441 $EGREP "syslen" >/dev/null 2>&1; then 15502 $EGREP "syslen" >/dev/null 2>&1; then :
29442 eval "$ossh_varname=yes" 15503 eval "$ossh_varname=yes"
29443else 15504else
29444 eval "$ossh_varname=no" 15505 eval "$ossh_varname=no"
@@ -29449,41 +15510,35 @@ fi
29449 15510
29450 ossh_result=`eval 'echo $'"$ossh_varname"` 15511 ossh_result=`eval 'echo $'"$ossh_varname"`
29451 if test -n "`echo $ossh_varname`"; then 15512 if test -n "`echo $ossh_varname`"; then
29452 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15513 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29453echo "${ECHO_T}$ossh_result" >&6; } 15514$as_echo "$ossh_result" >&6; }
29454 if test "x$ossh_result" = "xyes"; then 15515 if test "x$ossh_result" = "xyes"; then
29455 15516
29456cat >>confdefs.h <<\_ACEOF 15517$as_echo "#define HAVE_SYSLEN_IN_UTMPX 1" >>confdefs.h
29457#define HAVE_SYSLEN_IN_UTMPX 1
29458_ACEOF
29459 15518
29460 fi 15519 fi
29461 else 15520 else
29462 { echo "$as_me:$LINENO: result: no" >&5 15521 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29463echo "${ECHO_T}no" >&6; } 15522$as_echo "no" >&6; }
29464 fi 15523 fi
29465 15524
29466 15525
29467# look for field 'ut_pid' in header 'utmp.h' 15526# look for field 'ut_pid' in header 'utmp.h'
29468 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15527 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29469 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_pid 15528 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_pid
29470 { echo "$as_me:$LINENO: checking for ut_pid field in utmp.h" >&5 15529 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_pid field in utmp.h" >&5
29471echo $ECHO_N "checking for ut_pid field in utmp.h... $ECHO_C" >&6; } 15530$as_echo_n "checking for ut_pid field in utmp.h... " >&6; }
29472 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15531 if eval \${$ossh_varname+:} false; then :
29473 echo $ECHO_N "(cached) $ECHO_C" >&6 15532 $as_echo_n "(cached) " >&6
29474else 15533else
29475 15534
29476 cat >conftest.$ac_ext <<_ACEOF 15535 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29477/* confdefs.h. */
29478_ACEOF
29479cat confdefs.h >>conftest.$ac_ext
29480cat >>conftest.$ac_ext <<_ACEOF
29481/* end confdefs.h. */ 15536/* end confdefs.h. */
29482#include <utmp.h> 15537#include <utmp.h>
29483 15538
29484_ACEOF 15539_ACEOF
29485if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15540if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29486 $EGREP "ut_pid" >/dev/null 2>&1; then 15541 $EGREP "ut_pid" >/dev/null 2>&1; then :
29487 eval "$ossh_varname=yes" 15542 eval "$ossh_varname=yes"
29488else 15543else
29489 eval "$ossh_varname=no" 15544 eval "$ossh_varname=no"
@@ -29494,41 +15549,35 @@ fi
29494 15549
29495 ossh_result=`eval 'echo $'"$ossh_varname"` 15550 ossh_result=`eval 'echo $'"$ossh_varname"`
29496 if test -n "`echo $ossh_varname`"; then 15551 if test -n "`echo $ossh_varname`"; then
29497 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15552 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29498echo "${ECHO_T}$ossh_result" >&6; } 15553$as_echo "$ossh_result" >&6; }
29499 if test "x$ossh_result" = "xyes"; then 15554 if test "x$ossh_result" = "xyes"; then
29500 15555
29501cat >>confdefs.h <<\_ACEOF 15556$as_echo "#define HAVE_PID_IN_UTMP 1" >>confdefs.h
29502#define HAVE_PID_IN_UTMP 1
29503_ACEOF
29504 15557
29505 fi 15558 fi
29506 else 15559 else
29507 { echo "$as_me:$LINENO: result: no" >&5 15560 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29508echo "${ECHO_T}no" >&6; } 15561$as_echo "no" >&6; }
29509 fi 15562 fi
29510 15563
29511 15564
29512# look for field 'ut_type' in header 'utmp.h' 15565# look for field 'ut_type' in header 'utmp.h'
29513 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15566 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29514 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type 15567 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type
29515 { echo "$as_me:$LINENO: checking for ut_type field in utmp.h" >&5 15568 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmp.h" >&5
29516echo $ECHO_N "checking for ut_type field in utmp.h... $ECHO_C" >&6; } 15569$as_echo_n "checking for ut_type field in utmp.h... " >&6; }
29517 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15570 if eval \${$ossh_varname+:} false; then :
29518 echo $ECHO_N "(cached) $ECHO_C" >&6 15571 $as_echo_n "(cached) " >&6
29519else 15572else
29520 15573
29521 cat >conftest.$ac_ext <<_ACEOF 15574 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29522/* confdefs.h. */
29523_ACEOF
29524cat confdefs.h >>conftest.$ac_ext
29525cat >>conftest.$ac_ext <<_ACEOF
29526/* end confdefs.h. */ 15575/* end confdefs.h. */
29527#include <utmp.h> 15576#include <utmp.h>
29528 15577
29529_ACEOF 15578_ACEOF
29530if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15579if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29531 $EGREP "ut_type" >/dev/null 2>&1; then 15580 $EGREP "ut_type" >/dev/null 2>&1; then :
29532 eval "$ossh_varname=yes" 15581 eval "$ossh_varname=yes"
29533else 15582else
29534 eval "$ossh_varname=no" 15583 eval "$ossh_varname=no"
@@ -29539,41 +15588,35 @@ fi
29539 15588
29540 ossh_result=`eval 'echo $'"$ossh_varname"` 15589 ossh_result=`eval 'echo $'"$ossh_varname"`
29541 if test -n "`echo $ossh_varname`"; then 15590 if test -n "`echo $ossh_varname`"; then
29542 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15591 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29543echo "${ECHO_T}$ossh_result" >&6; } 15592$as_echo "$ossh_result" >&6; }
29544 if test "x$ossh_result" = "xyes"; then 15593 if test "x$ossh_result" = "xyes"; then
29545 15594
29546cat >>confdefs.h <<\_ACEOF 15595$as_echo "#define HAVE_TYPE_IN_UTMP 1" >>confdefs.h
29547#define HAVE_TYPE_IN_UTMP 1
29548_ACEOF
29549 15596
29550 fi 15597 fi
29551 else 15598 else
29552 { echo "$as_me:$LINENO: result: no" >&5 15599 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29553echo "${ECHO_T}no" >&6; } 15600$as_echo "no" >&6; }
29554 fi 15601 fi
29555 15602
29556 15603
29557# look for field 'ut_type' in header 'utmpx.h' 15604# look for field 'ut_type' in header 'utmpx.h'
29558 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15605 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29559 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type 15606 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type
29560 { echo "$as_me:$LINENO: checking for ut_type field in utmpx.h" >&5 15607 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmpx.h" >&5
29561echo $ECHO_N "checking for ut_type field in utmpx.h... $ECHO_C" >&6; } 15608$as_echo_n "checking for ut_type field in utmpx.h... " >&6; }
29562 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15609 if eval \${$ossh_varname+:} false; then :
29563 echo $ECHO_N "(cached) $ECHO_C" >&6 15610 $as_echo_n "(cached) " >&6
29564else 15611else
29565 15612
29566 cat >conftest.$ac_ext <<_ACEOF 15613 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29567/* confdefs.h. */
29568_ACEOF
29569cat confdefs.h >>conftest.$ac_ext
29570cat >>conftest.$ac_ext <<_ACEOF
29571/* end confdefs.h. */ 15614/* end confdefs.h. */
29572#include <utmpx.h> 15615#include <utmpx.h>
29573 15616
29574_ACEOF 15617_ACEOF
29575if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15618if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29576 $EGREP "ut_type" >/dev/null 2>&1; then 15619 $EGREP "ut_type" >/dev/null 2>&1; then :
29577 eval "$ossh_varname=yes" 15620 eval "$ossh_varname=yes"
29578else 15621else
29579 eval "$ossh_varname=no" 15622 eval "$ossh_varname=no"
@@ -29584,41 +15627,35 @@ fi
29584 15627
29585 ossh_result=`eval 'echo $'"$ossh_varname"` 15628 ossh_result=`eval 'echo $'"$ossh_varname"`
29586 if test -n "`echo $ossh_varname`"; then 15629 if test -n "`echo $ossh_varname`"; then
29587 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15630 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29588echo "${ECHO_T}$ossh_result" >&6; } 15631$as_echo "$ossh_result" >&6; }
29589 if test "x$ossh_result" = "xyes"; then 15632 if test "x$ossh_result" = "xyes"; then
29590 15633
29591cat >>confdefs.h <<\_ACEOF 15634$as_echo "#define HAVE_TYPE_IN_UTMPX 1" >>confdefs.h
29592#define HAVE_TYPE_IN_UTMPX 1
29593_ACEOF
29594 15635
29595 fi 15636 fi
29596 else 15637 else
29597 { echo "$as_me:$LINENO: result: no" >&5 15638 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29598echo "${ECHO_T}no" >&6; } 15639$as_echo "no" >&6; }
29599 fi 15640 fi
29600 15641
29601 15642
29602# look for field 'ut_tv' in header 'utmp.h' 15643# look for field 'ut_tv' in header 'utmp.h'
29603 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15644 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29604 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv 15645 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv
29605 { echo "$as_me:$LINENO: checking for ut_tv field in utmp.h" >&5 15646 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmp.h" >&5
29606echo $ECHO_N "checking for ut_tv field in utmp.h... $ECHO_C" >&6; } 15647$as_echo_n "checking for ut_tv field in utmp.h... " >&6; }
29607 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15648 if eval \${$ossh_varname+:} false; then :
29608 echo $ECHO_N "(cached) $ECHO_C" >&6 15649 $as_echo_n "(cached) " >&6
29609else 15650else
29610 15651
29611 cat >conftest.$ac_ext <<_ACEOF 15652 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29612/* confdefs.h. */
29613_ACEOF
29614cat confdefs.h >>conftest.$ac_ext
29615cat >>conftest.$ac_ext <<_ACEOF
29616/* end confdefs.h. */ 15653/* end confdefs.h. */
29617#include <utmp.h> 15654#include <utmp.h>
29618 15655
29619_ACEOF 15656_ACEOF
29620if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15657if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29621 $EGREP "ut_tv" >/dev/null 2>&1; then 15658 $EGREP "ut_tv" >/dev/null 2>&1; then :
29622 eval "$ossh_varname=yes" 15659 eval "$ossh_varname=yes"
29623else 15660else
29624 eval "$ossh_varname=no" 15661 eval "$ossh_varname=no"
@@ -29629,41 +15666,35 @@ fi
29629 15666
29630 ossh_result=`eval 'echo $'"$ossh_varname"` 15667 ossh_result=`eval 'echo $'"$ossh_varname"`
29631 if test -n "`echo $ossh_varname`"; then 15668 if test -n "`echo $ossh_varname`"; then
29632 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15669 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29633echo "${ECHO_T}$ossh_result" >&6; } 15670$as_echo "$ossh_result" >&6; }
29634 if test "x$ossh_result" = "xyes"; then 15671 if test "x$ossh_result" = "xyes"; then
29635 15672
29636cat >>confdefs.h <<\_ACEOF 15673$as_echo "#define HAVE_TV_IN_UTMP 1" >>confdefs.h
29637#define HAVE_TV_IN_UTMP 1
29638_ACEOF
29639 15674
29640 fi 15675 fi
29641 else 15676 else
29642 { echo "$as_me:$LINENO: result: no" >&5 15677 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29643echo "${ECHO_T}no" >&6; } 15678$as_echo "no" >&6; }
29644 fi 15679 fi
29645 15680
29646 15681
29647# look for field 'ut_id' in header 'utmp.h' 15682# look for field 'ut_id' in header 'utmp.h'
29648 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15683 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29649 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id 15684 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id
29650 { echo "$as_me:$LINENO: checking for ut_id field in utmp.h" >&5 15685 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmp.h" >&5
29651echo $ECHO_N "checking for ut_id field in utmp.h... $ECHO_C" >&6; } 15686$as_echo_n "checking for ut_id field in utmp.h... " >&6; }
29652 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15687 if eval \${$ossh_varname+:} false; then :
29653 echo $ECHO_N "(cached) $ECHO_C" >&6 15688 $as_echo_n "(cached) " >&6
29654else 15689else
29655 15690
29656 cat >conftest.$ac_ext <<_ACEOF 15691 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29657/* confdefs.h. */
29658_ACEOF
29659cat confdefs.h >>conftest.$ac_ext
29660cat >>conftest.$ac_ext <<_ACEOF
29661/* end confdefs.h. */ 15692/* end confdefs.h. */
29662#include <utmp.h> 15693#include <utmp.h>
29663 15694
29664_ACEOF 15695_ACEOF
29665if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15696if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29666 $EGREP "ut_id" >/dev/null 2>&1; then 15697 $EGREP "ut_id" >/dev/null 2>&1; then :
29667 eval "$ossh_varname=yes" 15698 eval "$ossh_varname=yes"
29668else 15699else
29669 eval "$ossh_varname=no" 15700 eval "$ossh_varname=no"
@@ -29674,41 +15705,35 @@ fi
29674 15705
29675 ossh_result=`eval 'echo $'"$ossh_varname"` 15706 ossh_result=`eval 'echo $'"$ossh_varname"`
29676 if test -n "`echo $ossh_varname`"; then 15707 if test -n "`echo $ossh_varname`"; then
29677 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15708 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29678echo "${ECHO_T}$ossh_result" >&6; } 15709$as_echo "$ossh_result" >&6; }
29679 if test "x$ossh_result" = "xyes"; then 15710 if test "x$ossh_result" = "xyes"; then
29680 15711
29681cat >>confdefs.h <<\_ACEOF 15712$as_echo "#define HAVE_ID_IN_UTMP 1" >>confdefs.h
29682#define HAVE_ID_IN_UTMP 1
29683_ACEOF
29684 15713
29685 fi 15714 fi
29686 else 15715 else
29687 { echo "$as_me:$LINENO: result: no" >&5 15716 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29688echo "${ECHO_T}no" >&6; } 15717$as_echo "no" >&6; }
29689 fi 15718 fi
29690 15719
29691 15720
29692# look for field 'ut_id' in header 'utmpx.h' 15721# look for field 'ut_id' in header 'utmpx.h'
29693 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15722 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29694 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id 15723 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id
29695 { echo "$as_me:$LINENO: checking for ut_id field in utmpx.h" >&5 15724 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmpx.h" >&5
29696echo $ECHO_N "checking for ut_id field in utmpx.h... $ECHO_C" >&6; } 15725$as_echo_n "checking for ut_id field in utmpx.h... " >&6; }
29697 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15726 if eval \${$ossh_varname+:} false; then :
29698 echo $ECHO_N "(cached) $ECHO_C" >&6 15727 $as_echo_n "(cached) " >&6
29699else 15728else
29700 15729
29701 cat >conftest.$ac_ext <<_ACEOF 15730 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29702/* confdefs.h. */
29703_ACEOF
29704cat confdefs.h >>conftest.$ac_ext
29705cat >>conftest.$ac_ext <<_ACEOF
29706/* end confdefs.h. */ 15731/* end confdefs.h. */
29707#include <utmpx.h> 15732#include <utmpx.h>
29708 15733
29709_ACEOF 15734_ACEOF
29710if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15735if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29711 $EGREP "ut_id" >/dev/null 2>&1; then 15736 $EGREP "ut_id" >/dev/null 2>&1; then :
29712 eval "$ossh_varname=yes" 15737 eval "$ossh_varname=yes"
29713else 15738else
29714 eval "$ossh_varname=no" 15739 eval "$ossh_varname=no"
@@ -29719,41 +15744,35 @@ fi
29719 15744
29720 ossh_result=`eval 'echo $'"$ossh_varname"` 15745 ossh_result=`eval 'echo $'"$ossh_varname"`
29721 if test -n "`echo $ossh_varname`"; then 15746 if test -n "`echo $ossh_varname`"; then
29722 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15747 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29723echo "${ECHO_T}$ossh_result" >&6; } 15748$as_echo "$ossh_result" >&6; }
29724 if test "x$ossh_result" = "xyes"; then 15749 if test "x$ossh_result" = "xyes"; then
29725 15750
29726cat >>confdefs.h <<\_ACEOF 15751$as_echo "#define HAVE_ID_IN_UTMPX 1" >>confdefs.h
29727#define HAVE_ID_IN_UTMPX 1
29728_ACEOF
29729 15752
29730 fi 15753 fi
29731 else 15754 else
29732 { echo "$as_me:$LINENO: result: no" >&5 15755 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29733echo "${ECHO_T}no" >&6; } 15756$as_echo "no" >&6; }
29734 fi 15757 fi
29735 15758
29736 15759
29737# look for field 'ut_addr' in header 'utmp.h' 15760# look for field 'ut_addr' in header 'utmp.h'
29738 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15761 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29739 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr 15762 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr
29740 { echo "$as_me:$LINENO: checking for ut_addr field in utmp.h" >&5 15763 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmp.h" >&5
29741echo $ECHO_N "checking for ut_addr field in utmp.h... $ECHO_C" >&6; } 15764$as_echo_n "checking for ut_addr field in utmp.h... " >&6; }
29742 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15765 if eval \${$ossh_varname+:} false; then :
29743 echo $ECHO_N "(cached) $ECHO_C" >&6 15766 $as_echo_n "(cached) " >&6
29744else 15767else
29745 15768
29746 cat >conftest.$ac_ext <<_ACEOF 15769 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29747/* confdefs.h. */
29748_ACEOF
29749cat confdefs.h >>conftest.$ac_ext
29750cat >>conftest.$ac_ext <<_ACEOF
29751/* end confdefs.h. */ 15770/* end confdefs.h. */
29752#include <utmp.h> 15771#include <utmp.h>
29753 15772
29754_ACEOF 15773_ACEOF
29755if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15774if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29756 $EGREP "ut_addr" >/dev/null 2>&1; then 15775 $EGREP "ut_addr" >/dev/null 2>&1; then :
29757 eval "$ossh_varname=yes" 15776 eval "$ossh_varname=yes"
29758else 15777else
29759 eval "$ossh_varname=no" 15778 eval "$ossh_varname=no"
@@ -29764,41 +15783,35 @@ fi
29764 15783
29765 ossh_result=`eval 'echo $'"$ossh_varname"` 15784 ossh_result=`eval 'echo $'"$ossh_varname"`
29766 if test -n "`echo $ossh_varname`"; then 15785 if test -n "`echo $ossh_varname`"; then
29767 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15786 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29768echo "${ECHO_T}$ossh_result" >&6; } 15787$as_echo "$ossh_result" >&6; }
29769 if test "x$ossh_result" = "xyes"; then 15788 if test "x$ossh_result" = "xyes"; then
29770 15789
29771cat >>confdefs.h <<\_ACEOF 15790$as_echo "#define HAVE_ADDR_IN_UTMP 1" >>confdefs.h
29772#define HAVE_ADDR_IN_UTMP 1
29773_ACEOF
29774 15791
29775 fi 15792 fi
29776 else 15793 else
29777 { echo "$as_me:$LINENO: result: no" >&5 15794 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29778echo "${ECHO_T}no" >&6; } 15795$as_echo "no" >&6; }
29779 fi 15796 fi
29780 15797
29781 15798
29782# look for field 'ut_addr' in header 'utmpx.h' 15799# look for field 'ut_addr' in header 'utmpx.h'
29783 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15800 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29784 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr 15801 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr
29785 { echo "$as_me:$LINENO: checking for ut_addr field in utmpx.h" >&5 15802 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmpx.h" >&5
29786echo $ECHO_N "checking for ut_addr field in utmpx.h... $ECHO_C" >&6; } 15803$as_echo_n "checking for ut_addr field in utmpx.h... " >&6; }
29787 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15804 if eval \${$ossh_varname+:} false; then :
29788 echo $ECHO_N "(cached) $ECHO_C" >&6 15805 $as_echo_n "(cached) " >&6
29789else 15806else
29790 15807
29791 cat >conftest.$ac_ext <<_ACEOF 15808 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29792/* confdefs.h. */
29793_ACEOF
29794cat confdefs.h >>conftest.$ac_ext
29795cat >>conftest.$ac_ext <<_ACEOF
29796/* end confdefs.h. */ 15809/* end confdefs.h. */
29797#include <utmpx.h> 15810#include <utmpx.h>
29798 15811
29799_ACEOF 15812_ACEOF
29800if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15813if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29801 $EGREP "ut_addr" >/dev/null 2>&1; then 15814 $EGREP "ut_addr" >/dev/null 2>&1; then :
29802 eval "$ossh_varname=yes" 15815 eval "$ossh_varname=yes"
29803else 15816else
29804 eval "$ossh_varname=no" 15817 eval "$ossh_varname=no"
@@ -29809,41 +15822,35 @@ fi
29809 15822
29810 ossh_result=`eval 'echo $'"$ossh_varname"` 15823 ossh_result=`eval 'echo $'"$ossh_varname"`
29811 if test -n "`echo $ossh_varname`"; then 15824 if test -n "`echo $ossh_varname`"; then
29812 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15825 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29813echo "${ECHO_T}$ossh_result" >&6; } 15826$as_echo "$ossh_result" >&6; }
29814 if test "x$ossh_result" = "xyes"; then 15827 if test "x$ossh_result" = "xyes"; then
29815 15828
29816cat >>confdefs.h <<\_ACEOF 15829$as_echo "#define HAVE_ADDR_IN_UTMPX 1" >>confdefs.h
29817#define HAVE_ADDR_IN_UTMPX 1
29818_ACEOF
29819 15830
29820 fi 15831 fi
29821 else 15832 else
29822 { echo "$as_me:$LINENO: result: no" >&5 15833 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29823echo "${ECHO_T}no" >&6; } 15834$as_echo "no" >&6; }
29824 fi 15835 fi
29825 15836
29826 15837
29827# look for field 'ut_addr_v6' in header 'utmp.h' 15838# look for field 'ut_addr_v6' in header 'utmp.h'
29828 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15839 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29829 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 15840 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6
29830 { echo "$as_me:$LINENO: checking for ut_addr_v6 field in utmp.h" >&5 15841 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmp.h" >&5
29831echo $ECHO_N "checking for ut_addr_v6 field in utmp.h... $ECHO_C" >&6; } 15842$as_echo_n "checking for ut_addr_v6 field in utmp.h... " >&6; }
29832 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15843 if eval \${$ossh_varname+:} false; then :
29833 echo $ECHO_N "(cached) $ECHO_C" >&6 15844 $as_echo_n "(cached) " >&6
29834else 15845else
29835 15846
29836 cat >conftest.$ac_ext <<_ACEOF 15847 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29837/* confdefs.h. */
29838_ACEOF
29839cat confdefs.h >>conftest.$ac_ext
29840cat >>conftest.$ac_ext <<_ACEOF
29841/* end confdefs.h. */ 15848/* end confdefs.h. */
29842#include <utmp.h> 15849#include <utmp.h>
29843 15850
29844_ACEOF 15851_ACEOF
29845if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15852if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29846 $EGREP "ut_addr_v6" >/dev/null 2>&1; then 15853 $EGREP "ut_addr_v6" >/dev/null 2>&1; then :
29847 eval "$ossh_varname=yes" 15854 eval "$ossh_varname=yes"
29848else 15855else
29849 eval "$ossh_varname=no" 15856 eval "$ossh_varname=no"
@@ -29854,41 +15861,35 @@ fi
29854 15861
29855 ossh_result=`eval 'echo $'"$ossh_varname"` 15862 ossh_result=`eval 'echo $'"$ossh_varname"`
29856 if test -n "`echo $ossh_varname`"; then 15863 if test -n "`echo $ossh_varname`"; then
29857 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15864 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29858echo "${ECHO_T}$ossh_result" >&6; } 15865$as_echo "$ossh_result" >&6; }
29859 if test "x$ossh_result" = "xyes"; then 15866 if test "x$ossh_result" = "xyes"; then
29860 15867
29861cat >>confdefs.h <<\_ACEOF 15868$as_echo "#define HAVE_ADDR_V6_IN_UTMP 1" >>confdefs.h
29862#define HAVE_ADDR_V6_IN_UTMP 1
29863_ACEOF
29864 15869
29865 fi 15870 fi
29866 else 15871 else
29867 { echo "$as_me:$LINENO: result: no" >&5 15872 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29868echo "${ECHO_T}no" >&6; } 15873$as_echo "no" >&6; }
29869 fi 15874 fi
29870 15875
29871 15876
29872# look for field 'ut_addr_v6' in header 'utmpx.h' 15877# look for field 'ut_addr_v6' in header 'utmpx.h'
29873 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15878 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
29874 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6 15879 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6
29875 { echo "$as_me:$LINENO: checking for ut_addr_v6 field in utmpx.h" >&5 15880 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmpx.h" >&5
29876echo $ECHO_N "checking for ut_addr_v6 field in utmpx.h... $ECHO_C" >&6; } 15881$as_echo_n "checking for ut_addr_v6 field in utmpx.h... " >&6; }
29877 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15882 if eval \${$ossh_varname+:} false; then :
29878 echo $ECHO_N "(cached) $ECHO_C" >&6 15883 $as_echo_n "(cached) " >&6
29879else 15884else
29880 15885
29881 cat >conftest.$ac_ext <<_ACEOF 15886 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29882/* confdefs.h. */
29883_ACEOF
29884cat confdefs.h >>conftest.$ac_ext
29885cat >>conftest.$ac_ext <<_ACEOF
29886/* end confdefs.h. */ 15887/* end confdefs.h. */
29887#include <utmpx.h> 15888#include <utmpx.h>
29888 15889
29889_ACEOF 15890_ACEOF
29890if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15891if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29891 $EGREP "ut_addr_v6" >/dev/null 2>&1; then 15892 $EGREP "ut_addr_v6" >/dev/null 2>&1; then :
29892 eval "$ossh_varname=yes" 15893 eval "$ossh_varname=yes"
29893else 15894else
29894 eval "$ossh_varname=no" 15895 eval "$ossh_varname=no"
@@ -29899,41 +15900,35 @@ fi
29899 15900
29900 ossh_result=`eval 'echo $'"$ossh_varname"` 15901 ossh_result=`eval 'echo $'"$ossh_varname"`
29901 if test -n "`echo $ossh_varname`"; then 15902 if test -n "`echo $ossh_varname`"; then
29902 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15903 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29903echo "${ECHO_T}$ossh_result" >&6; } 15904$as_echo "$ossh_result" >&6; }
29904 if test "x$ossh_result" = "xyes"; then 15905 if test "x$ossh_result" = "xyes"; then
29905 15906
29906cat >>confdefs.h <<\_ACEOF 15907$as_echo "#define HAVE_ADDR_V6_IN_UTMPX 1" >>confdefs.h
29907#define HAVE_ADDR_V6_IN_UTMPX 1
29908_ACEOF
29909 15908
29910 fi 15909 fi
29911 else 15910 else
29912 { echo "$as_me:$LINENO: result: no" >&5 15911 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29913echo "${ECHO_T}no" >&6; } 15912$as_echo "no" >&6; }
29914 fi 15913 fi
29915 15914
29916 15915
29917# look for field 'ut_exit' in header 'utmp.h' 15916# look for field 'ut_exit' in header 'utmp.h'
29918 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15917 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29919 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_exit 15918 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_exit
29920 { echo "$as_me:$LINENO: checking for ut_exit field in utmp.h" >&5 15919 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_exit field in utmp.h" >&5
29921echo $ECHO_N "checking for ut_exit field in utmp.h... $ECHO_C" >&6; } 15920$as_echo_n "checking for ut_exit field in utmp.h... " >&6; }
29922 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15921 if eval \${$ossh_varname+:} false; then :
29923 echo $ECHO_N "(cached) $ECHO_C" >&6 15922 $as_echo_n "(cached) " >&6
29924else 15923else
29925 15924
29926 cat >conftest.$ac_ext <<_ACEOF 15925 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29927/* confdefs.h. */
29928_ACEOF
29929cat confdefs.h >>conftest.$ac_ext
29930cat >>conftest.$ac_ext <<_ACEOF
29931/* end confdefs.h. */ 15926/* end confdefs.h. */
29932#include <utmp.h> 15927#include <utmp.h>
29933 15928
29934_ACEOF 15929_ACEOF
29935if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15930if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29936 $EGREP "ut_exit" >/dev/null 2>&1; then 15931 $EGREP "ut_exit" >/dev/null 2>&1; then :
29937 eval "$ossh_varname=yes" 15932 eval "$ossh_varname=yes"
29938else 15933else
29939 eval "$ossh_varname=no" 15934 eval "$ossh_varname=no"
@@ -29944,41 +15939,35 @@ fi
29944 15939
29945 ossh_result=`eval 'echo $'"$ossh_varname"` 15940 ossh_result=`eval 'echo $'"$ossh_varname"`
29946 if test -n "`echo $ossh_varname`"; then 15941 if test -n "`echo $ossh_varname`"; then
29947 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15942 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29948echo "${ECHO_T}$ossh_result" >&6; } 15943$as_echo "$ossh_result" >&6; }
29949 if test "x$ossh_result" = "xyes"; then 15944 if test "x$ossh_result" = "xyes"; then
29950 15945
29951cat >>confdefs.h <<\_ACEOF 15946$as_echo "#define HAVE_EXIT_IN_UTMP 1" >>confdefs.h
29952#define HAVE_EXIT_IN_UTMP 1
29953_ACEOF
29954 15947
29955 fi 15948 fi
29956 else 15949 else
29957 { echo "$as_me:$LINENO: result: no" >&5 15950 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
29958echo "${ECHO_T}no" >&6; } 15951$as_echo "no" >&6; }
29959 fi 15952 fi
29960 15953
29961 15954
29962# look for field 'ut_time' in header 'utmp.h' 15955# look for field 'ut_time' in header 'utmp.h'
29963 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'` 15956 ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
29964 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time 15957 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time
29965 { echo "$as_me:$LINENO: checking for ut_time field in utmp.h" >&5 15958 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmp.h" >&5
29966echo $ECHO_N "checking for ut_time field in utmp.h... $ECHO_C" >&6; } 15959$as_echo_n "checking for ut_time field in utmp.h... " >&6; }
29967 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15960 if eval \${$ossh_varname+:} false; then :
29968 echo $ECHO_N "(cached) $ECHO_C" >&6 15961 $as_echo_n "(cached) " >&6
29969else 15962else
29970 15963
29971 cat >conftest.$ac_ext <<_ACEOF 15964 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
29972/* confdefs.h. */
29973_ACEOF
29974cat confdefs.h >>conftest.$ac_ext
29975cat >>conftest.$ac_ext <<_ACEOF
29976/* end confdefs.h. */ 15965/* end confdefs.h. */
29977#include <utmp.h> 15966#include <utmp.h>
29978 15967
29979_ACEOF 15968_ACEOF
29980if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 15969if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
29981 $EGREP "ut_time" >/dev/null 2>&1; then 15970 $EGREP "ut_time" >/dev/null 2>&1; then :
29982 eval "$ossh_varname=yes" 15971 eval "$ossh_varname=yes"
29983else 15972else
29984 eval "$ossh_varname=no" 15973 eval "$ossh_varname=no"
@@ -29989,41 +15978,35 @@ fi
29989 15978
29990 ossh_result=`eval 'echo $'"$ossh_varname"` 15979 ossh_result=`eval 'echo $'"$ossh_varname"`
29991 if test -n "`echo $ossh_varname`"; then 15980 if test -n "`echo $ossh_varname`"; then
29992 { echo "$as_me:$LINENO: result: $ossh_result" >&5 15981 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
29993echo "${ECHO_T}$ossh_result" >&6; } 15982$as_echo "$ossh_result" >&6; }
29994 if test "x$ossh_result" = "xyes"; then 15983 if test "x$ossh_result" = "xyes"; then
29995 15984
29996cat >>confdefs.h <<\_ACEOF 15985$as_echo "#define HAVE_TIME_IN_UTMP 1" >>confdefs.h
29997#define HAVE_TIME_IN_UTMP 1
29998_ACEOF
29999 15986
30000 fi 15987 fi
30001 else 15988 else
30002 { echo "$as_me:$LINENO: result: no" >&5 15989 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
30003echo "${ECHO_T}no" >&6; } 15990$as_echo "no" >&6; }
30004 fi 15991 fi
30005 15992
30006 15993
30007# look for field 'ut_time' in header 'utmpx.h' 15994# look for field 'ut_time' in header 'utmpx.h'
30008 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 15995 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
30009 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time 15996 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time
30010 { echo "$as_me:$LINENO: checking for ut_time field in utmpx.h" >&5 15997 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmpx.h" >&5
30011echo $ECHO_N "checking for ut_time field in utmpx.h... $ECHO_C" >&6; } 15998$as_echo_n "checking for ut_time field in utmpx.h... " >&6; }
30012 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 15999 if eval \${$ossh_varname+:} false; then :
30013 echo $ECHO_N "(cached) $ECHO_C" >&6 16000 $as_echo_n "(cached) " >&6
30014else 16001else
30015 16002
30016 cat >conftest.$ac_ext <<_ACEOF 16003 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30017/* confdefs.h. */
30018_ACEOF
30019cat confdefs.h >>conftest.$ac_ext
30020cat >>conftest.$ac_ext <<_ACEOF
30021/* end confdefs.h. */ 16004/* end confdefs.h. */
30022#include <utmpx.h> 16005#include <utmpx.h>
30023 16006
30024_ACEOF 16007_ACEOF
30025if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 16008if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
30026 $EGREP "ut_time" >/dev/null 2>&1; then 16009 $EGREP "ut_time" >/dev/null 2>&1; then :
30027 eval "$ossh_varname=yes" 16010 eval "$ossh_varname=yes"
30028else 16011else
30029 eval "$ossh_varname=no" 16012 eval "$ossh_varname=no"
@@ -30034,41 +16017,35 @@ fi
30034 16017
30035 ossh_result=`eval 'echo $'"$ossh_varname"` 16018 ossh_result=`eval 'echo $'"$ossh_varname"`
30036 if test -n "`echo $ossh_varname`"; then 16019 if test -n "`echo $ossh_varname`"; then
30037 { echo "$as_me:$LINENO: result: $ossh_result" >&5 16020 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
30038echo "${ECHO_T}$ossh_result" >&6; } 16021$as_echo "$ossh_result" >&6; }
30039 if test "x$ossh_result" = "xyes"; then 16022 if test "x$ossh_result" = "xyes"; then
30040 16023
30041cat >>confdefs.h <<\_ACEOF 16024$as_echo "#define HAVE_TIME_IN_UTMPX 1" >>confdefs.h
30042#define HAVE_TIME_IN_UTMPX 1
30043_ACEOF
30044 16025
30045 fi 16026 fi
30046 else 16027 else
30047 { echo "$as_me:$LINENO: result: no" >&5 16028 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
30048echo "${ECHO_T}no" >&6; } 16029$as_echo "no" >&6; }
30049 fi 16030 fi
30050 16031
30051 16032
30052# look for field 'ut_tv' in header 'utmpx.h' 16033# look for field 'ut_tv' in header 'utmpx.h'
30053 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'` 16034 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
30054 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv 16035 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv
30055 { echo "$as_me:$LINENO: checking for ut_tv field in utmpx.h" >&5 16036 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmpx.h" >&5
30056echo $ECHO_N "checking for ut_tv field in utmpx.h... $ECHO_C" >&6; } 16037$as_echo_n "checking for ut_tv field in utmpx.h... " >&6; }
30057 if { as_var=$ossh_varname; eval "test \"\${$as_var+set}\" = set"; }; then 16038 if eval \${$ossh_varname+:} false; then :
30058 echo $ECHO_N "(cached) $ECHO_C" >&6 16039 $as_echo_n "(cached) " >&6
30059else 16040else
30060 16041
30061 cat >conftest.$ac_ext <<_ACEOF 16042 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30062/* confdefs.h. */
30063_ACEOF
30064cat confdefs.h >>conftest.$ac_ext
30065cat >>conftest.$ac_ext <<_ACEOF
30066/* end confdefs.h. */ 16043/* end confdefs.h. */
30067#include <utmpx.h> 16044#include <utmpx.h>
30068 16045
30069_ACEOF 16046_ACEOF
30070if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 16047if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
30071 $EGREP "ut_tv" >/dev/null 2>&1; then 16048 $EGREP "ut_tv" >/dev/null 2>&1; then :
30072 eval "$ossh_varname=yes" 16049 eval "$ossh_varname=yes"
30073else 16050else
30074 eval "$ossh_varname=no" 16051 eval "$ossh_varname=no"
@@ -30079,115 +16056,21 @@ fi
30079 16056
30080 ossh_result=`eval 'echo $'"$ossh_varname"` 16057 ossh_result=`eval 'echo $'"$ossh_varname"`
30081 if test -n "`echo $ossh_varname`"; then 16058 if test -n "`echo $ossh_varname`"; then
30082 { echo "$as_me:$LINENO: result: $ossh_result" >&5 16059 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
30083echo "${ECHO_T}$ossh_result" >&6; } 16060$as_echo "$ossh_result" >&6; }
30084 if test "x$ossh_result" = "xyes"; then 16061 if test "x$ossh_result" = "xyes"; then
30085 16062
30086cat >>confdefs.h <<\_ACEOF 16063$as_echo "#define HAVE_TV_IN_UTMPX 1" >>confdefs.h
30087#define HAVE_TV_IN_UTMPX 1
30088_ACEOF
30089 16064
30090 fi 16065 fi
30091 else 16066 else
30092 { echo "$as_me:$LINENO: result: no" >&5 16067 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
30093echo "${ECHO_T}no" >&6; } 16068$as_echo "no" >&6; }
30094 fi 16069 fi
30095 16070
30096 16071
30097{ echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 16072ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
30098echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6; } 16073if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
30099if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then
30100 echo $ECHO_N "(cached) $ECHO_C" >&6
30101else
30102 cat >conftest.$ac_ext <<_ACEOF
30103/* confdefs.h. */
30104_ACEOF
30105cat confdefs.h >>conftest.$ac_ext
30106cat >>conftest.$ac_ext <<_ACEOF
30107/* end confdefs.h. */
30108$ac_includes_default
30109int
30110main ()
30111{
30112static struct stat ac_aggr;
30113if (ac_aggr.st_blksize)
30114return 0;
30115 ;
30116 return 0;
30117}
30118_ACEOF
30119rm -f conftest.$ac_objext
30120if { (ac_try="$ac_compile"
30121case "(($ac_try" in
30122 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30123 *) ac_try_echo=$ac_try;;
30124esac
30125eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30126 (eval "$ac_compile") 2>conftest.er1
30127 ac_status=$?
30128 grep -v '^ *+' conftest.er1 >conftest.err
30129 rm -f conftest.er1
30130 cat conftest.err >&5
30131 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30132 (exit $ac_status); } && {
30133 test -z "$ac_c_werror_flag" ||
30134 test ! -s conftest.err
30135 } && test -s conftest.$ac_objext; then
30136 ac_cv_member_struct_stat_st_blksize=yes
30137else
30138 echo "$as_me: failed program was:" >&5
30139sed 's/^/| /' conftest.$ac_ext >&5
30140
30141 cat >conftest.$ac_ext <<_ACEOF
30142/* confdefs.h. */
30143_ACEOF
30144cat confdefs.h >>conftest.$ac_ext
30145cat >>conftest.$ac_ext <<_ACEOF
30146/* end confdefs.h. */
30147$ac_includes_default
30148int
30149main ()
30150{
30151static struct stat ac_aggr;
30152if (sizeof ac_aggr.st_blksize)
30153return 0;
30154 ;
30155 return 0;
30156}
30157_ACEOF
30158rm -f conftest.$ac_objext
30159if { (ac_try="$ac_compile"
30160case "(($ac_try" in
30161 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30162 *) ac_try_echo=$ac_try;;
30163esac
30164eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30165 (eval "$ac_compile") 2>conftest.er1
30166 ac_status=$?
30167 grep -v '^ *+' conftest.er1 >conftest.err
30168 rm -f conftest.er1
30169 cat conftest.err >&5
30170 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30171 (exit $ac_status); } && {
30172 test -z "$ac_c_werror_flag" ||
30173 test ! -s conftest.err
30174 } && test -s conftest.$ac_objext; then
30175 ac_cv_member_struct_stat_st_blksize=yes
30176else
30177 echo "$as_me: failed program was:" >&5
30178sed 's/^/| /' conftest.$ac_ext >&5
30179
30180 ac_cv_member_struct_stat_st_blksize=no
30181fi
30182
30183rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30184fi
30185
30186rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30187fi
30188{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5
30189echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6; }
30190if test $ac_cv_member_struct_stat_st_blksize = yes; then
30191 16074
30192cat >>confdefs.h <<_ACEOF 16075cat >>confdefs.h <<_ACEOF
30193#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 16076#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
@@ -30196,108 +16079,12 @@ _ACEOF
30196 16079
30197fi 16080fi
30198 16081
30199{ echo "$as_me:$LINENO: checking for struct passwd.pw_gecos" >&5 16082ac_fn_c_check_member "$LINENO" "struct passwd" "pw_gecos" "ac_cv_member_struct_passwd_pw_gecos" "
30200echo $ECHO_N "checking for struct passwd.pw_gecos... $ECHO_C" >&6; }
30201if test "${ac_cv_member_struct_passwd_pw_gecos+set}" = set; then
30202 echo $ECHO_N "(cached) $ECHO_C" >&6
30203else
30204 cat >conftest.$ac_ext <<_ACEOF
30205/* confdefs.h. */
30206_ACEOF
30207cat confdefs.h >>conftest.$ac_ext
30208cat >>conftest.$ac_ext <<_ACEOF
30209/* end confdefs.h. */
30210
30211#include <sys/types.h> 16083#include <sys/types.h>
30212#include <pwd.h> 16084#include <pwd.h>
30213 16085
30214 16086"
30215int 16087if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes; then :
30216main ()
30217{
30218static struct passwd ac_aggr;
30219if (ac_aggr.pw_gecos)
30220return 0;
30221 ;
30222 return 0;
30223}
30224_ACEOF
30225rm -f conftest.$ac_objext
30226if { (ac_try="$ac_compile"
30227case "(($ac_try" in
30228 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30229 *) ac_try_echo=$ac_try;;
30230esac
30231eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30232 (eval "$ac_compile") 2>conftest.er1
30233 ac_status=$?
30234 grep -v '^ *+' conftest.er1 >conftest.err
30235 rm -f conftest.er1
30236 cat conftest.err >&5
30237 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30238 (exit $ac_status); } && {
30239 test -z "$ac_c_werror_flag" ||
30240 test ! -s conftest.err
30241 } && test -s conftest.$ac_objext; then
30242 ac_cv_member_struct_passwd_pw_gecos=yes
30243else
30244 echo "$as_me: failed program was:" >&5
30245sed 's/^/| /' conftest.$ac_ext >&5
30246
30247 cat >conftest.$ac_ext <<_ACEOF
30248/* confdefs.h. */
30249_ACEOF
30250cat confdefs.h >>conftest.$ac_ext
30251cat >>conftest.$ac_ext <<_ACEOF
30252/* end confdefs.h. */
30253
30254#include <sys/types.h>
30255#include <pwd.h>
30256
30257
30258int
30259main ()
30260{
30261static struct passwd ac_aggr;
30262if (sizeof ac_aggr.pw_gecos)
30263return 0;
30264 ;
30265 return 0;
30266}
30267_ACEOF
30268rm -f conftest.$ac_objext
30269if { (ac_try="$ac_compile"
30270case "(($ac_try" in
30271 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30272 *) ac_try_echo=$ac_try;;
30273esac
30274eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30275 (eval "$ac_compile") 2>conftest.er1
30276 ac_status=$?
30277 grep -v '^ *+' conftest.er1 >conftest.err
30278 rm -f conftest.er1
30279 cat conftest.err >&5
30280 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30281 (exit $ac_status); } && {
30282 test -z "$ac_c_werror_flag" ||
30283 test ! -s conftest.err
30284 } && test -s conftest.$ac_objext; then
30285 ac_cv_member_struct_passwd_pw_gecos=yes
30286else
30287 echo "$as_me: failed program was:" >&5
30288sed 's/^/| /' conftest.$ac_ext >&5
30289
30290 ac_cv_member_struct_passwd_pw_gecos=no
30291fi
30292
30293rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30294fi
30295
30296rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30297fi
30298{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_passwd_pw_gecos" >&5
30299echo "${ECHO_T}$ac_cv_member_struct_passwd_pw_gecos" >&6; }
30300if test $ac_cv_member_struct_passwd_pw_gecos = yes; then
30301 16088
30302cat >>confdefs.h <<_ACEOF 16089cat >>confdefs.h <<_ACEOF
30303#define HAVE_STRUCT_PASSWD_PW_GECOS 1 16090#define HAVE_STRUCT_PASSWD_PW_GECOS 1
@@ -30305,108 +16092,12 @@ _ACEOF
30305 16092
30306 16093
30307fi 16094fi
30308{ echo "$as_me:$LINENO: checking for struct passwd.pw_class" >&5 16095ac_fn_c_check_member "$LINENO" "struct passwd" "pw_class" "ac_cv_member_struct_passwd_pw_class" "
30309echo $ECHO_N "checking for struct passwd.pw_class... $ECHO_C" >&6; }
30310if test "${ac_cv_member_struct_passwd_pw_class+set}" = set; then
30311 echo $ECHO_N "(cached) $ECHO_C" >&6
30312else
30313 cat >conftest.$ac_ext <<_ACEOF
30314/* confdefs.h. */
30315_ACEOF
30316cat confdefs.h >>conftest.$ac_ext
30317cat >>conftest.$ac_ext <<_ACEOF
30318/* end confdefs.h. */
30319
30320#include <sys/types.h>
30321#include <pwd.h>
30322
30323
30324int
30325main ()
30326{
30327static struct passwd ac_aggr;
30328if (ac_aggr.pw_class)
30329return 0;
30330 ;
30331 return 0;
30332}
30333_ACEOF
30334rm -f conftest.$ac_objext
30335if { (ac_try="$ac_compile"
30336case "(($ac_try" in
30337 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30338 *) ac_try_echo=$ac_try;;
30339esac
30340eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30341 (eval "$ac_compile") 2>conftest.er1
30342 ac_status=$?
30343 grep -v '^ *+' conftest.er1 >conftest.err
30344 rm -f conftest.er1
30345 cat conftest.err >&5
30346 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30347 (exit $ac_status); } && {
30348 test -z "$ac_c_werror_flag" ||
30349 test ! -s conftest.err
30350 } && test -s conftest.$ac_objext; then
30351 ac_cv_member_struct_passwd_pw_class=yes
30352else
30353 echo "$as_me: failed program was:" >&5
30354sed 's/^/| /' conftest.$ac_ext >&5
30355
30356 cat >conftest.$ac_ext <<_ACEOF
30357/* confdefs.h. */
30358_ACEOF
30359cat confdefs.h >>conftest.$ac_ext
30360cat >>conftest.$ac_ext <<_ACEOF
30361/* end confdefs.h. */
30362
30363#include <sys/types.h> 16096#include <sys/types.h>
30364#include <pwd.h> 16097#include <pwd.h>
30365 16098
30366 16099"
30367int 16100if test "x$ac_cv_member_struct_passwd_pw_class" = xyes; then :
30368main ()
30369{
30370static struct passwd ac_aggr;
30371if (sizeof ac_aggr.pw_class)
30372return 0;
30373 ;
30374 return 0;
30375}
30376_ACEOF
30377rm -f conftest.$ac_objext
30378if { (ac_try="$ac_compile"
30379case "(($ac_try" in
30380 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30381 *) ac_try_echo=$ac_try;;
30382esac
30383eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30384 (eval "$ac_compile") 2>conftest.er1
30385 ac_status=$?
30386 grep -v '^ *+' conftest.er1 >conftest.err
30387 rm -f conftest.er1
30388 cat conftest.err >&5
30389 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30390 (exit $ac_status); } && {
30391 test -z "$ac_c_werror_flag" ||
30392 test ! -s conftest.err
30393 } && test -s conftest.$ac_objext; then
30394 ac_cv_member_struct_passwd_pw_class=yes
30395else
30396 echo "$as_me: failed program was:" >&5
30397sed 's/^/| /' conftest.$ac_ext >&5
30398
30399 ac_cv_member_struct_passwd_pw_class=no
30400fi
30401
30402rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30403fi
30404
30405rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30406fi
30407{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_passwd_pw_class" >&5
30408echo "${ECHO_T}$ac_cv_member_struct_passwd_pw_class" >&6; }
30409if test $ac_cv_member_struct_passwd_pw_class = yes; then
30410 16101
30411cat >>confdefs.h <<_ACEOF 16102cat >>confdefs.h <<_ACEOF
30412#define HAVE_STRUCT_PASSWD_PW_CLASS 1 16103#define HAVE_STRUCT_PASSWD_PW_CLASS 1
@@ -30414,108 +16105,12 @@ _ACEOF
30414 16105
30415 16106
30416fi 16107fi
30417{ echo "$as_me:$LINENO: checking for struct passwd.pw_change" >&5 16108ac_fn_c_check_member "$LINENO" "struct passwd" "pw_change" "ac_cv_member_struct_passwd_pw_change" "
30418echo $ECHO_N "checking for struct passwd.pw_change... $ECHO_C" >&6; }
30419if test "${ac_cv_member_struct_passwd_pw_change+set}" = set; then
30420 echo $ECHO_N "(cached) $ECHO_C" >&6
30421else
30422 cat >conftest.$ac_ext <<_ACEOF
30423/* confdefs.h. */
30424_ACEOF
30425cat confdefs.h >>conftest.$ac_ext
30426cat >>conftest.$ac_ext <<_ACEOF
30427/* end confdefs.h. */
30428
30429#include <sys/types.h>
30430#include <pwd.h>
30431
30432
30433int
30434main ()
30435{
30436static struct passwd ac_aggr;
30437if (ac_aggr.pw_change)
30438return 0;
30439 ;
30440 return 0;
30441}
30442_ACEOF
30443rm -f conftest.$ac_objext
30444if { (ac_try="$ac_compile"
30445case "(($ac_try" in
30446 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30447 *) ac_try_echo=$ac_try;;
30448esac
30449eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30450 (eval "$ac_compile") 2>conftest.er1
30451 ac_status=$?
30452 grep -v '^ *+' conftest.er1 >conftest.err
30453 rm -f conftest.er1
30454 cat conftest.err >&5
30455 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30456 (exit $ac_status); } && {
30457 test -z "$ac_c_werror_flag" ||
30458 test ! -s conftest.err
30459 } && test -s conftest.$ac_objext; then
30460 ac_cv_member_struct_passwd_pw_change=yes
30461else
30462 echo "$as_me: failed program was:" >&5
30463sed 's/^/| /' conftest.$ac_ext >&5
30464
30465 cat >conftest.$ac_ext <<_ACEOF
30466/* confdefs.h. */
30467_ACEOF
30468cat confdefs.h >>conftest.$ac_ext
30469cat >>conftest.$ac_ext <<_ACEOF
30470/* end confdefs.h. */
30471
30472#include <sys/types.h> 16109#include <sys/types.h>
30473#include <pwd.h> 16110#include <pwd.h>
30474 16111
30475 16112"
30476int 16113if test "x$ac_cv_member_struct_passwd_pw_change" = xyes; then :
30477main ()
30478{
30479static struct passwd ac_aggr;
30480if (sizeof ac_aggr.pw_change)
30481return 0;
30482 ;
30483 return 0;
30484}
30485_ACEOF
30486rm -f conftest.$ac_objext
30487if { (ac_try="$ac_compile"
30488case "(($ac_try" in
30489 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30490 *) ac_try_echo=$ac_try;;
30491esac
30492eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30493 (eval "$ac_compile") 2>conftest.er1
30494 ac_status=$?
30495 grep -v '^ *+' conftest.er1 >conftest.err
30496 rm -f conftest.er1
30497 cat conftest.err >&5
30498 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30499 (exit $ac_status); } && {
30500 test -z "$ac_c_werror_flag" ||
30501 test ! -s conftest.err
30502 } && test -s conftest.$ac_objext; then
30503 ac_cv_member_struct_passwd_pw_change=yes
30504else
30505 echo "$as_me: failed program was:" >&5
30506sed 's/^/| /' conftest.$ac_ext >&5
30507
30508 ac_cv_member_struct_passwd_pw_change=no
30509fi
30510
30511rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30512fi
30513
30514rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30515fi
30516{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_passwd_pw_change" >&5
30517echo "${ECHO_T}$ac_cv_member_struct_passwd_pw_change" >&6; }
30518if test $ac_cv_member_struct_passwd_pw_change = yes; then
30519 16114
30520cat >>confdefs.h <<_ACEOF 16115cat >>confdefs.h <<_ACEOF
30521#define HAVE_STRUCT_PASSWD_PW_CHANGE 1 16116#define HAVE_STRUCT_PASSWD_PW_CHANGE 1
@@ -30523,108 +16118,12 @@ _ACEOF
30523 16118
30524 16119
30525fi 16120fi
30526{ echo "$as_me:$LINENO: checking for struct passwd.pw_expire" >&5 16121ac_fn_c_check_member "$LINENO" "struct passwd" "pw_expire" "ac_cv_member_struct_passwd_pw_expire" "
30527echo $ECHO_N "checking for struct passwd.pw_expire... $ECHO_C" >&6; }
30528if test "${ac_cv_member_struct_passwd_pw_expire+set}" = set; then
30529 echo $ECHO_N "(cached) $ECHO_C" >&6
30530else
30531 cat >conftest.$ac_ext <<_ACEOF
30532/* confdefs.h. */
30533_ACEOF
30534cat confdefs.h >>conftest.$ac_ext
30535cat >>conftest.$ac_ext <<_ACEOF
30536/* end confdefs.h. */
30537
30538#include <sys/types.h>
30539#include <pwd.h>
30540
30541
30542int
30543main ()
30544{
30545static struct passwd ac_aggr;
30546if (ac_aggr.pw_expire)
30547return 0;
30548 ;
30549 return 0;
30550}
30551_ACEOF
30552rm -f conftest.$ac_objext
30553if { (ac_try="$ac_compile"
30554case "(($ac_try" in
30555 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30556 *) ac_try_echo=$ac_try;;
30557esac
30558eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30559 (eval "$ac_compile") 2>conftest.er1
30560 ac_status=$?
30561 grep -v '^ *+' conftest.er1 >conftest.err
30562 rm -f conftest.er1
30563 cat conftest.err >&5
30564 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30565 (exit $ac_status); } && {
30566 test -z "$ac_c_werror_flag" ||
30567 test ! -s conftest.err
30568 } && test -s conftest.$ac_objext; then
30569 ac_cv_member_struct_passwd_pw_expire=yes
30570else
30571 echo "$as_me: failed program was:" >&5
30572sed 's/^/| /' conftest.$ac_ext >&5
30573
30574 cat >conftest.$ac_ext <<_ACEOF
30575/* confdefs.h. */
30576_ACEOF
30577cat confdefs.h >>conftest.$ac_ext
30578cat >>conftest.$ac_ext <<_ACEOF
30579/* end confdefs.h. */
30580
30581#include <sys/types.h> 16122#include <sys/types.h>
30582#include <pwd.h> 16123#include <pwd.h>
30583 16124
30584 16125"
30585int 16126if test "x$ac_cv_member_struct_passwd_pw_expire" = xyes; then :
30586main ()
30587{
30588static struct passwd ac_aggr;
30589if (sizeof ac_aggr.pw_expire)
30590return 0;
30591 ;
30592 return 0;
30593}
30594_ACEOF
30595rm -f conftest.$ac_objext
30596if { (ac_try="$ac_compile"
30597case "(($ac_try" in
30598 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30599 *) ac_try_echo=$ac_try;;
30600esac
30601eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30602 (eval "$ac_compile") 2>conftest.er1
30603 ac_status=$?
30604 grep -v '^ *+' conftest.er1 >conftest.err
30605 rm -f conftest.er1
30606 cat conftest.err >&5
30607 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30608 (exit $ac_status); } && {
30609 test -z "$ac_c_werror_flag" ||
30610 test ! -s conftest.err
30611 } && test -s conftest.$ac_objext; then
30612 ac_cv_member_struct_passwd_pw_expire=yes
30613else
30614 echo "$as_me: failed program was:" >&5
30615sed 's/^/| /' conftest.$ac_ext >&5
30616
30617 ac_cv_member_struct_passwd_pw_expire=no
30618fi
30619
30620rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30621fi
30622
30623rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30624fi
30625{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_passwd_pw_expire" >&5
30626echo "${ECHO_T}$ac_cv_member_struct_passwd_pw_expire" >&6; }
30627if test $ac_cv_member_struct_passwd_pw_expire = yes; then
30628 16127
30629cat >>confdefs.h <<_ACEOF 16128cat >>confdefs.h <<_ACEOF
30630#define HAVE_STRUCT_PASSWD_PW_EXPIRE 1 16129#define HAVE_STRUCT_PASSWD_PW_EXPIRE 1
@@ -30634,18 +16133,7 @@ _ACEOF
30634fi 16133fi
30635 16134
30636 16135
30637{ echo "$as_me:$LINENO: checking for struct __res_state.retrans" >&5 16136ac_fn_c_check_member "$LINENO" "struct __res_state" "retrans" "ac_cv_member_struct___res_state_retrans" "
30638echo $ECHO_N "checking for struct __res_state.retrans... $ECHO_C" >&6; }
30639if test "${ac_cv_member_struct___res_state_retrans+set}" = set; then
30640 echo $ECHO_N "(cached) $ECHO_C" >&6
30641else
30642 cat >conftest.$ac_ext <<_ACEOF
30643/* confdefs.h. */
30644_ACEOF
30645cat confdefs.h >>conftest.$ac_ext
30646cat >>conftest.$ac_ext <<_ACEOF
30647/* end confdefs.h. */
30648
30649#include <stdio.h> 16137#include <stdio.h>
30650#if HAVE_SYS_TYPES_H 16138#if HAVE_SYS_TYPES_H
30651# include <sys/types.h> 16139# include <sys/types.h>
@@ -30654,119 +16142,23 @@ cat >>conftest.$ac_ext <<_ACEOF
30654#include <arpa/nameser.h> 16142#include <arpa/nameser.h>
30655#include <resolv.h> 16143#include <resolv.h>
30656 16144
16145"
16146if test "x$ac_cv_member_struct___res_state_retrans" = xyes; then :
30657 16147
30658int
30659main ()
30660{
30661static struct __res_state ac_aggr;
30662if (ac_aggr.retrans)
30663return 0;
30664 ;
30665 return 0;
30666}
30667_ACEOF
30668rm -f conftest.$ac_objext
30669if { (ac_try="$ac_compile"
30670case "(($ac_try" in
30671 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30672 *) ac_try_echo=$ac_try;;
30673esac
30674eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30675 (eval "$ac_compile") 2>conftest.er1
30676 ac_status=$?
30677 grep -v '^ *+' conftest.er1 >conftest.err
30678 rm -f conftest.er1
30679 cat conftest.err >&5
30680 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30681 (exit $ac_status); } && {
30682 test -z "$ac_c_werror_flag" ||
30683 test ! -s conftest.err
30684 } && test -s conftest.$ac_objext; then
30685 ac_cv_member_struct___res_state_retrans=yes
30686else
30687 echo "$as_me: failed program was:" >&5
30688sed 's/^/| /' conftest.$ac_ext >&5
30689
30690 cat >conftest.$ac_ext <<_ACEOF
30691/* confdefs.h. */
30692_ACEOF
30693cat confdefs.h >>conftest.$ac_ext
30694cat >>conftest.$ac_ext <<_ACEOF
30695/* end confdefs.h. */
30696
30697#include <stdio.h>
30698#if HAVE_SYS_TYPES_H
30699# include <sys/types.h>
30700#endif
30701#include <netinet/in.h>
30702#include <arpa/nameser.h>
30703#include <resolv.h>
30704
30705
30706int
30707main ()
30708{
30709static struct __res_state ac_aggr;
30710if (sizeof ac_aggr.retrans)
30711return 0;
30712 ;
30713 return 0;
30714}
30715_ACEOF
30716rm -f conftest.$ac_objext
30717if { (ac_try="$ac_compile"
30718case "(($ac_try" in
30719 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30720 *) ac_try_echo=$ac_try;;
30721esac
30722eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30723 (eval "$ac_compile") 2>conftest.er1
30724 ac_status=$?
30725 grep -v '^ *+' conftest.er1 >conftest.err
30726 rm -f conftest.er1
30727 cat conftest.err >&5
30728 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30729 (exit $ac_status); } && {
30730 test -z "$ac_c_werror_flag" ||
30731 test ! -s conftest.err
30732 } && test -s conftest.$ac_objext; then
30733 ac_cv_member_struct___res_state_retrans=yes
30734else
30735 echo "$as_me: failed program was:" >&5
30736sed 's/^/| /' conftest.$ac_ext >&5
30737
30738 ac_cv_member_struct___res_state_retrans=no
30739fi
30740
30741rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30742fi
30743
30744rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30745fi
30746{ echo "$as_me:$LINENO: result: $ac_cv_member_struct___res_state_retrans" >&5
30747echo "${ECHO_T}$ac_cv_member_struct___res_state_retrans" >&6; }
30748if test $ac_cv_member_struct___res_state_retrans = yes; then
30749 :
30750else 16148else
30751 16149
30752cat >>confdefs.h <<\_ACEOF 16150$as_echo "#define __res_state state" >>confdefs.h
30753#define __res_state state
30754_ACEOF
30755 16151
30756fi 16152fi
30757 16153
30758 16154
30759{ echo "$as_me:$LINENO: checking for ss_family field in struct sockaddr_storage" >&5 16155{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ss_family field in struct sockaddr_storage" >&5
30760echo $ECHO_N "checking for ss_family field in struct sockaddr_storage... $ECHO_C" >&6; } 16156$as_echo_n "checking for ss_family field in struct sockaddr_storage... " >&6; }
30761if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then 16157if ${ac_cv_have_ss_family_in_struct_ss+:} false; then :
30762 echo $ECHO_N "(cached) $ECHO_C" >&6 16158 $as_echo_n "(cached) " >&6
30763else 16159else
30764 16160
30765 cat >conftest.$ac_ext <<_ACEOF 16161 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30766/* confdefs.h. */
30767_ACEOF
30768cat confdefs.h >>conftest.$ac_ext
30769cat >>conftest.$ac_ext <<_ACEOF
30770/* end confdefs.h. */ 16162/* end confdefs.h. */
30771 16163
30772#include <sys/types.h> 16164#include <sys/types.h>
@@ -30780,55 +16172,29 @@ main ()
30780 return 0; 16172 return 0;
30781} 16173}
30782_ACEOF 16174_ACEOF
30783rm -f conftest.$ac_objext 16175if ac_fn_c_try_compile "$LINENO"; then :
30784if { (ac_try="$ac_compile"
30785case "(($ac_try" in
30786 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30787 *) ac_try_echo=$ac_try;;
30788esac
30789eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30790 (eval "$ac_compile") 2>conftest.er1
30791 ac_status=$?
30792 grep -v '^ *+' conftest.er1 >conftest.err
30793 rm -f conftest.er1
30794 cat conftest.err >&5
30795 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30796 (exit $ac_status); } && {
30797 test -z "$ac_c_werror_flag" ||
30798 test ! -s conftest.err
30799 } && test -s conftest.$ac_objext; then
30800 ac_cv_have_ss_family_in_struct_ss="yes" 16176 ac_cv_have_ss_family_in_struct_ss="yes"
30801else 16177else
30802 echo "$as_me: failed program was:" >&5 16178 ac_cv_have_ss_family_in_struct_ss="no"
30803sed 's/^/| /' conftest.$ac_ext >&5
30804
30805 ac_cv_have_ss_family_in_struct_ss="no"
30806fi 16179fi
30807
30808rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16180rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30809 16181
30810fi 16182fi
30811{ echo "$as_me:$LINENO: result: $ac_cv_have_ss_family_in_struct_ss" >&5 16183{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ss_family_in_struct_ss" >&5
30812echo "${ECHO_T}$ac_cv_have_ss_family_in_struct_ss" >&6; } 16184$as_echo "$ac_cv_have_ss_family_in_struct_ss" >&6; }
30813if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then 16185if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
30814 16186
30815cat >>confdefs.h <<\_ACEOF 16187$as_echo "#define HAVE_SS_FAMILY_IN_SS 1" >>confdefs.h
30816#define HAVE_SS_FAMILY_IN_SS 1
30817_ACEOF
30818 16188
30819fi 16189fi
30820 16190
30821{ echo "$as_me:$LINENO: checking for __ss_family field in struct sockaddr_storage" >&5 16191{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __ss_family field in struct sockaddr_storage" >&5
30822echo $ECHO_N "checking for __ss_family field in struct sockaddr_storage... $ECHO_C" >&6; } 16192$as_echo_n "checking for __ss_family field in struct sockaddr_storage... " >&6; }
30823if test "${ac_cv_have___ss_family_in_struct_ss+set}" = set; then 16193if ${ac_cv_have___ss_family_in_struct_ss+:} false; then :
30824 echo $ECHO_N "(cached) $ECHO_C" >&6 16194 $as_echo_n "(cached) " >&6
30825else 16195else
30826 16196
30827 cat >conftest.$ac_ext <<_ACEOF 16197 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30828/* confdefs.h. */
30829_ACEOF
30830cat confdefs.h >>conftest.$ac_ext
30831cat >>conftest.$ac_ext <<_ACEOF
30832/* end confdefs.h. */ 16198/* end confdefs.h. */
30833 16199
30834#include <sys/types.h> 16200#include <sys/types.h>
@@ -30842,56 +16208,30 @@ main ()
30842 return 0; 16208 return 0;
30843} 16209}
30844_ACEOF 16210_ACEOF
30845rm -f conftest.$ac_objext 16211if ac_fn_c_try_compile "$LINENO"; then :
30846if { (ac_try="$ac_compile"
30847case "(($ac_try" in
30848 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30849 *) ac_try_echo=$ac_try;;
30850esac
30851eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30852 (eval "$ac_compile") 2>conftest.er1
30853 ac_status=$?
30854 grep -v '^ *+' conftest.er1 >conftest.err
30855 rm -f conftest.er1
30856 cat conftest.err >&5
30857 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30858 (exit $ac_status); } && {
30859 test -z "$ac_c_werror_flag" ||
30860 test ! -s conftest.err
30861 } && test -s conftest.$ac_objext; then
30862 ac_cv_have___ss_family_in_struct_ss="yes" 16212 ac_cv_have___ss_family_in_struct_ss="yes"
30863else 16213else
30864 echo "$as_me: failed program was:" >&5 16214 ac_cv_have___ss_family_in_struct_ss="no"
30865sed 's/^/| /' conftest.$ac_ext >&5
30866
30867 ac_cv_have___ss_family_in_struct_ss="no"
30868 16215
30869fi 16216fi
30870
30871rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16217rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30872 16218
30873fi 16219fi
30874{ echo "$as_me:$LINENO: result: $ac_cv_have___ss_family_in_struct_ss" >&5 16220{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___ss_family_in_struct_ss" >&5
30875echo "${ECHO_T}$ac_cv_have___ss_family_in_struct_ss" >&6; } 16221$as_echo "$ac_cv_have___ss_family_in_struct_ss" >&6; }
30876if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then 16222if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
30877 16223
30878cat >>confdefs.h <<\_ACEOF 16224$as_echo "#define HAVE___SS_FAMILY_IN_SS 1" >>confdefs.h
30879#define HAVE___SS_FAMILY_IN_SS 1
30880_ACEOF
30881 16225
30882fi 16226fi
30883 16227
30884{ echo "$as_me:$LINENO: checking for msg_accrights field in struct msghdr" >&5 16228{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for msg_accrights field in struct msghdr" >&5
30885echo $ECHO_N "checking for msg_accrights field in struct msghdr... $ECHO_C" >&6; } 16229$as_echo_n "checking for msg_accrights field in struct msghdr... " >&6; }
30886if test "${ac_cv_have_accrights_in_msghdr+set}" = set; then 16230if ${ac_cv_have_accrights_in_msghdr+:} false; then :
30887 echo $ECHO_N "(cached) $ECHO_C" >&6 16231 $as_echo_n "(cached) " >&6
30888else 16232else
30889 16233
30890 cat >conftest.$ac_ext <<_ACEOF 16234 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30891/* confdefs.h. */
30892_ACEOF
30893cat confdefs.h >>conftest.$ac_ext
30894cat >>conftest.$ac_ext <<_ACEOF
30895/* end confdefs.h. */ 16235/* end confdefs.h. */
30896 16236
30897#include <sys/types.h> 16237#include <sys/types.h>
@@ -30914,52 +16254,26 @@ exit(0);
30914 return 0; 16254 return 0;
30915} 16255}
30916_ACEOF 16256_ACEOF
30917rm -f conftest.$ac_objext 16257if ac_fn_c_try_compile "$LINENO"; then :
30918if { (ac_try="$ac_compile"
30919case "(($ac_try" in
30920 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30921 *) ac_try_echo=$ac_try;;
30922esac
30923eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30924 (eval "$ac_compile") 2>conftest.er1
30925 ac_status=$?
30926 grep -v '^ *+' conftest.er1 >conftest.err
30927 rm -f conftest.er1
30928 cat conftest.err >&5
30929 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30930 (exit $ac_status); } && {
30931 test -z "$ac_c_werror_flag" ||
30932 test ! -s conftest.err
30933 } && test -s conftest.$ac_objext; then
30934 ac_cv_have_accrights_in_msghdr="yes" 16258 ac_cv_have_accrights_in_msghdr="yes"
30935else 16259else
30936 echo "$as_me: failed program was:" >&5 16260 ac_cv_have_accrights_in_msghdr="no"
30937sed 's/^/| /' conftest.$ac_ext >&5
30938
30939 ac_cv_have_accrights_in_msghdr="no"
30940 16261
30941fi 16262fi
30942
30943rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16263rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
30944 16264
30945fi 16265fi
30946{ echo "$as_me:$LINENO: result: $ac_cv_have_accrights_in_msghdr" >&5 16266{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_accrights_in_msghdr" >&5
30947echo "${ECHO_T}$ac_cv_have_accrights_in_msghdr" >&6; } 16267$as_echo "$ac_cv_have_accrights_in_msghdr" >&6; }
30948if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then 16268if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
30949 16269
30950cat >>confdefs.h <<\_ACEOF 16270$as_echo "#define HAVE_ACCRIGHTS_IN_MSGHDR 1" >>confdefs.h
30951#define HAVE_ACCRIGHTS_IN_MSGHDR 1
30952_ACEOF
30953 16271
30954fi 16272fi
30955 16273
30956{ echo "$as_me:$LINENO: checking if struct statvfs.f_fsid is integral type" >&5 16274{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct statvfs.f_fsid is integral type" >&5
30957echo $ECHO_N "checking if struct statvfs.f_fsid is integral type... $ECHO_C" >&6; } 16275$as_echo_n "checking if struct statvfs.f_fsid is integral type... " >&6; }
30958cat >conftest.$ac_ext <<_ACEOF 16276cat confdefs.h - <<_ACEOF >conftest.$ac_ext
30959/* confdefs.h. */
30960_ACEOF
30961cat confdefs.h >>conftest.$ac_ext
30962cat >>conftest.$ac_ext <<_ACEOF
30963/* end confdefs.h. */ 16277/* end confdefs.h. */
30964 16278
30965#include <sys/param.h> 16279#include <sys/param.h>
@@ -30982,39 +16296,16 @@ main ()
30982 return 0; 16296 return 0;
30983} 16297}
30984_ACEOF 16298_ACEOF
30985rm -f conftest.$ac_objext 16299if ac_fn_c_try_compile "$LINENO"; then :
30986if { (ac_try="$ac_compile" 16300 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
30987case "(($ac_try" in 16301$as_echo "yes" >&6; }
30988 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
30989 *) ac_try_echo=$ac_try;;
30990esac
30991eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
30992 (eval "$ac_compile") 2>conftest.er1
30993 ac_status=$?
30994 grep -v '^ *+' conftest.er1 >conftest.err
30995 rm -f conftest.er1
30996 cat conftest.err >&5
30997 echo "$as_me:$LINENO: \$? = $ac_status" >&5
30998 (exit $ac_status); } && {
30999 test -z "$ac_c_werror_flag" ||
31000 test ! -s conftest.err
31001 } && test -s conftest.$ac_objext; then
31002 { echo "$as_me:$LINENO: result: yes" >&5
31003echo "${ECHO_T}yes" >&6; }
31004else 16302else
31005 echo "$as_me: failed program was:" >&5 16303 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
31006sed 's/^/| /' conftest.$ac_ext >&5 16304$as_echo "no" >&6; }
31007
31008 { echo "$as_me:$LINENO: result: no" >&5
31009echo "${ECHO_T}no" >&6; }
31010 16305
31011 { echo "$as_me:$LINENO: checking if fsid_t has member val" >&5 16306 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsid_t has member val" >&5
31012echo $ECHO_N "checking if fsid_t has member val... $ECHO_C" >&6; } 16307$as_echo_n "checking if fsid_t has member val... " >&6; }
31013 cat >conftest.$ac_ext <<_ACEOF 16308 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31014/* confdefs.h. */
31015_ACEOF
31016cat confdefs.h >>conftest.$ac_ext
31017cat >>conftest.$ac_ext <<_ACEOF
31018/* end confdefs.h. */ 16309/* end confdefs.h. */
31019 16310
31020#include <sys/types.h> 16311#include <sys/types.h>
@@ -31028,47 +16319,21 @@ main ()
31028 return 0; 16319 return 0;
31029} 16320}
31030_ACEOF 16321_ACEOF
31031rm -f conftest.$ac_objext 16322if ac_fn_c_try_compile "$LINENO"; then :
31032if { (ac_try="$ac_compile" 16323 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
31033case "(($ac_try" in 16324$as_echo "yes" >&6; }
31034 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31035 *) ac_try_echo=$ac_try;;
31036esac
31037eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31038 (eval "$ac_compile") 2>conftest.er1
31039 ac_status=$?
31040 grep -v '^ *+' conftest.er1 >conftest.err
31041 rm -f conftest.er1
31042 cat conftest.err >&5
31043 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31044 (exit $ac_status); } && {
31045 test -z "$ac_c_werror_flag" ||
31046 test ! -s conftest.err
31047 } && test -s conftest.$ac_objext; then
31048 { echo "$as_me:$LINENO: result: yes" >&5
31049echo "${ECHO_T}yes" >&6; }
31050 16325
31051cat >>confdefs.h <<\_ACEOF 16326$as_echo "#define FSID_HAS_VAL 1" >>confdefs.h
31052#define FSID_HAS_VAL 1
31053_ACEOF
31054 16327
31055else 16328else
31056 echo "$as_me: failed program was:" >&5 16329 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
31057sed 's/^/| /' conftest.$ac_ext >&5 16330$as_echo "no" >&6; }
31058
31059 { echo "$as_me:$LINENO: result: no" >&5
31060echo "${ECHO_T}no" >&6; }
31061fi 16331fi
31062
31063rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16332rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
31064 16333
31065 { echo "$as_me:$LINENO: checking if f_fsid has member __val" >&5 16334 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if f_fsid has member __val" >&5
31066echo $ECHO_N "checking if f_fsid has member __val... $ECHO_C" >&6; } 16335$as_echo_n "checking if f_fsid has member __val... " >&6; }
31067 cat >conftest.$ac_ext <<_ACEOF 16336 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31068/* confdefs.h. */
31069_ACEOF
31070cat confdefs.h >>conftest.$ac_ext
31071cat >>conftest.$ac_ext <<_ACEOF
31072/* end confdefs.h. */ 16337/* end confdefs.h. */
31073 16338
31074#include <sys/types.h> 16339#include <sys/types.h>
@@ -31082,55 +16347,28 @@ main ()
31082 return 0; 16347 return 0;
31083} 16348}
31084_ACEOF 16349_ACEOF
31085rm -f conftest.$ac_objext 16350if ac_fn_c_try_compile "$LINENO"; then :
31086if { (ac_try="$ac_compile" 16351 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
31087case "(($ac_try" in 16352$as_echo "yes" >&6; }
31088 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31089 *) ac_try_echo=$ac_try;;
31090esac
31091eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31092 (eval "$ac_compile") 2>conftest.er1
31093 ac_status=$?
31094 grep -v '^ *+' conftest.er1 >conftest.err
31095 rm -f conftest.er1
31096 cat conftest.err >&5
31097 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31098 (exit $ac_status); } && {
31099 test -z "$ac_c_werror_flag" ||
31100 test ! -s conftest.err
31101 } && test -s conftest.$ac_objext; then
31102 { echo "$as_me:$LINENO: result: yes" >&5
31103echo "${ECHO_T}yes" >&6; }
31104 16353
31105cat >>confdefs.h <<\_ACEOF 16354$as_echo "#define FSID_HAS___VAL 1" >>confdefs.h
31106#define FSID_HAS___VAL 1
31107_ACEOF
31108 16355
31109else 16356else
31110 echo "$as_me: failed program was:" >&5 16357 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
31111sed 's/^/| /' conftest.$ac_ext >&5 16358$as_echo "no" >&6; }
31112
31113 { echo "$as_me:$LINENO: result: no" >&5
31114echo "${ECHO_T}no" >&6; }
31115fi 16359fi
31116
31117rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16360rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
31118 16361
31119fi 16362fi
31120
31121rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16363rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
31122 16364
31123{ echo "$as_me:$LINENO: checking for msg_control field in struct msghdr" >&5 16365{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for msg_control field in struct msghdr" >&5
31124echo $ECHO_N "checking for msg_control field in struct msghdr... $ECHO_C" >&6; } 16366$as_echo_n "checking for msg_control field in struct msghdr... " >&6; }
31125if test "${ac_cv_have_control_in_msghdr+set}" = set; then 16367if ${ac_cv_have_control_in_msghdr+:} false; then :
31126 echo $ECHO_N "(cached) $ECHO_C" >&6 16368 $as_echo_n "(cached) " >&6
31127else 16369else
31128 16370
31129 cat >conftest.$ac_ext <<_ACEOF 16371 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31130/* confdefs.h. */
31131_ACEOF
31132cat confdefs.h >>conftest.$ac_ext
31133cat >>conftest.$ac_ext <<_ACEOF
31134/* end confdefs.h. */ 16372/* end confdefs.h. */
31135 16373
31136#include <sys/types.h> 16374#include <sys/types.h>
@@ -31153,56 +16391,30 @@ exit(0);
31153 return 0; 16391 return 0;
31154} 16392}
31155_ACEOF 16393_ACEOF
31156rm -f conftest.$ac_objext 16394if ac_fn_c_try_compile "$LINENO"; then :
31157if { (ac_try="$ac_compile"
31158case "(($ac_try" in
31159 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31160 *) ac_try_echo=$ac_try;;
31161esac
31162eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31163 (eval "$ac_compile") 2>conftest.er1
31164 ac_status=$?
31165 grep -v '^ *+' conftest.er1 >conftest.err
31166 rm -f conftest.er1
31167 cat conftest.err >&5
31168 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31169 (exit $ac_status); } && {
31170 test -z "$ac_c_werror_flag" ||
31171 test ! -s conftest.err
31172 } && test -s conftest.$ac_objext; then
31173 ac_cv_have_control_in_msghdr="yes" 16395 ac_cv_have_control_in_msghdr="yes"
31174else 16396else
31175 echo "$as_me: failed program was:" >&5 16397 ac_cv_have_control_in_msghdr="no"
31176sed 's/^/| /' conftest.$ac_ext >&5
31177
31178 ac_cv_have_control_in_msghdr="no"
31179 16398
31180fi 16399fi
31181
31182rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 16400rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
31183 16401
31184fi 16402fi
31185{ echo "$as_me:$LINENO: result: $ac_cv_have_control_in_msghdr" >&5 16403{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_control_in_msghdr" >&5
31186echo "${ECHO_T}$ac_cv_have_control_in_msghdr" >&6; } 16404$as_echo "$ac_cv_have_control_in_msghdr" >&6; }
31187if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then 16405if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
31188 16406
31189cat >>confdefs.h <<\_ACEOF 16407$as_echo "#define HAVE_CONTROL_IN_MSGHDR 1" >>confdefs.h
31190#define HAVE_CONTROL_IN_MSGHDR 1
31191_ACEOF
31192 16408
31193fi 16409fi
31194 16410
31195{ echo "$as_me:$LINENO: checking if libc defines __progname" >&5 16411{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines __progname" >&5
31196echo $ECHO_N "checking if libc defines __progname... $ECHO_C" >&6; } 16412$as_echo_n "checking if libc defines __progname... " >&6; }
31197if test "${ac_cv_libc_defines___progname+set}" = set; then 16413if ${ac_cv_libc_defines___progname+:} false; then :
31198 echo $ECHO_N "(cached) $ECHO_C" >&6 16414 $as_echo_n "(cached) " >&6
31199else 16415else
31200 16416
31201 cat >conftest.$ac_ext <<_ACEOF 16417 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31202/* confdefs.h. */
31203_ACEOF
31204cat confdefs.h >>conftest.$ac_ext
31205cat >>conftest.$ac_ext <<_ACEOF
31206/* end confdefs.h. */ 16418/* end confdefs.h. */
31207 16419
31208int 16420int
@@ -31213,58 +16425,31 @@ main ()
31213 return 0; 16425 return 0;
31214} 16426}
31215_ACEOF 16427_ACEOF
31216rm -f conftest.$ac_objext conftest$ac_exeext 16428if ac_fn_c_try_link "$LINENO"; then :
31217if { (ac_try="$ac_link"
31218case "(($ac_try" in
31219 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31220 *) ac_try_echo=$ac_try;;
31221esac
31222eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31223 (eval "$ac_link") 2>conftest.er1
31224 ac_status=$?
31225 grep -v '^ *+' conftest.er1 >conftest.err
31226 rm -f conftest.er1
31227 cat conftest.err >&5
31228 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31229 (exit $ac_status); } && {
31230 test -z "$ac_c_werror_flag" ||
31231 test ! -s conftest.err
31232 } && test -s conftest$ac_exeext &&
31233 $as_test_x conftest$ac_exeext; then
31234 ac_cv_libc_defines___progname="yes" 16429 ac_cv_libc_defines___progname="yes"
31235else 16430else
31236 echo "$as_me: failed program was:" >&5 16431 ac_cv_libc_defines___progname="no"
31237sed 's/^/| /' conftest.$ac_ext >&5
31238
31239 ac_cv_libc_defines___progname="no"
31240 16432
31241fi 16433fi
31242 16434rm -f core conftest.err conftest.$ac_objext \
31243rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16435 conftest$ac_exeext conftest.$ac_ext
31244 conftest$ac_exeext conftest.$ac_ext
31245 16436
31246fi 16437fi
31247{ echo "$as_me:$LINENO: result: $ac_cv_libc_defines___progname" >&5 16438{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines___progname" >&5
31248echo "${ECHO_T}$ac_cv_libc_defines___progname" >&6; } 16439$as_echo "$ac_cv_libc_defines___progname" >&6; }
31249if test "x$ac_cv_libc_defines___progname" = "xyes" ; then 16440if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
31250 16441
31251cat >>confdefs.h <<\_ACEOF 16442$as_echo "#define HAVE___PROGNAME 1" >>confdefs.h
31252#define HAVE___PROGNAME 1
31253_ACEOF
31254 16443
31255fi 16444fi
31256 16445
31257{ echo "$as_me:$LINENO: checking whether $CC implements __FUNCTION__" >&5 16446{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __FUNCTION__" >&5
31258echo $ECHO_N "checking whether $CC implements __FUNCTION__... $ECHO_C" >&6; } 16447$as_echo_n "checking whether $CC implements __FUNCTION__... " >&6; }
31259if test "${ac_cv_cc_implements___FUNCTION__+set}" = set; then 16448if ${ac_cv_cc_implements___FUNCTION__+:} false; then :
31260 echo $ECHO_N "(cached) $ECHO_C" >&6 16449 $as_echo_n "(cached) " >&6
31261else 16450else
31262 16451
31263 cat >conftest.$ac_ext <<_ACEOF 16452 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31264/* confdefs.h. */
31265_ACEOF
31266cat confdefs.h >>conftest.$ac_ext
31267cat >>conftest.$ac_ext <<_ACEOF
31268/* end confdefs.h. */ 16453/* end confdefs.h. */
31269 #include <stdio.h> 16454 #include <stdio.h>
31270int 16455int
@@ -31275,58 +16460,31 @@ main ()
31275 return 0; 16460 return 0;
31276} 16461}
31277_ACEOF 16462_ACEOF
31278rm -f conftest.$ac_objext conftest$ac_exeext 16463if ac_fn_c_try_link "$LINENO"; then :
31279if { (ac_try="$ac_link"
31280case "(($ac_try" in
31281 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31282 *) ac_try_echo=$ac_try;;
31283esac
31284eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31285 (eval "$ac_link") 2>conftest.er1
31286 ac_status=$?
31287 grep -v '^ *+' conftest.er1 >conftest.err
31288 rm -f conftest.er1
31289 cat conftest.err >&5
31290 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31291 (exit $ac_status); } && {
31292 test -z "$ac_c_werror_flag" ||
31293 test ! -s conftest.err
31294 } && test -s conftest$ac_exeext &&
31295 $as_test_x conftest$ac_exeext; then
31296 ac_cv_cc_implements___FUNCTION__="yes" 16464 ac_cv_cc_implements___FUNCTION__="yes"
31297else 16465else
31298 echo "$as_me: failed program was:" >&5 16466 ac_cv_cc_implements___FUNCTION__="no"
31299sed 's/^/| /' conftest.$ac_ext >&5
31300
31301 ac_cv_cc_implements___FUNCTION__="no"
31302 16467
31303fi 16468fi
31304 16469rm -f core conftest.err conftest.$ac_objext \
31305rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16470 conftest$ac_exeext conftest.$ac_ext
31306 conftest$ac_exeext conftest.$ac_ext
31307 16471
31308fi 16472fi
31309{ echo "$as_me:$LINENO: result: $ac_cv_cc_implements___FUNCTION__" >&5 16473{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___FUNCTION__" >&5
31310echo "${ECHO_T}$ac_cv_cc_implements___FUNCTION__" >&6; } 16474$as_echo "$ac_cv_cc_implements___FUNCTION__" >&6; }
31311if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then 16475if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
31312 16476
31313cat >>confdefs.h <<\_ACEOF 16477$as_echo "#define HAVE___FUNCTION__ 1" >>confdefs.h
31314#define HAVE___FUNCTION__ 1
31315_ACEOF
31316 16478
31317fi 16479fi
31318 16480
31319{ echo "$as_me:$LINENO: checking whether $CC implements __func__" >&5 16481{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __func__" >&5
31320echo $ECHO_N "checking whether $CC implements __func__... $ECHO_C" >&6; } 16482$as_echo_n "checking whether $CC implements __func__... " >&6; }
31321if test "${ac_cv_cc_implements___func__+set}" = set; then 16483if ${ac_cv_cc_implements___func__+:} false; then :
31322 echo $ECHO_N "(cached) $ECHO_C" >&6 16484 $as_echo_n "(cached) " >&6
31323else 16485else
31324 16486
31325 cat >conftest.$ac_ext <<_ACEOF 16487 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31326/* confdefs.h. */
31327_ACEOF
31328cat confdefs.h >>conftest.$ac_ext
31329cat >>conftest.$ac_ext <<_ACEOF
31330/* end confdefs.h. */ 16488/* end confdefs.h. */
31331 #include <stdio.h> 16489 #include <stdio.h>
31332int 16490int
@@ -31337,58 +16495,31 @@ main ()
31337 return 0; 16495 return 0;
31338} 16496}
31339_ACEOF 16497_ACEOF
31340rm -f conftest.$ac_objext conftest$ac_exeext 16498if ac_fn_c_try_link "$LINENO"; then :
31341if { (ac_try="$ac_link"
31342case "(($ac_try" in
31343 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31344 *) ac_try_echo=$ac_try;;
31345esac
31346eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31347 (eval "$ac_link") 2>conftest.er1
31348 ac_status=$?
31349 grep -v '^ *+' conftest.er1 >conftest.err
31350 rm -f conftest.er1
31351 cat conftest.err >&5
31352 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31353 (exit $ac_status); } && {
31354 test -z "$ac_c_werror_flag" ||
31355 test ! -s conftest.err
31356 } && test -s conftest$ac_exeext &&
31357 $as_test_x conftest$ac_exeext; then
31358 ac_cv_cc_implements___func__="yes" 16499 ac_cv_cc_implements___func__="yes"
31359else 16500else
31360 echo "$as_me: failed program was:" >&5 16501 ac_cv_cc_implements___func__="no"
31361sed 's/^/| /' conftest.$ac_ext >&5
31362
31363 ac_cv_cc_implements___func__="no"
31364 16502
31365fi 16503fi
31366 16504rm -f core conftest.err conftest.$ac_objext \
31367rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16505 conftest$ac_exeext conftest.$ac_ext
31368 conftest$ac_exeext conftest.$ac_ext
31369 16506
31370fi 16507fi
31371{ echo "$as_me:$LINENO: result: $ac_cv_cc_implements___func__" >&5 16508{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___func__" >&5
31372echo "${ECHO_T}$ac_cv_cc_implements___func__" >&6; } 16509$as_echo "$ac_cv_cc_implements___func__" >&6; }
31373if test "x$ac_cv_cc_implements___func__" = "xyes" ; then 16510if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
31374 16511
31375cat >>confdefs.h <<\_ACEOF 16512$as_echo "#define HAVE___func__ 1" >>confdefs.h
31376#define HAVE___func__ 1
31377_ACEOF
31378 16513
31379fi 16514fi
31380 16515
31381{ echo "$as_me:$LINENO: checking whether va_copy exists" >&5 16516{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_copy exists" >&5
31382echo $ECHO_N "checking whether va_copy exists... $ECHO_C" >&6; } 16517$as_echo_n "checking whether va_copy exists... " >&6; }
31383if test "${ac_cv_have_va_copy+set}" = set; then 16518if ${ac_cv_have_va_copy+:} false; then :
31384 echo $ECHO_N "(cached) $ECHO_C" >&6 16519 $as_echo_n "(cached) " >&6
31385else 16520else
31386 16521
31387 cat >conftest.$ac_ext <<_ACEOF 16522 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31388/* confdefs.h. */
31389_ACEOF
31390cat confdefs.h >>conftest.$ac_ext
31391cat >>conftest.$ac_ext <<_ACEOF
31392/* end confdefs.h. */ 16523/* end confdefs.h. */
31393 16524
31394#include <stdarg.h> 16525#include <stdarg.h>
@@ -31402,58 +16533,31 @@ main ()
31402 return 0; 16533 return 0;
31403} 16534}
31404_ACEOF 16535_ACEOF
31405rm -f conftest.$ac_objext conftest$ac_exeext 16536if ac_fn_c_try_link "$LINENO"; then :
31406if { (ac_try="$ac_link"
31407case "(($ac_try" in
31408 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31409 *) ac_try_echo=$ac_try;;
31410esac
31411eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31412 (eval "$ac_link") 2>conftest.er1
31413 ac_status=$?
31414 grep -v '^ *+' conftest.er1 >conftest.err
31415 rm -f conftest.er1
31416 cat conftest.err >&5
31417 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31418 (exit $ac_status); } && {
31419 test -z "$ac_c_werror_flag" ||
31420 test ! -s conftest.err
31421 } && test -s conftest$ac_exeext &&
31422 $as_test_x conftest$ac_exeext; then
31423 ac_cv_have_va_copy="yes" 16537 ac_cv_have_va_copy="yes"
31424else 16538else
31425 echo "$as_me: failed program was:" >&5 16539 ac_cv_have_va_copy="no"
31426sed 's/^/| /' conftest.$ac_ext >&5
31427
31428 ac_cv_have_va_copy="no"
31429 16540
31430fi 16541fi
31431 16542rm -f core conftest.err conftest.$ac_objext \
31432rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16543 conftest$ac_exeext conftest.$ac_ext
31433 conftest$ac_exeext conftest.$ac_ext
31434 16544
31435fi 16545fi
31436{ echo "$as_me:$LINENO: result: $ac_cv_have_va_copy" >&5 16546{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_va_copy" >&5
31437echo "${ECHO_T}$ac_cv_have_va_copy" >&6; } 16547$as_echo "$ac_cv_have_va_copy" >&6; }
31438if test "x$ac_cv_have_va_copy" = "xyes" ; then 16548if test "x$ac_cv_have_va_copy" = "xyes" ; then
31439 16549
31440cat >>confdefs.h <<\_ACEOF 16550$as_echo "#define HAVE_VA_COPY 1" >>confdefs.h
31441#define HAVE_VA_COPY 1
31442_ACEOF
31443 16551
31444fi 16552fi
31445 16553
31446{ echo "$as_me:$LINENO: checking whether __va_copy exists" >&5 16554{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __va_copy exists" >&5
31447echo $ECHO_N "checking whether __va_copy exists... $ECHO_C" >&6; } 16555$as_echo_n "checking whether __va_copy exists... " >&6; }
31448if test "${ac_cv_have___va_copy+set}" = set; then 16556if ${ac_cv_have___va_copy+:} false; then :
31449 echo $ECHO_N "(cached) $ECHO_C" >&6 16557 $as_echo_n "(cached) " >&6
31450else 16558else
31451 16559
31452 cat >conftest.$ac_ext <<_ACEOF 16560 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31453/* confdefs.h. */
31454_ACEOF
31455cat confdefs.h >>conftest.$ac_ext
31456cat >>conftest.$ac_ext <<_ACEOF
31457/* end confdefs.h. */ 16561/* end confdefs.h. */
31458 16562
31459#include <stdarg.h> 16563#include <stdarg.h>
@@ -31467,58 +16571,31 @@ main ()
31467 return 0; 16571 return 0;
31468} 16572}
31469_ACEOF 16573_ACEOF
31470rm -f conftest.$ac_objext conftest$ac_exeext 16574if ac_fn_c_try_link "$LINENO"; then :
31471if { (ac_try="$ac_link"
31472case "(($ac_try" in
31473 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31474 *) ac_try_echo=$ac_try;;
31475esac
31476eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31477 (eval "$ac_link") 2>conftest.er1
31478 ac_status=$?
31479 grep -v '^ *+' conftest.er1 >conftest.err
31480 rm -f conftest.er1
31481 cat conftest.err >&5
31482 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31483 (exit $ac_status); } && {
31484 test -z "$ac_c_werror_flag" ||
31485 test ! -s conftest.err
31486 } && test -s conftest$ac_exeext &&
31487 $as_test_x conftest$ac_exeext; then
31488 ac_cv_have___va_copy="yes" 16575 ac_cv_have___va_copy="yes"
31489else 16576else
31490 echo "$as_me: failed program was:" >&5 16577 ac_cv_have___va_copy="no"
31491sed 's/^/| /' conftest.$ac_ext >&5
31492
31493 ac_cv_have___va_copy="no"
31494 16578
31495fi 16579fi
31496 16580rm -f core conftest.err conftest.$ac_objext \
31497rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16581 conftest$ac_exeext conftest.$ac_ext
31498 conftest$ac_exeext conftest.$ac_ext
31499 16582
31500fi 16583fi
31501{ echo "$as_me:$LINENO: result: $ac_cv_have___va_copy" >&5 16584{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___va_copy" >&5
31502echo "${ECHO_T}$ac_cv_have___va_copy" >&6; } 16585$as_echo "$ac_cv_have___va_copy" >&6; }
31503if test "x$ac_cv_have___va_copy" = "xyes" ; then 16586if test "x$ac_cv_have___va_copy" = "xyes" ; then
31504 16587
31505cat >>confdefs.h <<\_ACEOF 16588$as_echo "#define HAVE___VA_COPY 1" >>confdefs.h
31506#define HAVE___VA_COPY 1
31507_ACEOF
31508 16589
31509fi 16590fi
31510 16591
31511{ echo "$as_me:$LINENO: checking whether getopt has optreset support" >&5 16592{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt has optreset support" >&5
31512echo $ECHO_N "checking whether getopt has optreset support... $ECHO_C" >&6; } 16593$as_echo_n "checking whether getopt has optreset support... " >&6; }
31513if test "${ac_cv_have_getopt_optreset+set}" = set; then 16594if ${ac_cv_have_getopt_optreset+:} false; then :
31514 echo $ECHO_N "(cached) $ECHO_C" >&6 16595 $as_echo_n "(cached) " >&6
31515else 16596else
31516 16597
31517 cat >conftest.$ac_ext <<_ACEOF 16598 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31518/* confdefs.h. */
31519_ACEOF
31520cat confdefs.h >>conftest.$ac_ext
31521cat >>conftest.$ac_ext <<_ACEOF
31522/* end confdefs.h. */ 16599/* end confdefs.h. */
31523 #include <getopt.h> 16600 #include <getopt.h>
31524int 16601int
@@ -31529,58 +16606,31 @@ main ()
31529 return 0; 16606 return 0;
31530} 16607}
31531_ACEOF 16608_ACEOF
31532rm -f conftest.$ac_objext conftest$ac_exeext 16609if ac_fn_c_try_link "$LINENO"; then :
31533if { (ac_try="$ac_link"
31534case "(($ac_try" in
31535 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31536 *) ac_try_echo=$ac_try;;
31537esac
31538eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31539 (eval "$ac_link") 2>conftest.er1
31540 ac_status=$?
31541 grep -v '^ *+' conftest.er1 >conftest.err
31542 rm -f conftest.er1
31543 cat conftest.err >&5
31544 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31545 (exit $ac_status); } && {
31546 test -z "$ac_c_werror_flag" ||
31547 test ! -s conftest.err
31548 } && test -s conftest$ac_exeext &&
31549 $as_test_x conftest$ac_exeext; then
31550 ac_cv_have_getopt_optreset="yes" 16610 ac_cv_have_getopt_optreset="yes"
31551else 16611else
31552 echo "$as_me: failed program was:" >&5 16612 ac_cv_have_getopt_optreset="no"
31553sed 's/^/| /' conftest.$ac_ext >&5
31554
31555 ac_cv_have_getopt_optreset="no"
31556 16613
31557fi 16614fi
31558 16615rm -f core conftest.err conftest.$ac_objext \
31559rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16616 conftest$ac_exeext conftest.$ac_ext
31560 conftest$ac_exeext conftest.$ac_ext
31561 16617
31562fi 16618fi
31563{ echo "$as_me:$LINENO: result: $ac_cv_have_getopt_optreset" >&5 16619{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getopt_optreset" >&5
31564echo "${ECHO_T}$ac_cv_have_getopt_optreset" >&6; } 16620$as_echo "$ac_cv_have_getopt_optreset" >&6; }
31565if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then 16621if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
31566 16622
31567cat >>confdefs.h <<\_ACEOF 16623$as_echo "#define HAVE_GETOPT_OPTRESET 1" >>confdefs.h
31568#define HAVE_GETOPT_OPTRESET 1
31569_ACEOF
31570 16624
31571fi 16625fi
31572 16626
31573{ echo "$as_me:$LINENO: checking if libc defines sys_errlist" >&5 16627{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_errlist" >&5
31574echo $ECHO_N "checking if libc defines sys_errlist... $ECHO_C" >&6; } 16628$as_echo_n "checking if libc defines sys_errlist... " >&6; }
31575if test "${ac_cv_libc_defines_sys_errlist+set}" = set; then 16629if ${ac_cv_libc_defines_sys_errlist+:} false; then :
31576 echo $ECHO_N "(cached) $ECHO_C" >&6 16630 $as_echo_n "(cached) " >&6
31577else 16631else
31578 16632
31579 cat >conftest.$ac_ext <<_ACEOF 16633 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31580/* confdefs.h. */
31581_ACEOF
31582cat confdefs.h >>conftest.$ac_ext
31583cat >>conftest.$ac_ext <<_ACEOF
31584/* end confdefs.h. */ 16634/* end confdefs.h. */
31585 16635
31586int 16636int
@@ -31591,59 +16641,32 @@ main ()
31591 return 0; 16641 return 0;
31592} 16642}
31593_ACEOF 16643_ACEOF
31594rm -f conftest.$ac_objext conftest$ac_exeext 16644if ac_fn_c_try_link "$LINENO"; then :
31595if { (ac_try="$ac_link"
31596case "(($ac_try" in
31597 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31598 *) ac_try_echo=$ac_try;;
31599esac
31600eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31601 (eval "$ac_link") 2>conftest.er1
31602 ac_status=$?
31603 grep -v '^ *+' conftest.er1 >conftest.err
31604 rm -f conftest.er1
31605 cat conftest.err >&5
31606 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31607 (exit $ac_status); } && {
31608 test -z "$ac_c_werror_flag" ||
31609 test ! -s conftest.err
31610 } && test -s conftest$ac_exeext &&
31611 $as_test_x conftest$ac_exeext; then
31612 ac_cv_libc_defines_sys_errlist="yes" 16645 ac_cv_libc_defines_sys_errlist="yes"
31613else 16646else
31614 echo "$as_me: failed program was:" >&5 16647 ac_cv_libc_defines_sys_errlist="no"
31615sed 's/^/| /' conftest.$ac_ext >&5
31616
31617 ac_cv_libc_defines_sys_errlist="no"
31618 16648
31619fi 16649fi
31620 16650rm -f core conftest.err conftest.$ac_objext \
31621rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16651 conftest$ac_exeext conftest.$ac_ext
31622 conftest$ac_exeext conftest.$ac_ext
31623 16652
31624fi 16653fi
31625{ echo "$as_me:$LINENO: result: $ac_cv_libc_defines_sys_errlist" >&5 16654{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_errlist" >&5
31626echo "${ECHO_T}$ac_cv_libc_defines_sys_errlist" >&6; } 16655$as_echo "$ac_cv_libc_defines_sys_errlist" >&6; }
31627if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then 16656if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
31628 16657
31629cat >>confdefs.h <<\_ACEOF 16658$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h
31630#define HAVE_SYS_ERRLIST 1
31631_ACEOF
31632 16659
31633fi 16660fi
31634 16661
31635 16662
31636{ echo "$as_me:$LINENO: checking if libc defines sys_nerr" >&5 16663{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_nerr" >&5
31637echo $ECHO_N "checking if libc defines sys_nerr... $ECHO_C" >&6; } 16664$as_echo_n "checking if libc defines sys_nerr... " >&6; }
31638if test "${ac_cv_libc_defines_sys_nerr+set}" = set; then 16665if ${ac_cv_libc_defines_sys_nerr+:} false; then :
31639 echo $ECHO_N "(cached) $ECHO_C" >&6 16666 $as_echo_n "(cached) " >&6
31640else 16667else
31641 16668
31642 cat >conftest.$ac_ext <<_ACEOF 16669 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31643/* confdefs.h. */
31644_ACEOF
31645cat confdefs.h >>conftest.$ac_ext
31646cat >>conftest.$ac_ext <<_ACEOF
31647/* end confdefs.h. */ 16670/* end confdefs.h. */
31648 16671
31649int 16672int
@@ -31654,59 +16677,32 @@ main ()
31654 return 0; 16677 return 0;
31655} 16678}
31656_ACEOF 16679_ACEOF
31657rm -f conftest.$ac_objext conftest$ac_exeext 16680if ac_fn_c_try_link "$LINENO"; then :
31658if { (ac_try="$ac_link"
31659case "(($ac_try" in
31660 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31661 *) ac_try_echo=$ac_try;;
31662esac
31663eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31664 (eval "$ac_link") 2>conftest.er1
31665 ac_status=$?
31666 grep -v '^ *+' conftest.er1 >conftest.err
31667 rm -f conftest.er1
31668 cat conftest.err >&5
31669 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31670 (exit $ac_status); } && {
31671 test -z "$ac_c_werror_flag" ||
31672 test ! -s conftest.err
31673 } && test -s conftest$ac_exeext &&
31674 $as_test_x conftest$ac_exeext; then
31675 ac_cv_libc_defines_sys_nerr="yes" 16681 ac_cv_libc_defines_sys_nerr="yes"
31676else 16682else
31677 echo "$as_me: failed program was:" >&5 16683 ac_cv_libc_defines_sys_nerr="no"
31678sed 's/^/| /' conftest.$ac_ext >&5
31679
31680 ac_cv_libc_defines_sys_nerr="no"
31681 16684
31682fi 16685fi
31683 16686rm -f core conftest.err conftest.$ac_objext \
31684rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16687 conftest$ac_exeext conftest.$ac_ext
31685 conftest$ac_exeext conftest.$ac_ext
31686 16688
31687fi 16689fi
31688{ echo "$as_me:$LINENO: result: $ac_cv_libc_defines_sys_nerr" >&5 16690{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_nerr" >&5
31689echo "${ECHO_T}$ac_cv_libc_defines_sys_nerr" >&6; } 16691$as_echo "$ac_cv_libc_defines_sys_nerr" >&6; }
31690if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then 16692if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
31691 16693
31692cat >>confdefs.h <<\_ACEOF 16694$as_echo "#define HAVE_SYS_NERR 1" >>confdefs.h
31693#define HAVE_SYS_NERR 1
31694_ACEOF
31695 16695
31696fi 16696fi
31697 16697
31698# Check libraries needed by DNS fingerprint support 16698# Check libraries needed by DNS fingerprint support
31699{ echo "$as_me:$LINENO: checking for library containing getrrsetbyname" >&5 16699{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getrrsetbyname" >&5
31700echo $ECHO_N "checking for library containing getrrsetbyname... $ECHO_C" >&6; } 16700$as_echo_n "checking for library containing getrrsetbyname... " >&6; }
31701if test "${ac_cv_search_getrrsetbyname+set}" = set; then 16701if ${ac_cv_search_getrrsetbyname+:} false; then :
31702 echo $ECHO_N "(cached) $ECHO_C" >&6 16702 $as_echo_n "(cached) " >&6
31703else 16703else
31704 ac_func_search_save_LIBS=$LIBS 16704 ac_func_search_save_LIBS=$LIBS
31705cat >conftest.$ac_ext <<_ACEOF 16705cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31706/* confdefs.h. */
31707_ACEOF
31708cat confdefs.h >>conftest.$ac_ext
31709cat >>conftest.$ac_ext <<_ACEOF
31710/* end confdefs.h. */ 16706/* end confdefs.h. */
31711 16707
31712/* Override any GCC internal prototype to avoid an error. 16708/* Override any GCC internal prototype to avoid an error.
@@ -31731,70 +16727,41 @@ for ac_lib in '' resolv; do
31731 ac_res=-l$ac_lib 16727 ac_res=-l$ac_lib
31732 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 16728 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
31733 fi 16729 fi
31734 rm -f conftest.$ac_objext conftest$ac_exeext 16730 if ac_fn_c_try_link "$LINENO"; then :
31735if { (ac_try="$ac_link"
31736case "(($ac_try" in
31737 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31738 *) ac_try_echo=$ac_try;;
31739esac
31740eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31741 (eval "$ac_link") 2>conftest.er1
31742 ac_status=$?
31743 grep -v '^ *+' conftest.er1 >conftest.err
31744 rm -f conftest.er1
31745 cat conftest.err >&5
31746 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31747 (exit $ac_status); } && {
31748 test -z "$ac_c_werror_flag" ||
31749 test ! -s conftest.err
31750 } && test -s conftest$ac_exeext &&
31751 $as_test_x conftest$ac_exeext; then
31752 ac_cv_search_getrrsetbyname=$ac_res 16731 ac_cv_search_getrrsetbyname=$ac_res
31753else
31754 echo "$as_me: failed program was:" >&5
31755sed 's/^/| /' conftest.$ac_ext >&5
31756
31757
31758fi 16732fi
31759 16733rm -f core conftest.err conftest.$ac_objext \
31760rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16734 conftest$ac_exeext
31761 conftest$ac_exeext 16735 if ${ac_cv_search_getrrsetbyname+:} false; then :
31762 if test "${ac_cv_search_getrrsetbyname+set}" = set; then
31763 break 16736 break
31764fi 16737fi
31765done 16738done
31766if test "${ac_cv_search_getrrsetbyname+set}" = set; then 16739if ${ac_cv_search_getrrsetbyname+:} false; then :
31767 : 16740
31768else 16741else
31769 ac_cv_search_getrrsetbyname=no 16742 ac_cv_search_getrrsetbyname=no
31770fi 16743fi
31771rm conftest.$ac_ext 16744rm conftest.$ac_ext
31772LIBS=$ac_func_search_save_LIBS 16745LIBS=$ac_func_search_save_LIBS
31773fi 16746fi
31774{ echo "$as_me:$LINENO: result: $ac_cv_search_getrrsetbyname" >&5 16747{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getrrsetbyname" >&5
31775echo "${ECHO_T}$ac_cv_search_getrrsetbyname" >&6; } 16748$as_echo "$ac_cv_search_getrrsetbyname" >&6; }
31776ac_res=$ac_cv_search_getrrsetbyname 16749ac_res=$ac_cv_search_getrrsetbyname
31777if test "$ac_res" != no; then 16750if test "$ac_res" != no; then :
31778 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 16751 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
31779 16752
31780cat >>confdefs.h <<\_ACEOF 16753$as_echo "#define HAVE_GETRRSETBYNAME 1" >>confdefs.h
31781#define HAVE_GETRRSETBYNAME 1
31782_ACEOF
31783 16754
31784else 16755else
31785 16756
31786 # Needed by our getrrsetbyname() 16757 # Needed by our getrrsetbyname()
31787 { echo "$as_me:$LINENO: checking for library containing res_query" >&5 16758 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_query" >&5
31788echo $ECHO_N "checking for library containing res_query... $ECHO_C" >&6; } 16759$as_echo_n "checking for library containing res_query... " >&6; }
31789if test "${ac_cv_search_res_query+set}" = set; then 16760if ${ac_cv_search_res_query+:} false; then :
31790 echo $ECHO_N "(cached) $ECHO_C" >&6 16761 $as_echo_n "(cached) " >&6
31791else 16762else
31792 ac_func_search_save_LIBS=$LIBS 16763 ac_func_search_save_LIBS=$LIBS
31793cat >conftest.$ac_ext <<_ACEOF 16764cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31794/* confdefs.h. */
31795_ACEOF
31796cat confdefs.h >>conftest.$ac_ext
31797cat >>conftest.$ac_ext <<_ACEOF
31798/* end confdefs.h. */ 16765/* end confdefs.h. */
31799 16766
31800/* Override any GCC internal prototype to avoid an error. 16767/* Override any GCC internal prototype to avoid an error.
@@ -31819,65 +16786,38 @@ for ac_lib in '' resolv; do
31819 ac_res=-l$ac_lib 16786 ac_res=-l$ac_lib
31820 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 16787 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
31821 fi 16788 fi
31822 rm -f conftest.$ac_objext conftest$ac_exeext 16789 if ac_fn_c_try_link "$LINENO"; then :
31823if { (ac_try="$ac_link"
31824case "(($ac_try" in
31825 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31826 *) ac_try_echo=$ac_try;;
31827esac
31828eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31829 (eval "$ac_link") 2>conftest.er1
31830 ac_status=$?
31831 grep -v '^ *+' conftest.er1 >conftest.err
31832 rm -f conftest.er1
31833 cat conftest.err >&5
31834 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31835 (exit $ac_status); } && {
31836 test -z "$ac_c_werror_flag" ||
31837 test ! -s conftest.err
31838 } && test -s conftest$ac_exeext &&
31839 $as_test_x conftest$ac_exeext; then
31840 ac_cv_search_res_query=$ac_res 16790 ac_cv_search_res_query=$ac_res
31841else
31842 echo "$as_me: failed program was:" >&5
31843sed 's/^/| /' conftest.$ac_ext >&5
31844
31845
31846fi 16791fi
31847 16792rm -f core conftest.err conftest.$ac_objext \
31848rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16793 conftest$ac_exeext
31849 conftest$ac_exeext 16794 if ${ac_cv_search_res_query+:} false; then :
31850 if test "${ac_cv_search_res_query+set}" = set; then
31851 break 16795 break
31852fi 16796fi
31853done 16797done
31854if test "${ac_cv_search_res_query+set}" = set; then 16798if ${ac_cv_search_res_query+:} false; then :
31855 : 16799
31856else 16800else
31857 ac_cv_search_res_query=no 16801 ac_cv_search_res_query=no
31858fi 16802fi
31859rm conftest.$ac_ext 16803rm conftest.$ac_ext
31860LIBS=$ac_func_search_save_LIBS 16804LIBS=$ac_func_search_save_LIBS
31861fi 16805fi
31862{ echo "$as_me:$LINENO: result: $ac_cv_search_res_query" >&5 16806{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_query" >&5
31863echo "${ECHO_T}$ac_cv_search_res_query" >&6; } 16807$as_echo "$ac_cv_search_res_query" >&6; }
31864ac_res=$ac_cv_search_res_query 16808ac_res=$ac_cv_search_res_query
31865if test "$ac_res" != no; then 16809if test "$ac_res" != no; then :
31866 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 16810 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
31867 16811
31868fi 16812fi
31869 16813
31870 { echo "$as_me:$LINENO: checking for library containing dn_expand" >&5 16814 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
31871echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6; } 16815$as_echo_n "checking for library containing dn_expand... " >&6; }
31872if test "${ac_cv_search_dn_expand+set}" = set; then 16816if ${ac_cv_search_dn_expand+:} false; then :
31873 echo $ECHO_N "(cached) $ECHO_C" >&6 16817 $as_echo_n "(cached) " >&6
31874else 16818else
31875 ac_func_search_save_LIBS=$LIBS 16819 ac_func_search_save_LIBS=$LIBS
31876cat >conftest.$ac_ext <<_ACEOF 16820cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31877/* confdefs.h. */
31878_ACEOF
31879cat confdefs.h >>conftest.$ac_ext
31880cat >>conftest.$ac_ext <<_ACEOF
31881/* end confdefs.h. */ 16821/* end confdefs.h. */
31882 16822
31883/* Override any GCC internal prototype to avoid an error. 16823/* Override any GCC internal prototype to avoid an error.
@@ -31902,61 +16842,34 @@ for ac_lib in '' resolv; do
31902 ac_res=-l$ac_lib 16842 ac_res=-l$ac_lib
31903 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 16843 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
31904 fi 16844 fi
31905 rm -f conftest.$ac_objext conftest$ac_exeext 16845 if ac_fn_c_try_link "$LINENO"; then :
31906if { (ac_try="$ac_link"
31907case "(($ac_try" in
31908 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31909 *) ac_try_echo=$ac_try;;
31910esac
31911eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31912 (eval "$ac_link") 2>conftest.er1
31913 ac_status=$?
31914 grep -v '^ *+' conftest.er1 >conftest.err
31915 rm -f conftest.er1
31916 cat conftest.err >&5
31917 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31918 (exit $ac_status); } && {
31919 test -z "$ac_c_werror_flag" ||
31920 test ! -s conftest.err
31921 } && test -s conftest$ac_exeext &&
31922 $as_test_x conftest$ac_exeext; then
31923 ac_cv_search_dn_expand=$ac_res 16846 ac_cv_search_dn_expand=$ac_res
31924else
31925 echo "$as_me: failed program was:" >&5
31926sed 's/^/| /' conftest.$ac_ext >&5
31927
31928
31929fi 16847fi
31930 16848rm -f core conftest.err conftest.$ac_objext \
31931rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16849 conftest$ac_exeext
31932 conftest$ac_exeext 16850 if ${ac_cv_search_dn_expand+:} false; then :
31933 if test "${ac_cv_search_dn_expand+set}" = set; then
31934 break 16851 break
31935fi 16852fi
31936done 16853done
31937if test "${ac_cv_search_dn_expand+set}" = set; then 16854if ${ac_cv_search_dn_expand+:} false; then :
31938 : 16855
31939else 16856else
31940 ac_cv_search_dn_expand=no 16857 ac_cv_search_dn_expand=no
31941fi 16858fi
31942rm conftest.$ac_ext 16859rm conftest.$ac_ext
31943LIBS=$ac_func_search_save_LIBS 16860LIBS=$ac_func_search_save_LIBS
31944fi 16861fi
31945{ echo "$as_me:$LINENO: result: $ac_cv_search_dn_expand" >&5 16862{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
31946echo "${ECHO_T}$ac_cv_search_dn_expand" >&6; } 16863$as_echo "$ac_cv_search_dn_expand" >&6; }
31947ac_res=$ac_cv_search_dn_expand 16864ac_res=$ac_cv_search_dn_expand
31948if test "$ac_res" != no; then 16865if test "$ac_res" != no; then :
31949 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 16866 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
31950 16867
31951fi 16868fi
31952 16869
31953 { echo "$as_me:$LINENO: checking if res_query will link" >&5 16870 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if res_query will link" >&5
31954echo $ECHO_N "checking if res_query will link... $ECHO_C" >&6; } 16871$as_echo_n "checking if res_query will link... " >&6; }
31955 cat >conftest.$ac_ext <<_ACEOF 16872 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
31956/* confdefs.h. */
31957_ACEOF
31958cat confdefs.h >>conftest.$ac_ext
31959cat >>conftest.$ac_ext <<_ACEOF
31960/* end confdefs.h. */ 16873/* end confdefs.h. */
31961 16874
31962#include <sys/types.h> 16875#include <sys/types.h>
@@ -31975,41 +16888,17 @@ main ()
31975 return 0; 16888 return 0;
31976} 16889}
31977_ACEOF 16890_ACEOF
31978rm -f conftest.$ac_objext conftest$ac_exeext 16891if ac_fn_c_try_link "$LINENO"; then :
31979if { (ac_try="$ac_link" 16892 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
31980case "(($ac_try" in 16893$as_echo "yes" >&6; }
31981 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
31982 *) ac_try_echo=$ac_try;;
31983esac
31984eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
31985 (eval "$ac_link") 2>conftest.er1
31986 ac_status=$?
31987 grep -v '^ *+' conftest.er1 >conftest.err
31988 rm -f conftest.er1
31989 cat conftest.err >&5
31990 echo "$as_me:$LINENO: \$? = $ac_status" >&5
31991 (exit $ac_status); } && {
31992 test -z "$ac_c_werror_flag" ||
31993 test ! -s conftest.err
31994 } && test -s conftest$ac_exeext &&
31995 $as_test_x conftest$ac_exeext; then
31996 { echo "$as_me:$LINENO: result: yes" >&5
31997echo "${ECHO_T}yes" >&6; }
31998else 16894else
31999 echo "$as_me: failed program was:" >&5 16895 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32000sed 's/^/| /' conftest.$ac_ext >&5 16896$as_echo "no" >&6; }
32001
32002 { echo "$as_me:$LINENO: result: no" >&5
32003echo "${ECHO_T}no" >&6; }
32004 saved_LIBS="$LIBS" 16897 saved_LIBS="$LIBS"
32005 LIBS="$LIBS -lresolv" 16898 LIBS="$LIBS -lresolv"
32006 { echo "$as_me:$LINENO: checking for res_query in -lresolv" >&5 16899 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
32007echo $ECHO_N "checking for res_query in -lresolv... $ECHO_C" >&6; } 16900$as_echo_n "checking for res_query in -lresolv... " >&6; }
32008 cat >conftest.$ac_ext <<_ACEOF 16901 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32009/* confdefs.h. */
32010_ACEOF
32011cat confdefs.h >>conftest.$ac_ext
32012cat >>conftest.$ac_ext <<_ACEOF
32013/* end confdefs.h. */ 16902/* end confdefs.h. */
32014 16903
32015#include <sys/types.h> 16904#include <sys/types.h>
@@ -32028,375 +16917,62 @@ main ()
32028 return 0; 16917 return 0;
32029} 16918}
32030_ACEOF 16919_ACEOF
32031rm -f conftest.$ac_objext conftest$ac_exeext 16920if ac_fn_c_try_link "$LINENO"; then :
32032if { (ac_try="$ac_link" 16921 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
32033case "(($ac_try" in 16922$as_echo "yes" >&6; }
32034 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32035 *) ac_try_echo=$ac_try;;
32036esac
32037eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32038 (eval "$ac_link") 2>conftest.er1
32039 ac_status=$?
32040 grep -v '^ *+' conftest.er1 >conftest.err
32041 rm -f conftest.er1
32042 cat conftest.err >&5
32043 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32044 (exit $ac_status); } && {
32045 test -z "$ac_c_werror_flag" ||
32046 test ! -s conftest.err
32047 } && test -s conftest$ac_exeext &&
32048 $as_test_x conftest$ac_exeext; then
32049 { echo "$as_me:$LINENO: result: yes" >&5
32050echo "${ECHO_T}yes" >&6; }
32051else 16923else
32052 echo "$as_me: failed program was:" >&5 16924 LIBS="$saved_LIBS"
32053sed 's/^/| /' conftest.$ac_ext >&5 16925 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32054 16926$as_echo "no" >&6; }
32055 LIBS="$saved_LIBS"
32056 { echo "$as_me:$LINENO: result: no" >&5
32057echo "${ECHO_T}no" >&6; }
32058fi 16927fi
32059 16928rm -f core conftest.err conftest.$ac_objext \
32060rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16929 conftest$ac_exeext conftest.$ac_ext
32061 conftest$ac_exeext conftest.$ac_ext
32062 16930
32063fi 16931fi
32064 16932rm -f core conftest.err conftest.$ac_objext \
32065rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 16933 conftest$ac_exeext conftest.$ac_ext
32066 conftest$ac_exeext conftest.$ac_ext 16934 for ac_func in _getshort _getlong
32067 16935do :
32068 16936 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
32069for ac_func in _getshort _getlong 16937ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
32070do 16938if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
32071as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
32072{ echo "$as_me:$LINENO: checking for $ac_func" >&5
32073echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
32074if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
32075 echo $ECHO_N "(cached) $ECHO_C" >&6
32076else
32077 cat >conftest.$ac_ext <<_ACEOF
32078/* confdefs.h. */
32079_ACEOF
32080cat confdefs.h >>conftest.$ac_ext
32081cat >>conftest.$ac_ext <<_ACEOF
32082/* end confdefs.h. */
32083/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
32084 For example, HP-UX 11i <limits.h> declares gettimeofday. */
32085#define $ac_func innocuous_$ac_func
32086
32087/* System header to define __stub macros and hopefully few prototypes,
32088 which can conflict with char $ac_func (); below.
32089 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
32090 <limits.h> exists even on freestanding compilers. */
32091
32092#ifdef __STDC__
32093# include <limits.h>
32094#else
32095# include <assert.h>
32096#endif
32097
32098#undef $ac_func
32099
32100/* Override any GCC internal prototype to avoid an error.
32101 Use char because int might match the return type of a GCC
32102 builtin and then its argument prototype would still apply. */
32103#ifdef __cplusplus
32104extern "C"
32105#endif
32106char $ac_func ();
32107/* The GNU C library defines this for functions which it implements
32108 to always fail with ENOSYS. Some functions are actually named
32109 something starting with __ and the normal name is an alias. */
32110#if defined __stub_$ac_func || defined __stub___$ac_func
32111choke me
32112#endif
32113
32114int
32115main ()
32116{
32117return $ac_func ();
32118 ;
32119 return 0;
32120}
32121_ACEOF
32122rm -f conftest.$ac_objext conftest$ac_exeext
32123if { (ac_try="$ac_link"
32124case "(($ac_try" in
32125 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32126 *) ac_try_echo=$ac_try;;
32127esac
32128eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32129 (eval "$ac_link") 2>conftest.er1
32130 ac_status=$?
32131 grep -v '^ *+' conftest.er1 >conftest.err
32132 rm -f conftest.er1
32133 cat conftest.err >&5
32134 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32135 (exit $ac_status); } && {
32136 test -z "$ac_c_werror_flag" ||
32137 test ! -s conftest.err
32138 } && test -s conftest$ac_exeext &&
32139 $as_test_x conftest$ac_exeext; then
32140 eval "$as_ac_var=yes"
32141else
32142 echo "$as_me: failed program was:" >&5
32143sed 's/^/| /' conftest.$ac_ext >&5
32144
32145 eval "$as_ac_var=no"
32146fi
32147
32148rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
32149 conftest$ac_exeext conftest.$ac_ext
32150fi
32151ac_res=`eval echo '${'$as_ac_var'}'`
32152 { echo "$as_me:$LINENO: result: $ac_res" >&5
32153echo "${ECHO_T}$ac_res" >&6; }
32154if test `eval echo '${'$as_ac_var'}'` = yes; then
32155 cat >>confdefs.h <<_ACEOF 16939 cat >>confdefs.h <<_ACEOF
32156#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 16940#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
32157_ACEOF 16941_ACEOF
32158 16942
32159fi 16943fi
32160done 16944done
32161 16945
32162 { echo "$as_me:$LINENO: checking whether _getshort is declared" >&5 16946 ac_fn_c_check_decl "$LINENO" "_getshort" "ac_cv_have_decl__getshort" "#include <sys/types.h>
32163echo $ECHO_N "checking whether _getshort is declared... $ECHO_C" >&6; }
32164if test "${ac_cv_have_decl__getshort+set}" = set; then
32165 echo $ECHO_N "(cached) $ECHO_C" >&6
32166else
32167 cat >conftest.$ac_ext <<_ACEOF
32168/* confdefs.h. */
32169_ACEOF
32170cat confdefs.h >>conftest.$ac_ext
32171cat >>conftest.$ac_ext <<_ACEOF
32172/* end confdefs.h. */
32173#include <sys/types.h>
32174 #include <arpa/nameser.h> 16947 #include <arpa/nameser.h>
32175 16948"
32176int 16949if test "x$ac_cv_have_decl__getshort" = xyes; then :
32177main () 16950 ac_have_decl=1
32178{
32179#ifndef _getshort
32180 (void) _getshort;
32181#endif
32182
32183 ;
32184 return 0;
32185}
32186_ACEOF
32187rm -f conftest.$ac_objext
32188if { (ac_try="$ac_compile"
32189case "(($ac_try" in
32190 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32191 *) ac_try_echo=$ac_try;;
32192esac
32193eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32194 (eval "$ac_compile") 2>conftest.er1
32195 ac_status=$?
32196 grep -v '^ *+' conftest.er1 >conftest.err
32197 rm -f conftest.er1
32198 cat conftest.err >&5
32199 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32200 (exit $ac_status); } && {
32201 test -z "$ac_c_werror_flag" ||
32202 test ! -s conftest.err
32203 } && test -s conftest.$ac_objext; then
32204 ac_cv_have_decl__getshort=yes
32205else 16951else
32206 echo "$as_me: failed program was:" >&5 16952 ac_have_decl=0
32207sed 's/^/| /' conftest.$ac_ext >&5
32208
32209 ac_cv_have_decl__getshort=no
32210fi
32211
32212rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32213fi 16953fi
32214{ echo "$as_me:$LINENO: result: $ac_cv_have_decl__getshort" >&5
32215echo "${ECHO_T}$ac_cv_have_decl__getshort" >&6; }
32216if test $ac_cv_have_decl__getshort = yes; then
32217 16954
32218cat >>confdefs.h <<_ACEOF 16955cat >>confdefs.h <<_ACEOF
32219#define HAVE_DECL__GETSHORT 1 16956#define HAVE_DECL__GETSHORT $ac_have_decl
32220_ACEOF
32221
32222
32223else
32224 cat >>confdefs.h <<_ACEOF
32225#define HAVE_DECL__GETSHORT 0
32226_ACEOF
32227
32228
32229fi
32230{ echo "$as_me:$LINENO: checking whether _getlong is declared" >&5
32231echo $ECHO_N "checking whether _getlong is declared... $ECHO_C" >&6; }
32232if test "${ac_cv_have_decl__getlong+set}" = set; then
32233 echo $ECHO_N "(cached) $ECHO_C" >&6
32234else
32235 cat >conftest.$ac_ext <<_ACEOF
32236/* confdefs.h. */
32237_ACEOF 16957_ACEOF
32238cat confdefs.h >>conftest.$ac_ext 16958ac_fn_c_check_decl "$LINENO" "_getlong" "ac_cv_have_decl__getlong" "#include <sys/types.h>
32239cat >>conftest.$ac_ext <<_ACEOF
32240/* end confdefs.h. */
32241#include <sys/types.h>
32242 #include <arpa/nameser.h> 16959 #include <arpa/nameser.h>
32243 16960"
32244int 16961if test "x$ac_cv_have_decl__getlong" = xyes; then :
32245main () 16962 ac_have_decl=1
32246{
32247#ifndef _getlong
32248 (void) _getlong;
32249#endif
32250
32251 ;
32252 return 0;
32253}
32254_ACEOF
32255rm -f conftest.$ac_objext
32256if { (ac_try="$ac_compile"
32257case "(($ac_try" in
32258 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32259 *) ac_try_echo=$ac_try;;
32260esac
32261eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32262 (eval "$ac_compile") 2>conftest.er1
32263 ac_status=$?
32264 grep -v '^ *+' conftest.er1 >conftest.err
32265 rm -f conftest.er1
32266 cat conftest.err >&5
32267 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32268 (exit $ac_status); } && {
32269 test -z "$ac_c_werror_flag" ||
32270 test ! -s conftest.err
32271 } && test -s conftest.$ac_objext; then
32272 ac_cv_have_decl__getlong=yes
32273else 16963else
32274 echo "$as_me: failed program was:" >&5 16964 ac_have_decl=0
32275sed 's/^/| /' conftest.$ac_ext >&5
32276
32277 ac_cv_have_decl__getlong=no
32278fi
32279
32280rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32281fi 16965fi
32282{ echo "$as_me:$LINENO: result: $ac_cv_have_decl__getlong" >&5
32283echo "${ECHO_T}$ac_cv_have_decl__getlong" >&6; }
32284if test $ac_cv_have_decl__getlong = yes; then
32285 16966
32286cat >>confdefs.h <<_ACEOF 16967cat >>confdefs.h <<_ACEOF
32287#define HAVE_DECL__GETLONG 1 16968#define HAVE_DECL__GETLONG $ac_have_decl
32288_ACEOF
32289
32290
32291else
32292 cat >>confdefs.h <<_ACEOF
32293#define HAVE_DECL__GETLONG 0
32294_ACEOF
32295
32296
32297fi
32298
32299
32300 { echo "$as_me:$LINENO: checking for HEADER.ad" >&5
32301echo $ECHO_N "checking for HEADER.ad... $ECHO_C" >&6; }
32302if test "${ac_cv_member_HEADER_ad+set}" = set; then
32303 echo $ECHO_N "(cached) $ECHO_C" >&6
32304else
32305 cat >conftest.$ac_ext <<_ACEOF
32306/* confdefs.h. */
32307_ACEOF
32308cat confdefs.h >>conftest.$ac_ext
32309cat >>conftest.$ac_ext <<_ACEOF
32310/* end confdefs.h. */
32311#include <arpa/nameser.h>
32312
32313int
32314main ()
32315{
32316static HEADER ac_aggr;
32317if (ac_aggr.ad)
32318return 0;
32319 ;
32320 return 0;
32321}
32322_ACEOF
32323rm -f conftest.$ac_objext
32324if { (ac_try="$ac_compile"
32325case "(($ac_try" in
32326 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32327 *) ac_try_echo=$ac_try;;
32328esac
32329eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32330 (eval "$ac_compile") 2>conftest.er1
32331 ac_status=$?
32332 grep -v '^ *+' conftest.er1 >conftest.err
32333 rm -f conftest.er1
32334 cat conftest.err >&5
32335 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32336 (exit $ac_status); } && {
32337 test -z "$ac_c_werror_flag" ||
32338 test ! -s conftest.err
32339 } && test -s conftest.$ac_objext; then
32340 ac_cv_member_HEADER_ad=yes
32341else
32342 echo "$as_me: failed program was:" >&5
32343sed 's/^/| /' conftest.$ac_ext >&5
32344
32345 cat >conftest.$ac_ext <<_ACEOF
32346/* confdefs.h. */
32347_ACEOF
32348cat confdefs.h >>conftest.$ac_ext
32349cat >>conftest.$ac_ext <<_ACEOF
32350/* end confdefs.h. */
32351#include <arpa/nameser.h>
32352
32353int
32354main ()
32355{
32356static HEADER ac_aggr;
32357if (sizeof ac_aggr.ad)
32358return 0;
32359 ;
32360 return 0;
32361}
32362_ACEOF 16969_ACEOF
32363rm -f conftest.$ac_objext
32364if { (ac_try="$ac_compile"
32365case "(($ac_try" in
32366 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32367 *) ac_try_echo=$ac_try;;
32368esac
32369eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32370 (eval "$ac_compile") 2>conftest.er1
32371 ac_status=$?
32372 grep -v '^ *+' conftest.er1 >conftest.err
32373 rm -f conftest.er1
32374 cat conftest.err >&5
32375 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32376 (exit $ac_status); } && {
32377 test -z "$ac_c_werror_flag" ||
32378 test ! -s conftest.err
32379 } && test -s conftest.$ac_objext; then
32380 ac_cv_member_HEADER_ad=yes
32381else
32382 echo "$as_me: failed program was:" >&5
32383sed 's/^/| /' conftest.$ac_ext >&5
32384 16970
32385 ac_cv_member_HEADER_ad=no 16971 ac_fn_c_check_member "$LINENO" "HEADER" "ad" "ac_cv_member_HEADER_ad" "#include <arpa/nameser.h>
32386fi 16972"
32387 16973if test "x$ac_cv_member_HEADER_ad" = xyes; then :
32388rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32389fi
32390
32391rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32392fi
32393{ echo "$as_me:$LINENO: result: $ac_cv_member_HEADER_ad" >&5
32394echo "${ECHO_T}$ac_cv_member_HEADER_ad" >&6; }
32395if test $ac_cv_member_HEADER_ad = yes; then
32396 16974
32397cat >>confdefs.h <<\_ACEOF 16975$as_echo "#define HAVE_HEADER_AD 1" >>confdefs.h
32398#define HAVE_HEADER_AD 1
32399_ACEOF
32400 16976
32401fi 16977fi
32402 16978
@@ -32404,13 +16980,9 @@ fi
32404fi 16980fi
32405 16981
32406 16982
32407{ echo "$as_me:$LINENO: checking if struct __res_state _res is an extern" >&5 16983{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct __res_state _res is an extern" >&5
32408echo $ECHO_N "checking if struct __res_state _res is an extern... $ECHO_C" >&6; } 16984$as_echo_n "checking if struct __res_state _res is an extern... " >&6; }
32409cat >conftest.$ac_ext <<_ACEOF 16985cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32410/* confdefs.h. */
32411_ACEOF
32412cat confdefs.h >>conftest.$ac_ext
32413cat >>conftest.$ac_ext <<_ACEOF
32414/* end confdefs.h. */ 16986/* end confdefs.h. */
32415 16987
32416#include <stdio.h> 16988#include <stdio.h>
@@ -32433,209 +17005,49 @@ return 0;
32433 return 0; 17005 return 0;
32434} 17006}
32435_ACEOF 17007_ACEOF
32436rm -f conftest.$ac_objext conftest$ac_exeext 17008if ac_fn_c_try_link "$LINENO"; then :
32437if { (ac_try="$ac_link" 17009 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
32438case "(($ac_try" in 17010$as_echo "yes" >&6; }
32439 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32440 *) ac_try_echo=$ac_try;;
32441esac
32442eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32443 (eval "$ac_link") 2>conftest.er1
32444 ac_status=$?
32445 grep -v '^ *+' conftest.er1 >conftest.err
32446 rm -f conftest.er1
32447 cat conftest.err >&5
32448 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32449 (exit $ac_status); } && {
32450 test -z "$ac_c_werror_flag" ||
32451 test ! -s conftest.err
32452 } && test -s conftest$ac_exeext &&
32453 $as_test_x conftest$ac_exeext; then
32454 { echo "$as_me:$LINENO: result: yes" >&5
32455echo "${ECHO_T}yes" >&6; }
32456 17011
32457cat >>confdefs.h <<\_ACEOF 17012$as_echo "#define HAVE__RES_EXTERN 1" >>confdefs.h
32458#define HAVE__RES_EXTERN 1
32459_ACEOF
32460 17013
32461 17014
32462else 17015else
32463 echo "$as_me: failed program was:" >&5 17016 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32464sed 's/^/| /' conftest.$ac_ext >&5 17017$as_echo "no" >&6; }
32465
32466 { echo "$as_me:$LINENO: result: no" >&5
32467echo "${ECHO_T}no" >&6; }
32468 17018
32469fi 17019fi
32470 17020rm -f core conftest.err conftest.$ac_objext \
32471rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17021 conftest$ac_exeext conftest.$ac_ext
32472 conftest$ac_exeext conftest.$ac_ext
32473 17022
32474# Check whether user wants SELinux support 17023# Check whether user wants SELinux support
32475SELINUX_MSG="no" 17024SELINUX_MSG="no"
32476LIBSELINUX="" 17025LIBSELINUX=""
32477 17026
32478# Check whether --with-selinux was given. 17027# Check whether --with-selinux was given.
32479if test "${with_selinux+set}" = set; then 17028if test "${with_selinux+set}" = set; then :
32480 withval=$with_selinux; if test "x$withval" != "xno" ; then 17029 withval=$with_selinux; if test "x$withval" != "xno" ; then
32481 save_LIBS="$LIBS" 17030 save_LIBS="$LIBS"
32482 17031
32483cat >>confdefs.h <<\_ACEOF 17032$as_echo "#define WITH_SELINUX 1" >>confdefs.h
32484#define WITH_SELINUX 1
32485_ACEOF
32486 17033
32487 SELINUX_MSG="yes" 17034 SELINUX_MSG="yes"
32488 if test "${ac_cv_header_selinux_selinux_h+set}" = set; then 17035 ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
32489 { echo "$as_me:$LINENO: checking for selinux/selinux.h" >&5 17036if test "x$ac_cv_header_selinux_selinux_h" = xyes; then :
32490echo $ECHO_N "checking for selinux/selinux.h... $ECHO_C" >&6; }
32491if test "${ac_cv_header_selinux_selinux_h+set}" = set; then
32492 echo $ECHO_N "(cached) $ECHO_C" >&6
32493fi
32494{ echo "$as_me:$LINENO: result: $ac_cv_header_selinux_selinux_h" >&5
32495echo "${ECHO_T}$ac_cv_header_selinux_selinux_h" >&6; }
32496else
32497 # Is the header compilable?
32498{ echo "$as_me:$LINENO: checking selinux/selinux.h usability" >&5
32499echo $ECHO_N "checking selinux/selinux.h usability... $ECHO_C" >&6; }
32500cat >conftest.$ac_ext <<_ACEOF
32501/* confdefs.h. */
32502_ACEOF
32503cat confdefs.h >>conftest.$ac_ext
32504cat >>conftest.$ac_ext <<_ACEOF
32505/* end confdefs.h. */
32506$ac_includes_default
32507#include <selinux/selinux.h>
32508_ACEOF
32509rm -f conftest.$ac_objext
32510if { (ac_try="$ac_compile"
32511case "(($ac_try" in
32512 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32513 *) ac_try_echo=$ac_try;;
32514esac
32515eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32516 (eval "$ac_compile") 2>conftest.er1
32517 ac_status=$?
32518 grep -v '^ *+' conftest.er1 >conftest.err
32519 rm -f conftest.er1
32520 cat conftest.err >&5
32521 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32522 (exit $ac_status); } && {
32523 test -z "$ac_c_werror_flag" ||
32524 test ! -s conftest.err
32525 } && test -s conftest.$ac_objext; then
32526 ac_header_compiler=yes
32527else
32528 echo "$as_me: failed program was:" >&5
32529sed 's/^/| /' conftest.$ac_ext >&5
32530
32531 ac_header_compiler=no
32532fi
32533
32534rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32535{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
32536echo "${ECHO_T}$ac_header_compiler" >&6; }
32537
32538# Is the header present?
32539{ echo "$as_me:$LINENO: checking selinux/selinux.h presence" >&5
32540echo $ECHO_N "checking selinux/selinux.h presence... $ECHO_C" >&6; }
32541cat >conftest.$ac_ext <<_ACEOF
32542/* confdefs.h. */
32543_ACEOF
32544cat confdefs.h >>conftest.$ac_ext
32545cat >>conftest.$ac_ext <<_ACEOF
32546/* end confdefs.h. */
32547#include <selinux/selinux.h>
32548_ACEOF
32549if { (ac_try="$ac_cpp conftest.$ac_ext"
32550case "(($ac_try" in
32551 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32552 *) ac_try_echo=$ac_try;;
32553esac
32554eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32555 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
32556 ac_status=$?
32557 grep -v '^ *+' conftest.er1 >conftest.err
32558 rm -f conftest.er1
32559 cat conftest.err >&5
32560 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32561 (exit $ac_status); } >/dev/null && {
32562 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
32563 test ! -s conftest.err
32564 }; then
32565 ac_header_preproc=yes
32566else
32567 echo "$as_me: failed program was:" >&5
32568sed 's/^/| /' conftest.$ac_ext >&5
32569
32570 ac_header_preproc=no
32571fi
32572
32573rm -f conftest.err conftest.$ac_ext
32574{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
32575echo "${ECHO_T}$ac_header_preproc" >&6; }
32576
32577# So? What about this header?
32578case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
32579 yes:no: )
32580 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: accepted by the compiler, rejected by the preprocessor!" >&5
32581echo "$as_me: WARNING: selinux/selinux.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
32582 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: proceeding with the compiler's result" >&5
32583echo "$as_me: WARNING: selinux/selinux.h: proceeding with the compiler's result" >&2;}
32584 ac_header_preproc=yes
32585 ;;
32586 no:yes:* )
32587 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: present but cannot be compiled" >&5
32588echo "$as_me: WARNING: selinux/selinux.h: present but cannot be compiled" >&2;}
32589 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: check for missing prerequisite headers?" >&5
32590echo "$as_me: WARNING: selinux/selinux.h: check for missing prerequisite headers?" >&2;}
32591 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: see the Autoconf documentation" >&5
32592echo "$as_me: WARNING: selinux/selinux.h: see the Autoconf documentation" >&2;}
32593 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: section \"Present But Cannot Be Compiled\"" >&5
32594echo "$as_me: WARNING: selinux/selinux.h: section \"Present But Cannot Be Compiled\"" >&2;}
32595 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: proceeding with the preprocessor's result" >&5
32596echo "$as_me: WARNING: selinux/selinux.h: proceeding with the preprocessor's result" >&2;}
32597 { echo "$as_me:$LINENO: WARNING: selinux/selinux.h: in the future, the compiler will take precedence" >&5
32598echo "$as_me: WARNING: selinux/selinux.h: in the future, the compiler will take precedence" >&2;}
32599 ( cat <<\_ASBOX
32600## ------------------------------------------- ##
32601## Report this to openssh-unix-dev@mindrot.org ##
32602## ------------------------------------------- ##
32603_ASBOX
32604 ) | sed "s/^/$as_me: WARNING: /" >&2
32605 ;;
32606esac
32607{ echo "$as_me:$LINENO: checking for selinux/selinux.h" >&5
32608echo $ECHO_N "checking for selinux/selinux.h... $ECHO_C" >&6; }
32609if test "${ac_cv_header_selinux_selinux_h+set}" = set; then
32610 echo $ECHO_N "(cached) $ECHO_C" >&6
32611else
32612 ac_cv_header_selinux_selinux_h=$ac_header_preproc
32613fi
32614{ echo "$as_me:$LINENO: result: $ac_cv_header_selinux_selinux_h" >&5
32615echo "${ECHO_T}$ac_cv_header_selinux_selinux_h" >&6; }
32616 17037
32617fi
32618if test $ac_cv_header_selinux_selinux_h = yes; then
32619 :
32620else 17038else
32621 { { echo "$as_me:$LINENO: error: SELinux support requires selinux.h header" >&5 17039 as_fn_error $? "SELinux support requires selinux.h header" "$LINENO" 5
32622echo "$as_me: error: SELinux support requires selinux.h header" >&2;}
32623 { (exit 1); exit 1; }; }
32624fi 17040fi
32625 17041
32626 17042
32627 { echo "$as_me:$LINENO: checking for setexeccon in -lselinux" >&5 17043 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setexeccon in -lselinux" >&5
32628echo $ECHO_N "checking for setexeccon in -lselinux... $ECHO_C" >&6; } 17044$as_echo_n "checking for setexeccon in -lselinux... " >&6; }
32629if test "${ac_cv_lib_selinux_setexeccon+set}" = set; then 17045if ${ac_cv_lib_selinux_setexeccon+:} false; then :
32630 echo $ECHO_N "(cached) $ECHO_C" >&6 17046 $as_echo_n "(cached) " >&6
32631else 17047else
32632 ac_check_lib_save_LIBS=$LIBS 17048 ac_check_lib_save_LIBS=$LIBS
32633LIBS="-lselinux $LIBS" 17049LIBS="-lselinux $LIBS"
32634cat >conftest.$ac_ext <<_ACEOF 17050cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32635/* confdefs.h. */
32636_ACEOF
32637cat confdefs.h >>conftest.$ac_ext
32638cat >>conftest.$ac_ext <<_ACEOF
32639/* end confdefs.h. */ 17051/* end confdefs.h. */
32640 17052
32641/* Override any GCC internal prototype to avoid an error. 17053/* Override any GCC internal prototype to avoid an error.
@@ -32653,140 +17065,34 @@ return setexeccon ();
32653 return 0; 17065 return 0;
32654} 17066}
32655_ACEOF 17067_ACEOF
32656rm -f conftest.$ac_objext conftest$ac_exeext 17068if ac_fn_c_try_link "$LINENO"; then :
32657if { (ac_try="$ac_link"
32658case "(($ac_try" in
32659 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32660 *) ac_try_echo=$ac_try;;
32661esac
32662eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32663 (eval "$ac_link") 2>conftest.er1
32664 ac_status=$?
32665 grep -v '^ *+' conftest.er1 >conftest.err
32666 rm -f conftest.er1
32667 cat conftest.err >&5
32668 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32669 (exit $ac_status); } && {
32670 test -z "$ac_c_werror_flag" ||
32671 test ! -s conftest.err
32672 } && test -s conftest$ac_exeext &&
32673 $as_test_x conftest$ac_exeext; then
32674 ac_cv_lib_selinux_setexeccon=yes 17069 ac_cv_lib_selinux_setexeccon=yes
32675else 17070else
32676 echo "$as_me: failed program was:" >&5 17071 ac_cv_lib_selinux_setexeccon=no
32677sed 's/^/| /' conftest.$ac_ext >&5
32678
32679 ac_cv_lib_selinux_setexeccon=no
32680fi 17072fi
32681 17073rm -f core conftest.err conftest.$ac_objext \
32682rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17074 conftest$ac_exeext conftest.$ac_ext
32683 conftest$ac_exeext conftest.$ac_ext
32684LIBS=$ac_check_lib_save_LIBS 17075LIBS=$ac_check_lib_save_LIBS
32685fi 17076fi
32686{ echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_setexeccon" >&5 17077{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_setexeccon" >&5
32687echo "${ECHO_T}$ac_cv_lib_selinux_setexeccon" >&6; } 17078$as_echo "$ac_cv_lib_selinux_setexeccon" >&6; }
32688if test $ac_cv_lib_selinux_setexeccon = yes; then 17079if test "x$ac_cv_lib_selinux_setexeccon" = xyes; then :
32689 LIBSELINUX="-lselinux" 17080 LIBSELINUX="-lselinux"
32690 LIBS="$LIBS -lselinux" 17081 LIBS="$LIBS -lselinux"
32691 17082
32692else 17083else
32693 { { echo "$as_me:$LINENO: error: SELinux support requires libselinux library" >&5 17084 as_fn_error $? "SELinux support requires libselinux library" "$LINENO" 5
32694echo "$as_me: error: SELinux support requires libselinux library" >&2;}
32695 { (exit 1); exit 1; }; }
32696fi 17085fi
32697 17086
32698 SSHLIBS="$SSHLIBS $LIBSELINUX" 17087 SSHLIBS="$SSHLIBS $LIBSELINUX"
32699 SSHDLIBS="$SSHDLIBS $LIBSELINUX" 17088 SSHDLIBS="$SSHDLIBS $LIBSELINUX"
32700 17089 for ac_func in getseuserbyname get_default_context_with_level
32701 17090do :
32702for ac_func in getseuserbyname get_default_context_with_level 17091 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
32703do 17092ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
32704as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` 17093if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
32705{ echo "$as_me:$LINENO: checking for $ac_func" >&5
32706echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
32707if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
32708 echo $ECHO_N "(cached) $ECHO_C" >&6
32709else
32710 cat >conftest.$ac_ext <<_ACEOF
32711/* confdefs.h. */
32712_ACEOF
32713cat confdefs.h >>conftest.$ac_ext
32714cat >>conftest.$ac_ext <<_ACEOF
32715/* end confdefs.h. */
32716/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
32717 For example, HP-UX 11i <limits.h> declares gettimeofday. */
32718#define $ac_func innocuous_$ac_func
32719
32720/* System header to define __stub macros and hopefully few prototypes,
32721 which can conflict with char $ac_func (); below.
32722 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
32723 <limits.h> exists even on freestanding compilers. */
32724
32725#ifdef __STDC__
32726# include <limits.h>
32727#else
32728# include <assert.h>
32729#endif
32730
32731#undef $ac_func
32732
32733/* Override any GCC internal prototype to avoid an error.
32734 Use char because int might match the return type of a GCC
32735 builtin and then its argument prototype would still apply. */
32736#ifdef __cplusplus
32737extern "C"
32738#endif
32739char $ac_func ();
32740/* The GNU C library defines this for functions which it implements
32741 to always fail with ENOSYS. Some functions are actually named
32742 something starting with __ and the normal name is an alias. */
32743#if defined __stub_$ac_func || defined __stub___$ac_func
32744choke me
32745#endif
32746
32747int
32748main ()
32749{
32750return $ac_func ();
32751 ;
32752 return 0;
32753}
32754_ACEOF
32755rm -f conftest.$ac_objext conftest$ac_exeext
32756if { (ac_try="$ac_link"
32757case "(($ac_try" in
32758 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32759 *) ac_try_echo=$ac_try;;
32760esac
32761eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32762 (eval "$ac_link") 2>conftest.er1
32763 ac_status=$?
32764 grep -v '^ *+' conftest.er1 >conftest.err
32765 rm -f conftest.er1
32766 cat conftest.err >&5
32767 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32768 (exit $ac_status); } && {
32769 test -z "$ac_c_werror_flag" ||
32770 test ! -s conftest.err
32771 } && test -s conftest$ac_exeext &&
32772 $as_test_x conftest$ac_exeext; then
32773 eval "$as_ac_var=yes"
32774else
32775 echo "$as_me: failed program was:" >&5
32776sed 's/^/| /' conftest.$ac_ext >&5
32777
32778 eval "$as_ac_var=no"
32779fi
32780
32781rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
32782 conftest$ac_exeext conftest.$ac_ext
32783fi
32784ac_res=`eval echo '${'$as_ac_var'}'`
32785 { echo "$as_me:$LINENO: result: $ac_res" >&5
32786echo "${ECHO_T}$ac_res" >&6; }
32787if test `eval echo '${'$as_ac_var'}'` = yes; then
32788 cat >>confdefs.h <<_ACEOF 17094 cat >>confdefs.h <<_ACEOF
32789#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 17095#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
32790_ACEOF 17096_ACEOF
32791 17097
32792fi 17098fi
@@ -32804,7 +17110,7 @@ fi
32804KRB5_MSG="no" 17110KRB5_MSG="no"
32805 17111
32806# Check whether --with-kerberos5 was given. 17112# Check whether --with-kerberos5 was given.
32807if test "${with_kerberos5+set}" = set; then 17113if test "${with_kerberos5+set}" = set; then :
32808 withval=$with_kerberos5; if test "x$withval" != "xno" ; then 17114 withval=$with_kerberos5; if test "x$withval" != "xno" ; then
32809 if test "x$withval" = "xyes" ; then 17115 if test "x$withval" = "xyes" ; then
32810 KRB5ROOT="/usr/local" 17116 KRB5ROOT="/usr/local"
@@ -32813,18 +17119,17 @@ if test "${with_kerberos5+set}" = set; then
32813 fi 17119 fi
32814 17120
32815 17121
32816cat >>confdefs.h <<\_ACEOF 17122$as_echo "#define KRB5 1" >>confdefs.h
32817#define KRB5 1
32818_ACEOF
32819 17123
32820 KRB5_MSG="yes" 17124 KRB5_MSG="yes"
32821 17125
32822 # Extract the first word of "krb5-config", so it can be a program name with args. 17126 if test -n "$ac_tool_prefix"; then
32823set dummy krb5-config; ac_word=$2 17127 # Extract the first word of "${ac_tool_prefix}krb5-config", so it can be a program name with args.
32824{ echo "$as_me:$LINENO: checking for $ac_word" >&5 17128set dummy ${ac_tool_prefix}krb5-config; ac_word=$2
32825echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 17129{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
32826if test "${ac_cv_path_KRB5CONF+set}" = set; then 17130$as_echo_n "checking for $ac_word... " >&6; }
32827 echo $ECHO_N "(cached) $ECHO_C" >&6 17131if ${ac_cv_path_KRB5CONF+:} false; then :
17132 $as_echo_n "(cached) " >&6
32828else 17133else
32829 case $KRB5CONF in 17134 case $KRB5CONF in
32830 [\\/]* | ?:[\\/]*) 17135 [\\/]* | ?:[\\/]*)
@@ -32837,59 +17142,110 @@ for as_dir in $as_dummy
32837do 17142do
32838 IFS=$as_save_IFS 17143 IFS=$as_save_IFS
32839 test -z "$as_dir" && as_dir=. 17144 test -z "$as_dir" && as_dir=.
32840 for ac_exec_ext in '' $ac_executable_extensions; do 17145 for ac_exec_ext in '' $ac_executable_extensions; do
32841 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 17146 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
32842 ac_cv_path_KRB5CONF="$as_dir/$ac_word$ac_exec_ext" 17147 ac_cv_path_KRB5CONF="$as_dir/$ac_word$ac_exec_ext"
32843 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 17148 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
32844 break 2 17149 break 2
32845 fi 17150 fi
32846done 17151done
32847done 17152 done
32848IFS=$as_save_IFS 17153IFS=$as_save_IFS
32849 17154
32850 test -z "$ac_cv_path_KRB5CONF" && ac_cv_path_KRB5CONF="$KRB5ROOT/bin/krb5-config"
32851 ;; 17155 ;;
32852esac 17156esac
32853fi 17157fi
32854KRB5CONF=$ac_cv_path_KRB5CONF 17158KRB5CONF=$ac_cv_path_KRB5CONF
32855if test -n "$KRB5CONF"; then 17159if test -n "$KRB5CONF"; then
32856 { echo "$as_me:$LINENO: result: $KRB5CONF" >&5 17160 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5CONF" >&5
32857echo "${ECHO_T}$KRB5CONF" >&6; } 17161$as_echo "$KRB5CONF" >&6; }
17162else
17163 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
17164$as_echo "no" >&6; }
17165fi
17166
17167
17168fi
17169if test -z "$ac_cv_path_KRB5CONF"; then
17170 ac_pt_KRB5CONF=$KRB5CONF
17171 # Extract the first word of "krb5-config", so it can be a program name with args.
17172set dummy krb5-config; ac_word=$2
17173{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
17174$as_echo_n "checking for $ac_word... " >&6; }
17175if ${ac_cv_path_ac_pt_KRB5CONF+:} false; then :
17176 $as_echo_n "(cached) " >&6
17177else
17178 case $ac_pt_KRB5CONF in
17179 [\\/]* | ?:[\\/]*)
17180 ac_cv_path_ac_pt_KRB5CONF="$ac_pt_KRB5CONF" # Let the user override the test with a path.
17181 ;;
17182 *)
17183 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
17184as_dummy="$KRB5ROOT/bin:$PATH"
17185for as_dir in $as_dummy
17186do
17187 IFS=$as_save_IFS
17188 test -z "$as_dir" && as_dir=.
17189 for ac_exec_ext in '' $ac_executable_extensions; do
17190 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
17191 ac_cv_path_ac_pt_KRB5CONF="$as_dir/$ac_word$ac_exec_ext"
17192 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
17193 break 2
17194 fi
17195done
17196 done
17197IFS=$as_save_IFS
17198
17199 ;;
17200esac
17201fi
17202ac_pt_KRB5CONF=$ac_cv_path_ac_pt_KRB5CONF
17203if test -n "$ac_pt_KRB5CONF"; then
17204 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_KRB5CONF" >&5
17205$as_echo "$ac_pt_KRB5CONF" >&6; }
32858else 17206else
32859 { echo "$as_me:$LINENO: result: no" >&5 17207 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32860echo "${ECHO_T}no" >&6; } 17208$as_echo "no" >&6; }
32861fi 17209fi
32862 17210
17211 if test "x$ac_pt_KRB5CONF" = x; then
17212 KRB5CONF="$KRB5ROOT/bin/krb5-config"
17213 else
17214 case $cross_compiling:$ac_tool_warned in
17215yes:)
17216{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
17217$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
17218ac_tool_warned=yes ;;
17219esac
17220 KRB5CONF=$ac_pt_KRB5CONF
17221 fi
17222else
17223 KRB5CONF="$ac_cv_path_KRB5CONF"
17224fi
32863 17225
32864 if test -x $KRB5CONF ; then 17226 if test -x $KRB5CONF ; then
32865 K5CFLAGS="`$KRB5CONF --cflags`" 17227 K5CFLAGS="`$KRB5CONF --cflags`"
32866 K5LIBS="`$KRB5CONF --libs`" 17228 K5LIBS="`$KRB5CONF --libs`"
32867 CPPFLAGS="$CPPFLAGS $K5CFLAGS" 17229 CPPFLAGS="$CPPFLAGS $K5CFLAGS"
32868 17230
32869 { echo "$as_me:$LINENO: checking for gssapi support" >&5 17231 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gssapi support" >&5
32870echo $ECHO_N "checking for gssapi support... $ECHO_C" >&6; } 17232$as_echo_n "checking for gssapi support... " >&6; }
32871 if $KRB5CONF | grep gssapi >/dev/null ; then 17233 if $KRB5CONF | grep gssapi >/dev/null ; then
32872 { echo "$as_me:$LINENO: result: yes" >&5 17234 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
32873echo "${ECHO_T}yes" >&6; } 17235$as_echo "yes" >&6; }
32874 17236
32875cat >>confdefs.h <<\_ACEOF 17237$as_echo "#define GSSAPI 1" >>confdefs.h
32876#define GSSAPI 1
32877_ACEOF
32878 17238
32879 GSSCFLAGS="`$KRB5CONF --cflags gssapi`" 17239 GSSCFLAGS="`$KRB5CONF --cflags gssapi`"
32880 GSSLIBS="`$KRB5CONF --libs gssapi`" 17240 GSSLIBS="`$KRB5CONF --libs gssapi`"
32881 CPPFLAGS="$CPPFLAGS $GSSCFLAGS" 17241 CPPFLAGS="$CPPFLAGS $GSSCFLAGS"
32882 else 17242 else
32883 { echo "$as_me:$LINENO: result: no" >&5 17243 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32884echo "${ECHO_T}no" >&6; } 17244$as_echo "no" >&6; }
32885 fi 17245 fi
32886 { echo "$as_me:$LINENO: checking whether we are using Heimdal" >&5 17246 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
32887echo $ECHO_N "checking whether we are using Heimdal... $ECHO_C" >&6; } 17247$as_echo_n "checking whether we are using Heimdal... " >&6; }
32888 cat >conftest.$ac_ext <<_ACEOF 17248 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32889/* confdefs.h. */
32890_ACEOF
32891cat confdefs.h >>conftest.$ac_ext
32892cat >>conftest.$ac_ext <<_ACEOF
32893/* end confdefs.h. */ 17249/* end confdefs.h. */
32894 #include <krb5.h> 17250 #include <krb5.h>
32895 17251
@@ -32901,50 +17257,24 @@ main ()
32901 return 0; 17257 return 0;
32902} 17258}
32903_ACEOF 17259_ACEOF
32904rm -f conftest.$ac_objext 17260if ac_fn_c_try_compile "$LINENO"; then :
32905if { (ac_try="$ac_compile" 17261 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
32906case "(($ac_try" in 17262$as_echo "yes" >&6; }
32907 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
32908 *) ac_try_echo=$ac_try;;
32909esac
32910eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32911 (eval "$ac_compile") 2>conftest.er1
32912 ac_status=$?
32913 grep -v '^ *+' conftest.er1 >conftest.err
32914 rm -f conftest.er1
32915 cat conftest.err >&5
32916 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32917 (exit $ac_status); } && {
32918 test -z "$ac_c_werror_flag" ||
32919 test ! -s conftest.err
32920 } && test -s conftest.$ac_objext; then
32921 { echo "$as_me:$LINENO: result: yes" >&5
32922echo "${ECHO_T}yes" >&6; }
32923 17263
32924cat >>confdefs.h <<\_ACEOF 17264$as_echo "#define HEIMDAL 1" >>confdefs.h
32925#define HEIMDAL 1
32926_ACEOF
32927 17265
32928else 17266else
32929 echo "$as_me: failed program was:" >&5 17267 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
32930sed 's/^/| /' conftest.$ac_ext >&5 17268$as_echo "no" >&6; }
32931
32932 { echo "$as_me:$LINENO: result: no" >&5
32933echo "${ECHO_T}no" >&6; }
32934 17269
32935fi 17270fi
32936
32937rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 17271rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
32938 else 17272 else
32939 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include" 17273 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
32940 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib" 17274 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
32941 { echo "$as_me:$LINENO: checking whether we are using Heimdal" >&5 17275 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
32942echo $ECHO_N "checking whether we are using Heimdal... $ECHO_C" >&6; } 17276$as_echo_n "checking whether we are using Heimdal... " >&6; }
32943 cat >conftest.$ac_ext <<_ACEOF 17277 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32944/* confdefs.h. */
32945_ACEOF
32946cat confdefs.h >>conftest.$ac_ext
32947cat >>conftest.$ac_ext <<_ACEOF
32948/* end confdefs.h. */ 17278/* end confdefs.h. */
32949 #include <krb5.h> 17279 #include <krb5.h>
32950 17280
@@ -32956,43 +17286,21 @@ main ()
32956 return 0; 17286 return 0;
32957} 17287}
32958_ACEOF 17288_ACEOF
32959rm -f conftest.$ac_objext 17289if ac_fn_c_try_compile "$LINENO"; then :
32960if { (ac_try="$ac_compile" 17290 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
32961case "(($ac_try" in 17291$as_echo "yes" >&6; }
32962 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 17292 $as_echo "#define HEIMDAL 1" >>confdefs.h
32963 *) ac_try_echo=$ac_try;;
32964esac
32965eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
32966 (eval "$ac_compile") 2>conftest.er1
32967 ac_status=$?
32968 grep -v '^ *+' conftest.er1 >conftest.err
32969 rm -f conftest.er1
32970 cat conftest.err >&5
32971 echo "$as_me:$LINENO: \$? = $ac_status" >&5
32972 (exit $ac_status); } && {
32973 test -z "$ac_c_werror_flag" ||
32974 test ! -s conftest.err
32975 } && test -s conftest.$ac_objext; then
32976 { echo "$as_me:$LINENO: result: yes" >&5
32977echo "${ECHO_T}yes" >&6; }
32978 cat >>confdefs.h <<\_ACEOF
32979#define HEIMDAL 1
32980_ACEOF
32981 17293
32982 K5LIBS="-lkrb5" 17294 K5LIBS="-lkrb5"
32983 K5LIBS="$K5LIBS -lcom_err -lasn1" 17295 K5LIBS="$K5LIBS -lcom_err -lasn1"
32984 { echo "$as_me:$LINENO: checking for net_write in -lroken" >&5 17296 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for net_write in -lroken" >&5
32985echo $ECHO_N "checking for net_write in -lroken... $ECHO_C" >&6; } 17297$as_echo_n "checking for net_write in -lroken... " >&6; }
32986if test "${ac_cv_lib_roken_net_write+set}" = set; then 17298if ${ac_cv_lib_roken_net_write+:} false; then :
32987 echo $ECHO_N "(cached) $ECHO_C" >&6 17299 $as_echo_n "(cached) " >&6
32988else 17300else
32989 ac_check_lib_save_LIBS=$LIBS 17301 ac_check_lib_save_LIBS=$LIBS
32990LIBS="-lroken $LIBS" 17302LIBS="-lroken $LIBS"
32991cat >conftest.$ac_ext <<_ACEOF 17303cat confdefs.h - <<_ACEOF >conftest.$ac_ext
32992/* confdefs.h. */
32993_ACEOF
32994cat confdefs.h >>conftest.$ac_ext
32995cat >>conftest.$ac_ext <<_ACEOF
32996/* end confdefs.h. */ 17304/* end confdefs.h. */
32997 17305
32998/* Override any GCC internal prototype to avoid an error. 17306/* Override any GCC internal prototype to avoid an error.
@@ -33010,54 +17318,29 @@ return net_write ();
33010 return 0; 17318 return 0;
33011} 17319}
33012_ACEOF 17320_ACEOF
33013rm -f conftest.$ac_objext conftest$ac_exeext 17321if ac_fn_c_try_link "$LINENO"; then :
33014if { (ac_try="$ac_link"
33015case "(($ac_try" in
33016 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33017 *) ac_try_echo=$ac_try;;
33018esac
33019eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33020 (eval "$ac_link") 2>conftest.er1
33021 ac_status=$?
33022 grep -v '^ *+' conftest.er1 >conftest.err
33023 rm -f conftest.er1
33024 cat conftest.err >&5
33025 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33026 (exit $ac_status); } && {
33027 test -z "$ac_c_werror_flag" ||
33028 test ! -s conftest.err
33029 } && test -s conftest$ac_exeext &&
33030 $as_test_x conftest$ac_exeext; then
33031 ac_cv_lib_roken_net_write=yes 17322 ac_cv_lib_roken_net_write=yes
33032else 17323else
33033 echo "$as_me: failed program was:" >&5 17324 ac_cv_lib_roken_net_write=no
33034sed 's/^/| /' conftest.$ac_ext >&5
33035
33036 ac_cv_lib_roken_net_write=no
33037fi 17325fi
33038 17326rm -f core conftest.err conftest.$ac_objext \
33039rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17327 conftest$ac_exeext conftest.$ac_ext
33040 conftest$ac_exeext conftest.$ac_ext
33041LIBS=$ac_check_lib_save_LIBS 17328LIBS=$ac_check_lib_save_LIBS
33042fi 17329fi
33043{ echo "$as_me:$LINENO: result: $ac_cv_lib_roken_net_write" >&5 17330{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_roken_net_write" >&5
33044echo "${ECHO_T}$ac_cv_lib_roken_net_write" >&6; } 17331$as_echo "$ac_cv_lib_roken_net_write" >&6; }
33045if test $ac_cv_lib_roken_net_write = yes; then 17332if test "x$ac_cv_lib_roken_net_write" = xyes; then :
33046 K5LIBS="$K5LIBS -lroken" 17333 K5LIBS="$K5LIBS -lroken"
33047fi 17334fi
33048 17335
33049 { echo "$as_me:$LINENO: checking for des_cbc_encrypt in -ldes" >&5 17336 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
33050echo $ECHO_N "checking for des_cbc_encrypt in -ldes... $ECHO_C" >&6; } 17337$as_echo_n "checking for des_cbc_encrypt in -ldes... " >&6; }
33051if test "${ac_cv_lib_des_des_cbc_encrypt+set}" = set; then 17338if ${ac_cv_lib_des_des_cbc_encrypt+:} false; then :
33052 echo $ECHO_N "(cached) $ECHO_C" >&6 17339 $as_echo_n "(cached) " >&6
33053else 17340else
33054 ac_check_lib_save_LIBS=$LIBS 17341 ac_check_lib_save_LIBS=$LIBS
33055LIBS="-ldes $LIBS" 17342LIBS="-ldes $LIBS"
33056cat >conftest.$ac_ext <<_ACEOF 17343cat confdefs.h - <<_ACEOF >conftest.$ac_ext
33057/* confdefs.h. */
33058_ACEOF
33059cat confdefs.h >>conftest.$ac_ext
33060cat >>conftest.$ac_ext <<_ACEOF
33061/* end confdefs.h. */ 17344/* end confdefs.h. */
33062 17345
33063/* Override any GCC internal prototype to avoid an error. 17346/* Override any GCC internal prototype to avoid an error.
@@ -33075,65 +17358,36 @@ return des_cbc_encrypt ();
33075 return 0; 17358 return 0;
33076} 17359}
33077_ACEOF 17360_ACEOF
33078rm -f conftest.$ac_objext conftest$ac_exeext 17361if ac_fn_c_try_link "$LINENO"; then :
33079if { (ac_try="$ac_link"
33080case "(($ac_try" in
33081 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33082 *) ac_try_echo=$ac_try;;
33083esac
33084eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33085 (eval "$ac_link") 2>conftest.er1
33086 ac_status=$?
33087 grep -v '^ *+' conftest.er1 >conftest.err
33088 rm -f conftest.er1
33089 cat conftest.err >&5
33090 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33091 (exit $ac_status); } && {
33092 test -z "$ac_c_werror_flag" ||
33093 test ! -s conftest.err
33094 } && test -s conftest$ac_exeext &&
33095 $as_test_x conftest$ac_exeext; then
33096 ac_cv_lib_des_des_cbc_encrypt=yes 17362 ac_cv_lib_des_des_cbc_encrypt=yes
33097else 17363else
33098 echo "$as_me: failed program was:" >&5 17364 ac_cv_lib_des_des_cbc_encrypt=no
33099sed 's/^/| /' conftest.$ac_ext >&5
33100
33101 ac_cv_lib_des_des_cbc_encrypt=no
33102fi 17365fi
33103 17366rm -f core conftest.err conftest.$ac_objext \
33104rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17367 conftest$ac_exeext conftest.$ac_ext
33105 conftest$ac_exeext conftest.$ac_ext
33106LIBS=$ac_check_lib_save_LIBS 17368LIBS=$ac_check_lib_save_LIBS
33107fi 17369fi
33108{ echo "$as_me:$LINENO: result: $ac_cv_lib_des_des_cbc_encrypt" >&5 17370{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_cbc_encrypt" >&5
33109echo "${ECHO_T}$ac_cv_lib_des_des_cbc_encrypt" >&6; } 17371$as_echo "$ac_cv_lib_des_des_cbc_encrypt" >&6; }
33110if test $ac_cv_lib_des_des_cbc_encrypt = yes; then 17372if test "x$ac_cv_lib_des_des_cbc_encrypt" = xyes; then :
33111 K5LIBS="$K5LIBS -ldes" 17373 K5LIBS="$K5LIBS -ldes"
33112fi 17374fi
33113 17375
33114 17376
33115else 17377else
33116 echo "$as_me: failed program was:" >&5 17378 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
33117sed 's/^/| /' conftest.$ac_ext >&5 17379$as_echo "no" >&6; }
33118
33119 { echo "$as_me:$LINENO: result: no" >&5
33120echo "${ECHO_T}no" >&6; }
33121 K5LIBS="-lkrb5 -lk5crypto -lcom_err" 17380 K5LIBS="-lkrb5 -lk5crypto -lcom_err"
33122 17381
33123fi 17382fi
33124
33125rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 17383rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
33126 { echo "$as_me:$LINENO: checking for library containing dn_expand" >&5 17384 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
33127echo $ECHO_N "checking for library containing dn_expand... $ECHO_C" >&6; } 17385$as_echo_n "checking for library containing dn_expand... " >&6; }
33128if test "${ac_cv_search_dn_expand+set}" = set; then 17386if ${ac_cv_search_dn_expand+:} false; then :
33129 echo $ECHO_N "(cached) $ECHO_C" >&6 17387 $as_echo_n "(cached) " >&6
33130else 17388else
33131 ac_func_search_save_LIBS=$LIBS 17389 ac_func_search_save_LIBS=$LIBS
33132cat >conftest.$ac_ext <<_ACEOF 17390cat confdefs.h - <<_ACEOF >conftest.$ac_ext
33133/* confdefs.h. */
33134_ACEOF
33135cat confdefs.h >>conftest.$ac_ext
33136cat >>conftest.$ac_ext <<_ACEOF
33137/* end confdefs.h. */ 17391/* end confdefs.h. */
33138 17392
33139/* Override any GCC internal prototype to avoid an error. 17393/* Override any GCC internal prototype to avoid an error.
@@ -33158,67 +17412,40 @@ for ac_lib in '' resolv; do
33158 ac_res=-l$ac_lib 17412 ac_res=-l$ac_lib
33159 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 17413 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
33160 fi 17414 fi
33161 rm -f conftest.$ac_objext conftest$ac_exeext 17415 if ac_fn_c_try_link "$LINENO"; then :
33162if { (ac_try="$ac_link"
33163case "(($ac_try" in
33164 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33165 *) ac_try_echo=$ac_try;;
33166esac
33167eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33168 (eval "$ac_link") 2>conftest.er1
33169 ac_status=$?
33170 grep -v '^ *+' conftest.er1 >conftest.err
33171 rm -f conftest.er1
33172 cat conftest.err >&5
33173 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33174 (exit $ac_status); } && {
33175 test -z "$ac_c_werror_flag" ||
33176 test ! -s conftest.err
33177 } && test -s conftest$ac_exeext &&
33178 $as_test_x conftest$ac_exeext; then
33179 ac_cv_search_dn_expand=$ac_res 17416 ac_cv_search_dn_expand=$ac_res
33180else
33181 echo "$as_me: failed program was:" >&5
33182sed 's/^/| /' conftest.$ac_ext >&5
33183
33184
33185fi 17417fi
33186 17418rm -f core conftest.err conftest.$ac_objext \
33187rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17419 conftest$ac_exeext
33188 conftest$ac_exeext 17420 if ${ac_cv_search_dn_expand+:} false; then :
33189 if test "${ac_cv_search_dn_expand+set}" = set; then
33190 break 17421 break
33191fi 17422fi
33192done 17423done
33193if test "${ac_cv_search_dn_expand+set}" = set; then 17424if ${ac_cv_search_dn_expand+:} false; then :
33194 : 17425
33195else 17426else
33196 ac_cv_search_dn_expand=no 17427 ac_cv_search_dn_expand=no
33197fi 17428fi
33198rm conftest.$ac_ext 17429rm conftest.$ac_ext
33199LIBS=$ac_func_search_save_LIBS 17430LIBS=$ac_func_search_save_LIBS
33200fi 17431fi
33201{ echo "$as_me:$LINENO: result: $ac_cv_search_dn_expand" >&5 17432{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
33202echo "${ECHO_T}$ac_cv_search_dn_expand" >&6; } 17433$as_echo "$ac_cv_search_dn_expand" >&6; }
33203ac_res=$ac_cv_search_dn_expand 17434ac_res=$ac_cv_search_dn_expand
33204if test "$ac_res" != no; then 17435if test "$ac_res" != no; then :
33205 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 17436 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
33206 17437
33207fi 17438fi
33208 17439
33209 17440
33210 { echo "$as_me:$LINENO: checking for gss_init_sec_context in -lgssapi_krb5" >&5 17441 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi_krb5" >&5
33211echo $ECHO_N "checking for gss_init_sec_context in -lgssapi_krb5... $ECHO_C" >&6; } 17442$as_echo_n "checking for gss_init_sec_context in -lgssapi_krb5... " >&6; }
33212if test "${ac_cv_lib_gssapi_krb5_gss_init_sec_context+set}" = set; then 17443if ${ac_cv_lib_gssapi_krb5_gss_init_sec_context+:} false; then :
33213 echo $ECHO_N "(cached) $ECHO_C" >&6 17444 $as_echo_n "(cached) " >&6
33214else 17445else
33215 ac_check_lib_save_LIBS=$LIBS 17446 ac_check_lib_save_LIBS=$LIBS
33216LIBS="-lgssapi_krb5 $LIBS" 17447LIBS="-lgssapi_krb5 $LIBS"
33217cat >conftest.$ac_ext <<_ACEOF 17448cat confdefs.h - <<_ACEOF >conftest.$ac_ext
33218/* confdefs.h. */
33219_ACEOF
33220cat confdefs.h >>conftest.$ac_ext
33221cat >>conftest.$ac_ext <<_ACEOF
33222/* end confdefs.h. */ 17449/* end confdefs.h. */
33223 17450
33224/* Override any GCC internal prototype to avoid an error. 17451/* Override any GCC internal prototype to avoid an error.
@@ -33236,57 +17463,30 @@ return gss_init_sec_context ();
33236 return 0; 17463 return 0;
33237} 17464}
33238_ACEOF 17465_ACEOF
33239rm -f conftest.$ac_objext conftest$ac_exeext 17466if ac_fn_c_try_link "$LINENO"; then :
33240if { (ac_try="$ac_link"
33241case "(($ac_try" in
33242 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33243 *) ac_try_echo=$ac_try;;
33244esac
33245eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33246 (eval "$ac_link") 2>conftest.er1
33247 ac_status=$?
33248 grep -v '^ *+' conftest.er1 >conftest.err
33249 rm -f conftest.er1
33250 cat conftest.err >&5
33251 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33252 (exit $ac_status); } && {
33253 test -z "$ac_c_werror_flag" ||
33254 test ! -s conftest.err
33255 } && test -s conftest$ac_exeext &&
33256 $as_test_x conftest$ac_exeext; then
33257 ac_cv_lib_gssapi_krb5_gss_init_sec_context=yes 17467 ac_cv_lib_gssapi_krb5_gss_init_sec_context=yes
33258else 17468else
33259 echo "$as_me: failed program was:" >&5 17469 ac_cv_lib_gssapi_krb5_gss_init_sec_context=no
33260sed 's/^/| /' conftest.$ac_ext >&5
33261
33262 ac_cv_lib_gssapi_krb5_gss_init_sec_context=no
33263fi 17470fi
33264 17471rm -f core conftest.err conftest.$ac_objext \
33265rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17472 conftest$ac_exeext conftest.$ac_ext
33266 conftest$ac_exeext conftest.$ac_ext
33267LIBS=$ac_check_lib_save_LIBS 17473LIBS=$ac_check_lib_save_LIBS
33268fi 17474fi
33269{ echo "$as_me:$LINENO: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5 17475{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5
33270echo "${ECHO_T}$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6; } 17476$as_echo "$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6; }
33271if test $ac_cv_lib_gssapi_krb5_gss_init_sec_context = yes; then 17477if test "x$ac_cv_lib_gssapi_krb5_gss_init_sec_context" = xyes; then :
33272 cat >>confdefs.h <<\_ACEOF 17478 $as_echo "#define GSSAPI 1" >>confdefs.h
33273#define GSSAPI 1
33274_ACEOF
33275 17479
33276 GSSLIBS="-lgssapi_krb5" 17480 GSSLIBS="-lgssapi_krb5"
33277else 17481else
33278 { echo "$as_me:$LINENO: checking for gss_init_sec_context in -lgssapi" >&5 17482 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi" >&5
33279echo $ECHO_N "checking for gss_init_sec_context in -lgssapi... $ECHO_C" >&6; } 17483$as_echo_n "checking for gss_init_sec_context in -lgssapi... " >&6; }
33280if test "${ac_cv_lib_gssapi_gss_init_sec_context+set}" = set; then 17484if ${ac_cv_lib_gssapi_gss_init_sec_context+:} false; then :
33281 echo $ECHO_N "(cached) $ECHO_C" >&6 17485 $as_echo_n "(cached) " >&6
33282else 17486else
33283 ac_check_lib_save_LIBS=$LIBS 17487 ac_check_lib_save_LIBS=$LIBS
33284LIBS="-lgssapi $LIBS" 17488LIBS="-lgssapi $LIBS"
33285cat >conftest.$ac_ext <<_ACEOF 17489cat confdefs.h - <<_ACEOF >conftest.$ac_ext
33286/* confdefs.h. */
33287_ACEOF
33288cat confdefs.h >>conftest.$ac_ext
33289cat >>conftest.$ac_ext <<_ACEOF
33290/* end confdefs.h. */ 17490/* end confdefs.h. */
33291 17491
33292/* Override any GCC internal prototype to avoid an error. 17492/* Override any GCC internal prototype to avoid an error.
@@ -33304,57 +17504,30 @@ return gss_init_sec_context ();
33304 return 0; 17504 return 0;
33305} 17505}
33306_ACEOF 17506_ACEOF
33307rm -f conftest.$ac_objext conftest$ac_exeext 17507if ac_fn_c_try_link "$LINENO"; then :
33308if { (ac_try="$ac_link"
33309case "(($ac_try" in
33310 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33311 *) ac_try_echo=$ac_try;;
33312esac
33313eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33314 (eval "$ac_link") 2>conftest.er1
33315 ac_status=$?
33316 grep -v '^ *+' conftest.er1 >conftest.err
33317 rm -f conftest.er1
33318 cat conftest.err >&5
33319 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33320 (exit $ac_status); } && {
33321 test -z "$ac_c_werror_flag" ||
33322 test ! -s conftest.err
33323 } && test -s conftest$ac_exeext &&
33324 $as_test_x conftest$ac_exeext; then
33325 ac_cv_lib_gssapi_gss_init_sec_context=yes 17508 ac_cv_lib_gssapi_gss_init_sec_context=yes
33326else 17509else
33327 echo "$as_me: failed program was:" >&5 17510 ac_cv_lib_gssapi_gss_init_sec_context=no
33328sed 's/^/| /' conftest.$ac_ext >&5
33329
33330 ac_cv_lib_gssapi_gss_init_sec_context=no
33331fi 17511fi
33332 17512rm -f core conftest.err conftest.$ac_objext \
33333rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17513 conftest$ac_exeext conftest.$ac_ext
33334 conftest$ac_exeext conftest.$ac_ext
33335LIBS=$ac_check_lib_save_LIBS 17514LIBS=$ac_check_lib_save_LIBS
33336fi 17515fi
33337{ echo "$as_me:$LINENO: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5 17516{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5
33338echo "${ECHO_T}$ac_cv_lib_gssapi_gss_init_sec_context" >&6; } 17517$as_echo "$ac_cv_lib_gssapi_gss_init_sec_context" >&6; }
33339if test $ac_cv_lib_gssapi_gss_init_sec_context = yes; then 17518if test "x$ac_cv_lib_gssapi_gss_init_sec_context" = xyes; then :
33340 cat >>confdefs.h <<\_ACEOF 17519 $as_echo "#define GSSAPI 1" >>confdefs.h
33341#define GSSAPI 1
33342_ACEOF
33343 17520
33344 GSSLIBS="-lgssapi" 17521 GSSLIBS="-lgssapi"
33345else 17522else
33346 { echo "$as_me:$LINENO: checking for gss_init_sec_context in -lgss" >&5 17523 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgss" >&5
33347echo $ECHO_N "checking for gss_init_sec_context in -lgss... $ECHO_C" >&6; } 17524$as_echo_n "checking for gss_init_sec_context in -lgss... " >&6; }
33348if test "${ac_cv_lib_gss_gss_init_sec_context+set}" = set; then 17525if ${ac_cv_lib_gss_gss_init_sec_context+:} false; then :
33349 echo $ECHO_N "(cached) $ECHO_C" >&6 17526 $as_echo_n "(cached) " >&6
33350else 17527else
33351 ac_check_lib_save_LIBS=$LIBS 17528 ac_check_lib_save_LIBS=$LIBS
33352LIBS="-lgss $LIBS" 17529LIBS="-lgss $LIBS"
33353cat >conftest.$ac_ext <<_ACEOF 17530cat confdefs.h - <<_ACEOF >conftest.$ac_ext
33354/* confdefs.h. */
33355_ACEOF
33356cat confdefs.h >>conftest.$ac_ext
33357cat >>conftest.$ac_ext <<_ACEOF
33358/* end confdefs.h. */ 17531/* end confdefs.h. */
33359 17532
33360/* Override any GCC internal prototype to avoid an error. 17533/* Override any GCC internal prototype to avoid an error.
@@ -33372,47 +17545,24 @@ return gss_init_sec_context ();
33372 return 0; 17545 return 0;
33373} 17546}
33374_ACEOF 17547_ACEOF
33375rm -f conftest.$ac_objext conftest$ac_exeext 17548if ac_fn_c_try_link "$LINENO"; then :
33376if { (ac_try="$ac_link"
33377case "(($ac_try" in
33378 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33379 *) ac_try_echo=$ac_try;;
33380esac
33381eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33382 (eval "$ac_link") 2>conftest.er1
33383 ac_status=$?
33384 grep -v '^ *+' conftest.er1 >conftest.err
33385 rm -f conftest.er1
33386 cat conftest.err >&5
33387 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33388 (exit $ac_status); } && {
33389 test -z "$ac_c_werror_flag" ||
33390 test ! -s conftest.err
33391 } && test -s conftest$ac_exeext &&
33392 $as_test_x conftest$ac_exeext; then
33393 ac_cv_lib_gss_gss_init_sec_context=yes 17549 ac_cv_lib_gss_gss_init_sec_context=yes
33394else 17550else
33395 echo "$as_me: failed program was:" >&5 17551 ac_cv_lib_gss_gss_init_sec_context=no
33396sed 's/^/| /' conftest.$ac_ext >&5
33397
33398 ac_cv_lib_gss_gss_init_sec_context=no
33399fi 17552fi
33400 17553rm -f core conftest.err conftest.$ac_objext \
33401rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17554 conftest$ac_exeext conftest.$ac_ext
33402 conftest$ac_exeext conftest.$ac_ext
33403LIBS=$ac_check_lib_save_LIBS 17555LIBS=$ac_check_lib_save_LIBS
33404fi 17556fi
33405{ echo "$as_me:$LINENO: result: $ac_cv_lib_gss_gss_init_sec_context" >&5 17557{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gss_gss_init_sec_context" >&5
33406echo "${ECHO_T}$ac_cv_lib_gss_gss_init_sec_context" >&6; } 17558$as_echo "$ac_cv_lib_gss_gss_init_sec_context" >&6; }
33407if test $ac_cv_lib_gss_gss_init_sec_context = yes; then 17559if test "x$ac_cv_lib_gss_gss_init_sec_context" = xyes; then :
33408 cat >>confdefs.h <<\_ACEOF 17560 $as_echo "#define GSSAPI 1" >>confdefs.h
33409#define GSSAPI 1
33410_ACEOF
33411 17561
33412 GSSLIBS="-lgss" 17562 GSSLIBS="-lgss"
33413else 17563else
33414 { echo "$as_me:$LINENO: WARNING: Cannot find any suitable gss-api library - build may fail" >&5 17564 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api library - build may fail" >&5
33415echo "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;} 17565$as_echo "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;}
33416fi 17566fi
33417 17567
33418 17568
@@ -33422,285 +17572,23 @@ fi
33422fi 17572fi
33423 17573
33424 17574
33425 if test "${ac_cv_header_gssapi_h+set}" = set; then 17575 ac_fn_c_check_header_mongrel "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
33426 { echo "$as_me:$LINENO: checking for gssapi.h" >&5 17576if test "x$ac_cv_header_gssapi_h" = xyes; then :
33427echo $ECHO_N "checking for gssapi.h... $ECHO_C" >&6; }
33428if test "${ac_cv_header_gssapi_h+set}" = set; then
33429 echo $ECHO_N "(cached) $ECHO_C" >&6
33430fi
33431{ echo "$as_me:$LINENO: result: $ac_cv_header_gssapi_h" >&5
33432echo "${ECHO_T}$ac_cv_header_gssapi_h" >&6; }
33433else
33434 # Is the header compilable?
33435{ echo "$as_me:$LINENO: checking gssapi.h usability" >&5
33436echo $ECHO_N "checking gssapi.h usability... $ECHO_C" >&6; }
33437cat >conftest.$ac_ext <<_ACEOF
33438/* confdefs.h. */
33439_ACEOF
33440cat confdefs.h >>conftest.$ac_ext
33441cat >>conftest.$ac_ext <<_ACEOF
33442/* end confdefs.h. */
33443$ac_includes_default
33444#include <gssapi.h>
33445_ACEOF
33446rm -f conftest.$ac_objext
33447if { (ac_try="$ac_compile"
33448case "(($ac_try" in
33449 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33450 *) ac_try_echo=$ac_try;;
33451esac
33452eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33453 (eval "$ac_compile") 2>conftest.er1
33454 ac_status=$?
33455 grep -v '^ *+' conftest.er1 >conftest.err
33456 rm -f conftest.er1
33457 cat conftest.err >&5
33458 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33459 (exit $ac_status); } && {
33460 test -z "$ac_c_werror_flag" ||
33461 test ! -s conftest.err
33462 } && test -s conftest.$ac_objext; then
33463 ac_header_compiler=yes
33464else
33465 echo "$as_me: failed program was:" >&5
33466sed 's/^/| /' conftest.$ac_ext >&5
33467
33468 ac_header_compiler=no
33469fi
33470 17577
33471rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
33472{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
33473echo "${ECHO_T}$ac_header_compiler" >&6; }
33474
33475# Is the header present?
33476{ echo "$as_me:$LINENO: checking gssapi.h presence" >&5
33477echo $ECHO_N "checking gssapi.h presence... $ECHO_C" >&6; }
33478cat >conftest.$ac_ext <<_ACEOF
33479/* confdefs.h. */
33480_ACEOF
33481cat confdefs.h >>conftest.$ac_ext
33482cat >>conftest.$ac_ext <<_ACEOF
33483/* end confdefs.h. */
33484#include <gssapi.h>
33485_ACEOF
33486if { (ac_try="$ac_cpp conftest.$ac_ext"
33487case "(($ac_try" in
33488 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33489 *) ac_try_echo=$ac_try;;
33490esac
33491eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33492 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
33493 ac_status=$?
33494 grep -v '^ *+' conftest.er1 >conftest.err
33495 rm -f conftest.er1
33496 cat conftest.err >&5
33497 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33498 (exit $ac_status); } >/dev/null && {
33499 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
33500 test ! -s conftest.err
33501 }; then
33502 ac_header_preproc=yes
33503else
33504 echo "$as_me: failed program was:" >&5
33505sed 's/^/| /' conftest.$ac_ext >&5
33506
33507 ac_header_preproc=no
33508fi
33509
33510rm -f conftest.err conftest.$ac_ext
33511{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
33512echo "${ECHO_T}$ac_header_preproc" >&6; }
33513
33514# So? What about this header?
33515case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
33516 yes:no: )
33517 { echo "$as_me:$LINENO: WARNING: gssapi.h: accepted by the compiler, rejected by the preprocessor!" >&5
33518echo "$as_me: WARNING: gssapi.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
33519 { echo "$as_me:$LINENO: WARNING: gssapi.h: proceeding with the compiler's result" >&5
33520echo "$as_me: WARNING: gssapi.h: proceeding with the compiler's result" >&2;}
33521 ac_header_preproc=yes
33522 ;;
33523 no:yes:* )
33524 { echo "$as_me:$LINENO: WARNING: gssapi.h: present but cannot be compiled" >&5
33525echo "$as_me: WARNING: gssapi.h: present but cannot be compiled" >&2;}
33526 { echo "$as_me:$LINENO: WARNING: gssapi.h: check for missing prerequisite headers?" >&5
33527echo "$as_me: WARNING: gssapi.h: check for missing prerequisite headers?" >&2;}
33528 { echo "$as_me:$LINENO: WARNING: gssapi.h: see the Autoconf documentation" >&5
33529echo "$as_me: WARNING: gssapi.h: see the Autoconf documentation" >&2;}
33530 { echo "$as_me:$LINENO: WARNING: gssapi.h: section \"Present But Cannot Be Compiled\"" >&5
33531echo "$as_me: WARNING: gssapi.h: section \"Present But Cannot Be Compiled\"" >&2;}
33532 { echo "$as_me:$LINENO: WARNING: gssapi.h: proceeding with the preprocessor's result" >&5
33533echo "$as_me: WARNING: gssapi.h: proceeding with the preprocessor's result" >&2;}
33534 { echo "$as_me:$LINENO: WARNING: gssapi.h: in the future, the compiler will take precedence" >&5
33535echo "$as_me: WARNING: gssapi.h: in the future, the compiler will take precedence" >&2;}
33536 ( cat <<\_ASBOX
33537## ------------------------------------------- ##
33538## Report this to openssh-unix-dev@mindrot.org ##
33539## ------------------------------------------- ##
33540_ASBOX
33541 ) | sed "s/^/$as_me: WARNING: /" >&2
33542 ;;
33543esac
33544{ echo "$as_me:$LINENO: checking for gssapi.h" >&5
33545echo $ECHO_N "checking for gssapi.h... $ECHO_C" >&6; }
33546if test "${ac_cv_header_gssapi_h+set}" = set; then
33547 echo $ECHO_N "(cached) $ECHO_C" >&6
33548else
33549 ac_cv_header_gssapi_h=$ac_header_preproc
33550fi
33551{ echo "$as_me:$LINENO: result: $ac_cv_header_gssapi_h" >&5
33552echo "${ECHO_T}$ac_cv_header_gssapi_h" >&6; }
33553
33554fi
33555if test $ac_cv_header_gssapi_h = yes; then
33556 :
33557else 17578else
33558 unset ac_cv_header_gssapi_h 17579 unset ac_cv_header_gssapi_h
33559 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" 17580 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
33560 17581 for ac_header in gssapi.h
33561for ac_header in gssapi.h 17582do :
33562do 17583 ac_fn_c_check_header_mongrel "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
33563as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 17584if test "x$ac_cv_header_gssapi_h" = xyes; then :
33564if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33565 { echo "$as_me:$LINENO: checking for $ac_header" >&5
33566echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
33567if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33568 echo $ECHO_N "(cached) $ECHO_C" >&6
33569fi
33570ac_res=`eval echo '${'$as_ac_Header'}'`
33571 { echo "$as_me:$LINENO: result: $ac_res" >&5
33572echo "${ECHO_T}$ac_res" >&6; }
33573else
33574 # Is the header compilable?
33575{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
33576echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
33577cat >conftest.$ac_ext <<_ACEOF
33578/* confdefs.h. */
33579_ACEOF
33580cat confdefs.h >>conftest.$ac_ext
33581cat >>conftest.$ac_ext <<_ACEOF
33582/* end confdefs.h. */
33583$ac_includes_default
33584#include <$ac_header>
33585_ACEOF
33586rm -f conftest.$ac_objext
33587if { (ac_try="$ac_compile"
33588case "(($ac_try" in
33589 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33590 *) ac_try_echo=$ac_try;;
33591esac
33592eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33593 (eval "$ac_compile") 2>conftest.er1
33594 ac_status=$?
33595 grep -v '^ *+' conftest.er1 >conftest.err
33596 rm -f conftest.er1
33597 cat conftest.err >&5
33598 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33599 (exit $ac_status); } && {
33600 test -z "$ac_c_werror_flag" ||
33601 test ! -s conftest.err
33602 } && test -s conftest.$ac_objext; then
33603 ac_header_compiler=yes
33604else
33605 echo "$as_me: failed program was:" >&5
33606sed 's/^/| /' conftest.$ac_ext >&5
33607
33608 ac_header_compiler=no
33609fi
33610
33611rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
33612{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
33613echo "${ECHO_T}$ac_header_compiler" >&6; }
33614
33615# Is the header present?
33616{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
33617echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
33618cat >conftest.$ac_ext <<_ACEOF
33619/* confdefs.h. */
33620_ACEOF
33621cat confdefs.h >>conftest.$ac_ext
33622cat >>conftest.$ac_ext <<_ACEOF
33623/* end confdefs.h. */
33624#include <$ac_header>
33625_ACEOF
33626if { (ac_try="$ac_cpp conftest.$ac_ext"
33627case "(($ac_try" in
33628 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33629 *) ac_try_echo=$ac_try;;
33630esac
33631eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33632 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
33633 ac_status=$?
33634 grep -v '^ *+' conftest.er1 >conftest.err
33635 rm -f conftest.er1
33636 cat conftest.err >&5
33637 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33638 (exit $ac_status); } >/dev/null && {
33639 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
33640 test ! -s conftest.err
33641 }; then
33642 ac_header_preproc=yes
33643else
33644 echo "$as_me: failed program was:" >&5
33645sed 's/^/| /' conftest.$ac_ext >&5
33646
33647 ac_header_preproc=no
33648fi
33649
33650rm -f conftest.err conftest.$ac_ext
33651{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
33652echo "${ECHO_T}$ac_header_preproc" >&6; }
33653
33654# So? What about this header?
33655case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
33656 yes:no: )
33657 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
33658echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
33659 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
33660echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
33661 ac_header_preproc=yes
33662 ;;
33663 no:yes:* )
33664 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
33665echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
33666 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
33667echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
33668 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
33669echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
33670 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
33671echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
33672 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
33673echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
33674 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
33675echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
33676 ( cat <<\_ASBOX
33677## ------------------------------------------- ##
33678## Report this to openssh-unix-dev@mindrot.org ##
33679## ------------------------------------------- ##
33680_ASBOX
33681 ) | sed "s/^/$as_me: WARNING: /" >&2
33682 ;;
33683esac
33684{ echo "$as_me:$LINENO: checking for $ac_header" >&5
33685echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
33686if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33687 echo $ECHO_N "(cached) $ECHO_C" >&6
33688else
33689 eval "$as_ac_Header=\$ac_header_preproc"
33690fi
33691ac_res=`eval echo '${'$as_ac_Header'}'`
33692 { echo "$as_me:$LINENO: result: $ac_res" >&5
33693echo "${ECHO_T}$ac_res" >&6; }
33694
33695fi
33696if test `eval echo '${'$as_ac_Header'}'` = yes; then
33697 cat >>confdefs.h <<_ACEOF 17585 cat >>confdefs.h <<_ACEOF
33698#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 17586#define HAVE_GSSAPI_H 1
33699_ACEOF 17587_ACEOF
33700 17588
33701else 17589else
33702 { echo "$as_me:$LINENO: WARNING: Cannot find any suitable gss-api header - build may fail" >&5 17590 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api header - build may fail" >&5
33703echo "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;} 17591$as_echo "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;}
33704 17592
33705fi 17593fi
33706 17594
@@ -33714,138 +17602,9 @@ fi
33714 17602
33715 oldCPP="$CPPFLAGS" 17603 oldCPP="$CPPFLAGS"
33716 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi" 17604 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
33717 if test "${ac_cv_header_gssapi_krb5_h+set}" = set; then 17605 ac_fn_c_check_header_mongrel "$LINENO" "gssapi_krb5.h" "ac_cv_header_gssapi_krb5_h" "$ac_includes_default"
33718 { echo "$as_me:$LINENO: checking for gssapi_krb5.h" >&5 17606if test "x$ac_cv_header_gssapi_krb5_h" = xyes; then :
33719echo $ECHO_N "checking for gssapi_krb5.h... $ECHO_C" >&6; }
33720if test "${ac_cv_header_gssapi_krb5_h+set}" = set; then
33721 echo $ECHO_N "(cached) $ECHO_C" >&6
33722fi
33723{ echo "$as_me:$LINENO: result: $ac_cv_header_gssapi_krb5_h" >&5
33724echo "${ECHO_T}$ac_cv_header_gssapi_krb5_h" >&6; }
33725else
33726 # Is the header compilable?
33727{ echo "$as_me:$LINENO: checking gssapi_krb5.h usability" >&5
33728echo $ECHO_N "checking gssapi_krb5.h usability... $ECHO_C" >&6; }
33729cat >conftest.$ac_ext <<_ACEOF
33730/* confdefs.h. */
33731_ACEOF
33732cat confdefs.h >>conftest.$ac_ext
33733cat >>conftest.$ac_ext <<_ACEOF
33734/* end confdefs.h. */
33735$ac_includes_default
33736#include <gssapi_krb5.h>
33737_ACEOF
33738rm -f conftest.$ac_objext
33739if { (ac_try="$ac_compile"
33740case "(($ac_try" in
33741 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33742 *) ac_try_echo=$ac_try;;
33743esac
33744eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33745 (eval "$ac_compile") 2>conftest.er1
33746 ac_status=$?
33747 grep -v '^ *+' conftest.er1 >conftest.err
33748 rm -f conftest.er1
33749 cat conftest.err >&5
33750 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33751 (exit $ac_status); } && {
33752 test -z "$ac_c_werror_flag" ||
33753 test ! -s conftest.err
33754 } && test -s conftest.$ac_objext; then
33755 ac_header_compiler=yes
33756else
33757 echo "$as_me: failed program was:" >&5
33758sed 's/^/| /' conftest.$ac_ext >&5
33759
33760 ac_header_compiler=no
33761fi
33762
33763rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
33764{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
33765echo "${ECHO_T}$ac_header_compiler" >&6; }
33766
33767# Is the header present?
33768{ echo "$as_me:$LINENO: checking gssapi_krb5.h presence" >&5
33769echo $ECHO_N "checking gssapi_krb5.h presence... $ECHO_C" >&6; }
33770cat >conftest.$ac_ext <<_ACEOF
33771/* confdefs.h. */
33772_ACEOF
33773cat confdefs.h >>conftest.$ac_ext
33774cat >>conftest.$ac_ext <<_ACEOF
33775/* end confdefs.h. */
33776#include <gssapi_krb5.h>
33777_ACEOF
33778if { (ac_try="$ac_cpp conftest.$ac_ext"
33779case "(($ac_try" in
33780 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33781 *) ac_try_echo=$ac_try;;
33782esac
33783eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33784 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
33785 ac_status=$?
33786 grep -v '^ *+' conftest.er1 >conftest.err
33787 rm -f conftest.er1
33788 cat conftest.err >&5
33789 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33790 (exit $ac_status); } >/dev/null && {
33791 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
33792 test ! -s conftest.err
33793 }; then
33794 ac_header_preproc=yes
33795else
33796 echo "$as_me: failed program was:" >&5
33797sed 's/^/| /' conftest.$ac_ext >&5
33798
33799 ac_header_preproc=no
33800fi
33801
33802rm -f conftest.err conftest.$ac_ext
33803{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
33804echo "${ECHO_T}$ac_header_preproc" >&6; }
33805
33806# So? What about this header?
33807case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
33808 yes:no: )
33809 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: accepted by the compiler, rejected by the preprocessor!" >&5
33810echo "$as_me: WARNING: gssapi_krb5.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
33811 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: proceeding with the compiler's result" >&5
33812echo "$as_me: WARNING: gssapi_krb5.h: proceeding with the compiler's result" >&2;}
33813 ac_header_preproc=yes
33814 ;;
33815 no:yes:* )
33816 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: present but cannot be compiled" >&5
33817echo "$as_me: WARNING: gssapi_krb5.h: present but cannot be compiled" >&2;}
33818 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: check for missing prerequisite headers?" >&5
33819echo "$as_me: WARNING: gssapi_krb5.h: check for missing prerequisite headers?" >&2;}
33820 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: see the Autoconf documentation" >&5
33821echo "$as_me: WARNING: gssapi_krb5.h: see the Autoconf documentation" >&2;}
33822 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: section \"Present But Cannot Be Compiled\"" >&5
33823echo "$as_me: WARNING: gssapi_krb5.h: section \"Present But Cannot Be Compiled\"" >&2;}
33824 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: proceeding with the preprocessor's result" >&5
33825echo "$as_me: WARNING: gssapi_krb5.h: proceeding with the preprocessor's result" >&2;}
33826 { echo "$as_me:$LINENO: WARNING: gssapi_krb5.h: in the future, the compiler will take precedence" >&5
33827echo "$as_me: WARNING: gssapi_krb5.h: in the future, the compiler will take precedence" >&2;}
33828 ( cat <<\_ASBOX
33829## ------------------------------------------- ##
33830## Report this to openssh-unix-dev@mindrot.org ##
33831## ------------------------------------------- ##
33832_ASBOX
33833 ) | sed "s/^/$as_me: WARNING: /" >&2
33834 ;;
33835esac
33836{ echo "$as_me:$LINENO: checking for gssapi_krb5.h" >&5
33837echo $ECHO_N "checking for gssapi_krb5.h... $ECHO_C" >&6; }
33838if test "${ac_cv_header_gssapi_krb5_h+set}" = set; then
33839 echo $ECHO_N "(cached) $ECHO_C" >&6
33840else
33841 ac_cv_header_gssapi_krb5_h=$ac_header_preproc
33842fi
33843{ echo "$as_me:$LINENO: result: $ac_cv_header_gssapi_krb5_h" >&5
33844echo "${ECHO_T}$ac_cv_header_gssapi_krb5_h" >&6; }
33845 17607
33846fi
33847if test $ac_cv_header_gssapi_krb5_h = yes; then
33848 :
33849else 17608else
33850 CPPFLAGS="$oldCPP" 17609 CPPFLAGS="$oldCPP"
33851fi 17610fi
@@ -33860,438 +17619,39 @@ fi
33860 blibpath="$blibpath:${KRB5ROOT}/lib" 17619 blibpath="$blibpath:${KRB5ROOT}/lib"
33861 fi 17620 fi
33862 17621
33863 17622 for ac_header in gssapi.h gssapi/gssapi.h
33864 17623do :
33865for ac_header in gssapi.h gssapi/gssapi.h 17624 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
33866do 17625ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
33867as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 17626if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
33868if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33869 { echo "$as_me:$LINENO: checking for $ac_header" >&5
33870echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
33871if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33872 echo $ECHO_N "(cached) $ECHO_C" >&6
33873fi
33874ac_res=`eval echo '${'$as_ac_Header'}'`
33875 { echo "$as_me:$LINENO: result: $ac_res" >&5
33876echo "${ECHO_T}$ac_res" >&6; }
33877else
33878 # Is the header compilable?
33879{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
33880echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
33881cat >conftest.$ac_ext <<_ACEOF
33882/* confdefs.h. */
33883_ACEOF
33884cat confdefs.h >>conftest.$ac_ext
33885cat >>conftest.$ac_ext <<_ACEOF
33886/* end confdefs.h. */
33887$ac_includes_default
33888#include <$ac_header>
33889_ACEOF
33890rm -f conftest.$ac_objext
33891if { (ac_try="$ac_compile"
33892case "(($ac_try" in
33893 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33894 *) ac_try_echo=$ac_try;;
33895esac
33896eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33897 (eval "$ac_compile") 2>conftest.er1
33898 ac_status=$?
33899 grep -v '^ *+' conftest.er1 >conftest.err
33900 rm -f conftest.er1
33901 cat conftest.err >&5
33902 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33903 (exit $ac_status); } && {
33904 test -z "$ac_c_werror_flag" ||
33905 test ! -s conftest.err
33906 } && test -s conftest.$ac_objext; then
33907 ac_header_compiler=yes
33908else
33909 echo "$as_me: failed program was:" >&5
33910sed 's/^/| /' conftest.$ac_ext >&5
33911
33912 ac_header_compiler=no
33913fi
33914
33915rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
33916{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
33917echo "${ECHO_T}$ac_header_compiler" >&6; }
33918
33919# Is the header present?
33920{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
33921echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
33922cat >conftest.$ac_ext <<_ACEOF
33923/* confdefs.h. */
33924_ACEOF
33925cat confdefs.h >>conftest.$ac_ext
33926cat >>conftest.$ac_ext <<_ACEOF
33927/* end confdefs.h. */
33928#include <$ac_header>
33929_ACEOF
33930if { (ac_try="$ac_cpp conftest.$ac_ext"
33931case "(($ac_try" in
33932 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
33933 *) ac_try_echo=$ac_try;;
33934esac
33935eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
33936 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
33937 ac_status=$?
33938 grep -v '^ *+' conftest.er1 >conftest.err
33939 rm -f conftest.er1
33940 cat conftest.err >&5
33941 echo "$as_me:$LINENO: \$? = $ac_status" >&5
33942 (exit $ac_status); } >/dev/null && {
33943 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
33944 test ! -s conftest.err
33945 }; then
33946 ac_header_preproc=yes
33947else
33948 echo "$as_me: failed program was:" >&5
33949sed 's/^/| /' conftest.$ac_ext >&5
33950
33951 ac_header_preproc=no
33952fi
33953
33954rm -f conftest.err conftest.$ac_ext
33955{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
33956echo "${ECHO_T}$ac_header_preproc" >&6; }
33957
33958# So? What about this header?
33959case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
33960 yes:no: )
33961 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
33962echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
33963 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
33964echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
33965 ac_header_preproc=yes
33966 ;;
33967 no:yes:* )
33968 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
33969echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
33970 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
33971echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
33972 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
33973echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
33974 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
33975echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
33976 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
33977echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
33978 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
33979echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
33980 ( cat <<\_ASBOX
33981## ------------------------------------------- ##
33982## Report this to openssh-unix-dev@mindrot.org ##
33983## ------------------------------------------- ##
33984_ASBOX
33985 ) | sed "s/^/$as_me: WARNING: /" >&2
33986 ;;
33987esac
33988{ echo "$as_me:$LINENO: checking for $ac_header" >&5
33989echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
33990if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
33991 echo $ECHO_N "(cached) $ECHO_C" >&6
33992else
33993 eval "$as_ac_Header=\$ac_header_preproc"
33994fi
33995ac_res=`eval echo '${'$as_ac_Header'}'`
33996 { echo "$as_me:$LINENO: result: $ac_res" >&5
33997echo "${ECHO_T}$ac_res" >&6; }
33998
33999fi
34000if test `eval echo '${'$as_ac_Header'}'` = yes; then
34001 cat >>confdefs.h <<_ACEOF 17627 cat >>confdefs.h <<_ACEOF
34002#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 17628#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
34003_ACEOF 17629_ACEOF
34004 17630
34005fi 17631fi
34006 17632
34007done 17633done
34008 17634
34009 17635 for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h
34010 17636do :
34011for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h 17637 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
34012do 17638ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
34013as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 17639if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
34014if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34015 { echo "$as_me:$LINENO: checking for $ac_header" >&5
34016echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
34017if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34018 echo $ECHO_N "(cached) $ECHO_C" >&6
34019fi
34020ac_res=`eval echo '${'$as_ac_Header'}'`
34021 { echo "$as_me:$LINENO: result: $ac_res" >&5
34022echo "${ECHO_T}$ac_res" >&6; }
34023else
34024 # Is the header compilable?
34025{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
34026echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
34027cat >conftest.$ac_ext <<_ACEOF
34028/* confdefs.h. */
34029_ACEOF
34030cat confdefs.h >>conftest.$ac_ext
34031cat >>conftest.$ac_ext <<_ACEOF
34032/* end confdefs.h. */
34033$ac_includes_default
34034#include <$ac_header>
34035_ACEOF
34036rm -f conftest.$ac_objext
34037if { (ac_try="$ac_compile"
34038case "(($ac_try" in
34039 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34040 *) ac_try_echo=$ac_try;;
34041esac
34042eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34043 (eval "$ac_compile") 2>conftest.er1
34044 ac_status=$?
34045 grep -v '^ *+' conftest.er1 >conftest.err
34046 rm -f conftest.er1
34047 cat conftest.err >&5
34048 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34049 (exit $ac_status); } && {
34050 test -z "$ac_c_werror_flag" ||
34051 test ! -s conftest.err
34052 } && test -s conftest.$ac_objext; then
34053 ac_header_compiler=yes
34054else
34055 echo "$as_me: failed program was:" >&5
34056sed 's/^/| /' conftest.$ac_ext >&5
34057
34058 ac_header_compiler=no
34059fi
34060
34061rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
34062{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
34063echo "${ECHO_T}$ac_header_compiler" >&6; }
34064
34065# Is the header present?
34066{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
34067echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
34068cat >conftest.$ac_ext <<_ACEOF
34069/* confdefs.h. */
34070_ACEOF
34071cat confdefs.h >>conftest.$ac_ext
34072cat >>conftest.$ac_ext <<_ACEOF
34073/* end confdefs.h. */
34074#include <$ac_header>
34075_ACEOF
34076if { (ac_try="$ac_cpp conftest.$ac_ext"
34077case "(($ac_try" in
34078 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34079 *) ac_try_echo=$ac_try;;
34080esac
34081eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34082 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
34083 ac_status=$?
34084 grep -v '^ *+' conftest.er1 >conftest.err
34085 rm -f conftest.er1
34086 cat conftest.err >&5
34087 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34088 (exit $ac_status); } >/dev/null && {
34089 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
34090 test ! -s conftest.err
34091 }; then
34092 ac_header_preproc=yes
34093else
34094 echo "$as_me: failed program was:" >&5
34095sed 's/^/| /' conftest.$ac_ext >&5
34096
34097 ac_header_preproc=no
34098fi
34099
34100rm -f conftest.err conftest.$ac_ext
34101{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
34102echo "${ECHO_T}$ac_header_preproc" >&6; }
34103
34104# So? What about this header?
34105case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
34106 yes:no: )
34107 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
34108echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
34109 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
34110echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
34111 ac_header_preproc=yes
34112 ;;
34113 no:yes:* )
34114 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
34115echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
34116 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
34117echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
34118 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
34119echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
34120 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
34121echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
34122 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
34123echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
34124 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
34125echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
34126 ( cat <<\_ASBOX
34127## ------------------------------------------- ##
34128## Report this to openssh-unix-dev@mindrot.org ##
34129## ------------------------------------------- ##
34130_ASBOX
34131 ) | sed "s/^/$as_me: WARNING: /" >&2
34132 ;;
34133esac
34134{ echo "$as_me:$LINENO: checking for $ac_header" >&5
34135echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
34136if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34137 echo $ECHO_N "(cached) $ECHO_C" >&6
34138else
34139 eval "$as_ac_Header=\$ac_header_preproc"
34140fi
34141ac_res=`eval echo '${'$as_ac_Header'}'`
34142 { echo "$as_me:$LINENO: result: $ac_res" >&5
34143echo "${ECHO_T}$ac_res" >&6; }
34144
34145fi
34146if test `eval echo '${'$as_ac_Header'}'` = yes; then
34147 cat >>confdefs.h <<_ACEOF 17640 cat >>confdefs.h <<_ACEOF
34148#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 17641#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
34149_ACEOF 17642_ACEOF
34150 17643
34151fi 17644fi
34152 17645
34153done 17646done
34154 17647
34155 17648 for ac_header in gssapi_generic.h gssapi/gssapi_generic.h
34156 17649do :
34157for ac_header in gssapi_generic.h gssapi/gssapi_generic.h 17650 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
34158do 17651ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
34159as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 17652if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
34160if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34161 { echo "$as_me:$LINENO: checking for $ac_header" >&5
34162echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
34163if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34164 echo $ECHO_N "(cached) $ECHO_C" >&6
34165fi
34166ac_res=`eval echo '${'$as_ac_Header'}'`
34167 { echo "$as_me:$LINENO: result: $ac_res" >&5
34168echo "${ECHO_T}$ac_res" >&6; }
34169else
34170 # Is the header compilable?
34171{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
34172echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
34173cat >conftest.$ac_ext <<_ACEOF
34174/* confdefs.h. */
34175_ACEOF
34176cat confdefs.h >>conftest.$ac_ext
34177cat >>conftest.$ac_ext <<_ACEOF
34178/* end confdefs.h. */
34179$ac_includes_default
34180#include <$ac_header>
34181_ACEOF
34182rm -f conftest.$ac_objext
34183if { (ac_try="$ac_compile"
34184case "(($ac_try" in
34185 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34186 *) ac_try_echo=$ac_try;;
34187esac
34188eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34189 (eval "$ac_compile") 2>conftest.er1
34190 ac_status=$?
34191 grep -v '^ *+' conftest.er1 >conftest.err
34192 rm -f conftest.er1
34193 cat conftest.err >&5
34194 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34195 (exit $ac_status); } && {
34196 test -z "$ac_c_werror_flag" ||
34197 test ! -s conftest.err
34198 } && test -s conftest.$ac_objext; then
34199 ac_header_compiler=yes
34200else
34201 echo "$as_me: failed program was:" >&5
34202sed 's/^/| /' conftest.$ac_ext >&5
34203
34204 ac_header_compiler=no
34205fi
34206
34207rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
34208{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
34209echo "${ECHO_T}$ac_header_compiler" >&6; }
34210
34211# Is the header present?
34212{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
34213echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
34214cat >conftest.$ac_ext <<_ACEOF
34215/* confdefs.h. */
34216_ACEOF
34217cat confdefs.h >>conftest.$ac_ext
34218cat >>conftest.$ac_ext <<_ACEOF
34219/* end confdefs.h. */
34220#include <$ac_header>
34221_ACEOF
34222if { (ac_try="$ac_cpp conftest.$ac_ext"
34223case "(($ac_try" in
34224 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34225 *) ac_try_echo=$ac_try;;
34226esac
34227eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34228 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
34229 ac_status=$?
34230 grep -v '^ *+' conftest.er1 >conftest.err
34231 rm -f conftest.er1
34232 cat conftest.err >&5
34233 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34234 (exit $ac_status); } >/dev/null && {
34235 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
34236 test ! -s conftest.err
34237 }; then
34238 ac_header_preproc=yes
34239else
34240 echo "$as_me: failed program was:" >&5
34241sed 's/^/| /' conftest.$ac_ext >&5
34242
34243 ac_header_preproc=no
34244fi
34245
34246rm -f conftest.err conftest.$ac_ext
34247{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
34248echo "${ECHO_T}$ac_header_preproc" >&6; }
34249
34250# So? What about this header?
34251case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
34252 yes:no: )
34253 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
34254echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
34255 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
34256echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
34257 ac_header_preproc=yes
34258 ;;
34259 no:yes:* )
34260 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
34261echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
34262 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
34263echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
34264 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
34265echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
34266 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
34267echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
34268 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
34269echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
34270 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
34271echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
34272 ( cat <<\_ASBOX
34273## ------------------------------------------- ##
34274## Report this to openssh-unix-dev@mindrot.org ##
34275## ------------------------------------------- ##
34276_ASBOX
34277 ) | sed "s/^/$as_me: WARNING: /" >&2
34278 ;;
34279esac
34280{ echo "$as_me:$LINENO: checking for $ac_header" >&5
34281echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
34282if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
34283 echo $ECHO_N "(cached) $ECHO_C" >&6
34284else
34285 eval "$as_ac_Header=\$ac_header_preproc"
34286fi
34287ac_res=`eval echo '${'$as_ac_Header'}'`
34288 { echo "$as_me:$LINENO: result: $ac_res" >&5
34289echo "${ECHO_T}$ac_res" >&6; }
34290
34291fi
34292if test `eval echo '${'$as_ac_Header'}'` = yes; then
34293 cat >>confdefs.h <<_ACEOF 17653 cat >>confdefs.h <<_ACEOF
34294#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 17654#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
34295_ACEOF 17655_ACEOF
34296 17656
34297fi 17657fi
@@ -34299,17 +17659,13 @@ fi
34299done 17659done
34300 17660
34301 17661
34302 { echo "$as_me:$LINENO: checking for library containing k_hasafs" >&5 17662 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing k_hasafs" >&5
34303echo $ECHO_N "checking for library containing k_hasafs... $ECHO_C" >&6; } 17663$as_echo_n "checking for library containing k_hasafs... " >&6; }
34304if test "${ac_cv_search_k_hasafs+set}" = set; then 17664if ${ac_cv_search_k_hasafs+:} false; then :
34305 echo $ECHO_N "(cached) $ECHO_C" >&6 17665 $as_echo_n "(cached) " >&6
34306else 17666else
34307 ac_func_search_save_LIBS=$LIBS 17667 ac_func_search_save_LIBS=$LIBS
34308cat >conftest.$ac_ext <<_ACEOF 17668cat confdefs.h - <<_ACEOF >conftest.$ac_ext
34309/* confdefs.h. */
34310_ACEOF
34311cat confdefs.h >>conftest.$ac_ext
34312cat >>conftest.$ac_ext <<_ACEOF
34313/* end confdefs.h. */ 17669/* end confdefs.h. */
34314 17670
34315/* Override any GCC internal prototype to avoid an error. 17671/* Override any GCC internal prototype to avoid an error.
@@ -34334,71 +17690,35 @@ for ac_lib in '' kafs; do
34334 ac_res=-l$ac_lib 17690 ac_res=-l$ac_lib
34335 LIBS="-l$ac_lib $ac_func_search_save_LIBS" 17691 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
34336 fi 17692 fi
34337 rm -f conftest.$ac_objext conftest$ac_exeext 17693 if ac_fn_c_try_link "$LINENO"; then :
34338if { (ac_try="$ac_link"
34339case "(($ac_try" in
34340 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34341 *) ac_try_echo=$ac_try;;
34342esac
34343eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34344 (eval "$ac_link") 2>conftest.er1
34345 ac_status=$?
34346 grep -v '^ *+' conftest.er1 >conftest.err
34347 rm -f conftest.er1
34348 cat conftest.err >&5
34349 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34350 (exit $ac_status); } && {
34351 test -z "$ac_c_werror_flag" ||
34352 test ! -s conftest.err
34353 } && test -s conftest$ac_exeext &&
34354 $as_test_x conftest$ac_exeext; then
34355 ac_cv_search_k_hasafs=$ac_res 17694 ac_cv_search_k_hasafs=$ac_res
34356else
34357 echo "$as_me: failed program was:" >&5
34358sed 's/^/| /' conftest.$ac_ext >&5
34359
34360
34361fi 17695fi
34362 17696rm -f core conftest.err conftest.$ac_objext \
34363rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 17697 conftest$ac_exeext
34364 conftest$ac_exeext 17698 if ${ac_cv_search_k_hasafs+:} false; then :
34365 if test "${ac_cv_search_k_hasafs+set}" = set; then
34366 break 17699 break
34367fi 17700fi
34368done 17701done
34369if test "${ac_cv_search_k_hasafs+set}" = set; then 17702if ${ac_cv_search_k_hasafs+:} false; then :
34370 : 17703
34371else 17704else
34372 ac_cv_search_k_hasafs=no 17705 ac_cv_search_k_hasafs=no
34373fi 17706fi
34374rm conftest.$ac_ext 17707rm conftest.$ac_ext
34375LIBS=$ac_func_search_save_LIBS 17708LIBS=$ac_func_search_save_LIBS
34376fi 17709fi
34377{ echo "$as_me:$LINENO: result: $ac_cv_search_k_hasafs" >&5 17710{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_k_hasafs" >&5
34378echo "${ECHO_T}$ac_cv_search_k_hasafs" >&6; } 17711$as_echo "$ac_cv_search_k_hasafs" >&6; }
34379ac_res=$ac_cv_search_k_hasafs 17712ac_res=$ac_cv_search_k_hasafs
34380if test "$ac_res" != no; then 17713if test "$ac_res" != no; then :
34381 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 17714 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
34382 17715
34383cat >>confdefs.h <<\_ACEOF 17716$as_echo "#define USE_AFS 1" >>confdefs.h
34384#define USE_AFS 1
34385_ACEOF
34386 17717
34387fi 17718fi
34388 17719
34389 17720
34390 { echo "$as_me:$LINENO: checking whether GSS_C_NT_HOSTBASED_SERVICE is declared" >&5 17721 ac_fn_c_check_decl "$LINENO" "GSS_C_NT_HOSTBASED_SERVICE" "ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" "
34391echo $ECHO_N "checking whether GSS_C_NT_HOSTBASED_SERVICE is declared... $ECHO_C" >&6; }
34392if test "${ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE+set}" = set; then
34393 echo $ECHO_N "(cached) $ECHO_C" >&6
34394else
34395 cat >conftest.$ac_ext <<_ACEOF
34396/* confdefs.h. */
34397_ACEOF
34398cat confdefs.h >>conftest.$ac_ext
34399cat >>conftest.$ac_ext <<_ACEOF
34400/* end confdefs.h. */
34401
34402#ifdef HAVE_GSSAPI_H 17722#ifdef HAVE_GSSAPI_H
34403# include <gssapi.h> 17723# include <gssapi.h>
34404#elif defined(HAVE_GSSAPI_GSSAPI_H) 17724#elif defined(HAVE_GSSAPI_GSSAPI_H)
@@ -34411,156 +17731,26 @@ cat >>conftest.$ac_ext <<_ACEOF
34411# include <gssapi/gssapi_generic.h> 17731# include <gssapi/gssapi_generic.h>
34412#endif 17732#endif
34413 17733
34414 17734"
34415int 17735if test "x$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" = xyes; then :
34416main () 17736 ac_have_decl=1
34417{
34418#ifndef GSS_C_NT_HOSTBASED_SERVICE
34419 (void) GSS_C_NT_HOSTBASED_SERVICE;
34420#endif
34421
34422 ;
34423 return 0;
34424}
34425_ACEOF
34426rm -f conftest.$ac_objext
34427if { (ac_try="$ac_compile"
34428case "(($ac_try" in
34429 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34430 *) ac_try_echo=$ac_try;;
34431esac
34432eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34433 (eval "$ac_compile") 2>conftest.er1
34434 ac_status=$?
34435 grep -v '^ *+' conftest.er1 >conftest.err
34436 rm -f conftest.er1
34437 cat conftest.err >&5
34438 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34439 (exit $ac_status); } && {
34440 test -z "$ac_c_werror_flag" ||
34441 test ! -s conftest.err
34442 } && test -s conftest.$ac_objext; then
34443 ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE=yes
34444else 17737else
34445 echo "$as_me: failed program was:" >&5 17738 ac_have_decl=0
34446sed 's/^/| /' conftest.$ac_ext >&5
34447
34448 ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE=no
34449fi 17739fi
34450 17740
34451rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
34452fi
34453{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" >&5
34454echo "${ECHO_T}$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" >&6; }
34455if test $ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE = yes; then
34456
34457cat >>confdefs.h <<_ACEOF 17741cat >>confdefs.h <<_ACEOF
34458#define HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE 1 17742#define HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE $ac_have_decl
34459_ACEOF
34460
34461
34462else
34463 cat >>confdefs.h <<_ACEOF
34464#define HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE 0
34465_ACEOF 17743_ACEOF
34466 17744
34467
34468fi
34469
34470
34471 saved_LIBS="$LIBS" 17745 saved_LIBS="$LIBS"
34472 LIBS="$LIBS $K5LIBS" 17746 LIBS="$LIBS $K5LIBS"
34473 17747 for ac_func in krb5_cc_new_unique krb5_get_error_message krb5_free_error_message
34474 17748do :
34475 17749 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
34476for ac_func in krb5_cc_new_unique krb5_get_error_message krb5_free_error_message 17750ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
34477do 17751if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
34478as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
34479{ echo "$as_me:$LINENO: checking for $ac_func" >&5
34480echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
34481if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
34482 echo $ECHO_N "(cached) $ECHO_C" >&6
34483else
34484 cat >conftest.$ac_ext <<_ACEOF
34485/* confdefs.h. */
34486_ACEOF
34487cat confdefs.h >>conftest.$ac_ext
34488cat >>conftest.$ac_ext <<_ACEOF
34489/* end confdefs.h. */
34490/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
34491 For example, HP-UX 11i <limits.h> declares gettimeofday. */
34492#define $ac_func innocuous_$ac_func
34493
34494/* System header to define __stub macros and hopefully few prototypes,
34495 which can conflict with char $ac_func (); below.
34496 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
34497 <limits.h> exists even on freestanding compilers. */
34498
34499#ifdef __STDC__
34500# include <limits.h>
34501#else
34502# include <assert.h>
34503#endif
34504
34505#undef $ac_func
34506
34507/* Override any GCC internal prototype to avoid an error.
34508 Use char because int might match the return type of a GCC
34509 builtin and then its argument prototype would still apply. */
34510#ifdef __cplusplus
34511extern "C"
34512#endif
34513char $ac_func ();
34514/* The GNU C library defines this for functions which it implements
34515 to always fail with ENOSYS. Some functions are actually named
34516 something starting with __ and the normal name is an alias. */
34517#if defined __stub_$ac_func || defined __stub___$ac_func
34518choke me
34519#endif
34520
34521int
34522main ()
34523{
34524return $ac_func ();
34525 ;
34526 return 0;
34527}
34528_ACEOF
34529rm -f conftest.$ac_objext conftest$ac_exeext
34530if { (ac_try="$ac_link"
34531case "(($ac_try" in
34532 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34533 *) ac_try_echo=$ac_try;;
34534esac
34535eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34536 (eval "$ac_link") 2>conftest.er1
34537 ac_status=$?
34538 grep -v '^ *+' conftest.er1 >conftest.err
34539 rm -f conftest.er1
34540 cat conftest.err >&5
34541 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34542 (exit $ac_status); } && {
34543 test -z "$ac_c_werror_flag" ||
34544 test ! -s conftest.err
34545 } && test -s conftest$ac_exeext &&
34546 $as_test_x conftest$ac_exeext; then
34547 eval "$as_ac_var=yes"
34548else
34549 echo "$as_me: failed program was:" >&5
34550sed 's/^/| /' conftest.$ac_ext >&5
34551
34552 eval "$as_ac_var=no"
34553fi
34554
34555rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
34556 conftest$ac_exeext conftest.$ac_ext
34557fi
34558ac_res=`eval echo '${'$as_ac_var'}'`
34559 { echo "$as_me:$LINENO: result: $ac_res" >&5
34560echo "${ECHO_T}$ac_res" >&6; }
34561if test `eval echo '${'$as_ac_var'}'` = yes; then
34562 cat >>confdefs.h <<_ACEOF 17752 cat >>confdefs.h <<_ACEOF
34563#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 17753#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
34564_ACEOF 17754_ACEOF
34565 17755
34566fi 17756fi
@@ -34581,7 +17771,7 @@ fi
34581PRIVSEP_PATH=/var/empty 17771PRIVSEP_PATH=/var/empty
34582 17772
34583# Check whether --with-privsep-path was given. 17773# Check whether --with-privsep-path was given.
34584if test "${with_privsep_path+set}" = set; then 17774if test "${with_privsep_path+set}" = set; then :
34585 withval=$with_privsep_path; 17775 withval=$with_privsep_path;
34586 if test -n "$withval" && test "x$withval" != "xno" && \ 17776 if test -n "$withval" && test "x$withval" != "xno" && \
34587 test "x${withval}" != "xyes"; then 17777 test "x${withval}" != "xyes"; then
@@ -34595,7 +17785,7 @@ fi
34595 17785
34596 17786
34597# Check whether --with-xauth was given. 17787# Check whether --with-xauth was given.
34598if test "${with_xauth+set}" = set; then 17788if test "${with_xauth+set}" = set; then :
34599 withval=$with_xauth; 17789 withval=$with_xauth;
34600 if test -n "$withval" && test "x$withval" != "xno" && \ 17790 if test -n "$withval" && test "x$withval" != "xno" && \
34601 test "x${withval}" != "xyes"; then 17791 test "x${withval}" != "xyes"; then
@@ -34611,10 +17801,10 @@ else
34611 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin" 17801 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
34612 # Extract the first word of "xauth", so it can be a program name with args. 17802 # Extract the first word of "xauth", so it can be a program name with args.
34613set dummy xauth; ac_word=$2 17803set dummy xauth; ac_word=$2
34614{ echo "$as_me:$LINENO: checking for $ac_word" >&5 17804{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
34615echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 17805$as_echo_n "checking for $ac_word... " >&6; }
34616if test "${ac_cv_path_xauth_path+set}" = set; then 17806if ${ac_cv_path_xauth_path+:} false; then :
34617 echo $ECHO_N "(cached) $ECHO_C" >&6 17807 $as_echo_n "(cached) " >&6
34618else 17808else
34619 case $xauth_path in 17809 case $xauth_path in
34620 [\\/]* | ?:[\\/]*) 17810 [\\/]* | ?:[\\/]*)
@@ -34626,14 +17816,14 @@ for as_dir in $TestPath
34626do 17816do
34627 IFS=$as_save_IFS 17817 IFS=$as_save_IFS
34628 test -z "$as_dir" && as_dir=. 17818 test -z "$as_dir" && as_dir=.
34629 for ac_exec_ext in '' $ac_executable_extensions; do 17819 for ac_exec_ext in '' $ac_executable_extensions; do
34630 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 17820 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
34631 ac_cv_path_xauth_path="$as_dir/$ac_word$ac_exec_ext" 17821 ac_cv_path_xauth_path="$as_dir/$ac_word$ac_exec_ext"
34632 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 17822 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
34633 break 2 17823 break 2
34634 fi 17824 fi
34635done 17825done
34636done 17826 done
34637IFS=$as_save_IFS 17827IFS=$as_save_IFS
34638 17828
34639 ;; 17829 ;;
@@ -34641,11 +17831,11 @@ esac
34641fi 17831fi
34642xauth_path=$ac_cv_path_xauth_path 17832xauth_path=$ac_cv_path_xauth_path
34643if test -n "$xauth_path"; then 17833if test -n "$xauth_path"; then
34644 { echo "$as_me:$LINENO: result: $xauth_path" >&5 17834 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xauth_path" >&5
34645echo "${ECHO_T}$xauth_path" >&6; } 17835$as_echo "$xauth_path" >&6; }
34646else 17836else
34647 { echo "$as_me:$LINENO: result: no" >&5 17837 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
34648echo "${ECHO_T}no" >&6; } 17838$as_echo "no" >&6; }
34649fi 17839fi
34650 17840
34651 17841
@@ -34659,7 +17849,7 @@ fi
34659 17849
34660STRIP_OPT=-s 17850STRIP_OPT=-s
34661# Check whether --enable-strip was given. 17851# Check whether --enable-strip was given.
34662if test "${enable_strip+set}" = set; then 17852if test "${enable_strip+set}" = set; then :
34663 enableval=$enable_strip; 17853 enableval=$enable_strip;
34664 if test "x$enableval" = "xno" ; then 17854 if test "x$enableval" = "xno" ; then
34665 STRIP_OPT= 17855 STRIP_OPT=
@@ -34686,7 +17876,7 @@ fi
34686# Check for mail directory 17876# Check for mail directory
34687 17877
34688# Check whether --with-maildir was given. 17878# Check whether --with-maildir was given.
34689if test "${with_maildir+set}" = set; then 17879if test "${with_maildir+set}" = set; then :
34690 withval=$with_maildir; 17880 withval=$with_maildir;
34691 if test "X$withval" != X && test "x$withval" != xno && \ 17881 if test "X$withval" != X && test "x$withval" != xno && \
34692 test "x${withval}" != xyes; then 17882 test "x${withval}" != xyes; then
@@ -34705,20 +17895,16 @@ else
34705_ACEOF 17895_ACEOF
34706 17896
34707 else 17897 else
34708 { echo "$as_me:$LINENO: checking Discovering system mail directory" >&5 17898 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Discovering system mail directory" >&5
34709echo $ECHO_N "checking Discovering system mail directory... $ECHO_C" >&6; } 17899$as_echo_n "checking Discovering system mail directory... " >&6; }
34710 if test "$cross_compiling" = yes; then 17900 if test "$cross_compiling" = yes; then :
34711 17901
34712 { echo "$as_me:$LINENO: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&5 17902 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&5
34713echo "$as_me: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&2;} 17903$as_echo "$as_me: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&2;}
34714 17904
34715 17905
34716else 17906else
34717 cat >conftest.$ac_ext <<_ACEOF 17907 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
34718/* confdefs.h. */
34719_ACEOF
34720cat confdefs.h >>conftest.$ac_ext
34721cat >>conftest.$ac_ext <<_ACEOF
34722/* end confdefs.h. */ 17908/* end confdefs.h. */
34723 17909
34724#include <stdio.h> 17910#include <stdio.h>
@@ -34761,32 +17947,13 @@ main ()
34761 return 0; 17947 return 0;
34762} 17948}
34763_ACEOF 17949_ACEOF
34764rm -f conftest$ac_exeext 17950if ac_fn_c_try_run "$LINENO"; then :
34765if { (ac_try="$ac_link"
34766case "(($ac_try" in
34767 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34768 *) ac_try_echo=$ac_try;;
34769esac
34770eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34771 (eval "$ac_link") 2>&5
34772 ac_status=$?
34773 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34774 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
34775 { (case "(($ac_try" in
34776 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
34777 *) ac_try_echo=$ac_try;;
34778esac
34779eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
34780 (eval "$ac_try") 2>&5
34781 ac_status=$?
34782 echo "$as_me:$LINENO: \$? = $ac_status" >&5
34783 (exit $ac_status); }; }; then
34784 17951
34785 maildir_what=`awk -F: '{print $1}' conftest.maildir` 17952 maildir_what=`awk -F: '{print $1}' conftest.maildir`
34786 maildir=`awk -F: '{print $2}' conftest.maildir \ 17953 maildir=`awk -F: '{print $2}' conftest.maildir \
34787 | sed 's|/$||'` 17954 | sed 's|/$||'`
34788 { echo "$as_me:$LINENO: result: Using: $maildir from $maildir_what" >&5 17955 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using: $maildir from $maildir_what" >&5
34789echo "${ECHO_T}Using: $maildir from $maildir_what" >&6; } 17956$as_echo "Using: $maildir from $maildir_what" >&6; }
34790 if test "x$maildir_what" != "x_PATH_MAILDIR"; then 17957 if test "x$maildir_what" != "x_PATH_MAILDIR"; then
34791 cat >>confdefs.h <<_ACEOF 17958 cat >>confdefs.h <<_ACEOF
34792#define MAIL_DIRECTORY "$maildir" 17959#define MAIL_DIRECTORY "$maildir"
@@ -34795,30 +17962,25 @@ _ACEOF
34795 fi 17962 fi
34796 17963
34797else 17964else
34798 echo "$as_me: program exited with status $ac_status" >&5
34799echo "$as_me: failed program was:" >&5
34800sed 's/^/| /' conftest.$ac_ext >&5
34801
34802( exit $ac_status )
34803 17965
34804 if test "X$ac_status" = "X2";then 17966 if test "X$ac_status" = "X2";then
34805# our test program didn't find it. Default to /var/spool/mail 17967# our test program didn't find it. Default to /var/spool/mail
34806 { echo "$as_me:$LINENO: result: Using: default value of /var/spool/mail" >&5 17968 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using: default value of /var/spool/mail" >&5
34807echo "${ECHO_T}Using: default value of /var/spool/mail" >&6; } 17969$as_echo "Using: default value of /var/spool/mail" >&6; }
34808 cat >>confdefs.h <<_ACEOF 17970 cat >>confdefs.h <<_ACEOF
34809#define MAIL_DIRECTORY "/var/spool/mail" 17971#define MAIL_DIRECTORY "/var/spool/mail"
34810_ACEOF 17972_ACEOF
34811 17973
34812 else 17974 else
34813 { echo "$as_me:$LINENO: result: *** not found ***" >&5 17975 { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** not found ***" >&5
34814echo "${ECHO_T}*** not found ***" >&6; } 17976$as_echo "*** not found ***" >&6; }
34815 fi 17977 fi
34816 17978
34817fi 17979fi
34818rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 17980rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
17981 conftest.$ac_objext conftest.beam conftest.$ac_ext
34819fi 17982fi
34820 17983
34821
34822 fi 17984 fi
34823 17985
34824 17986
@@ -34826,30 +17988,30 @@ fi
34826 # maildir 17988 # maildir
34827 17989
34828if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then 17990if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then
34829 { echo "$as_me:$LINENO: WARNING: cross compiling: Disabling /dev/ptmx test" >&5 17991 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptmx test" >&5
34830echo "$as_me: WARNING: cross compiling: Disabling /dev/ptmx test" >&2;} 17992$as_echo "$as_me: WARNING: cross compiling: Disabling /dev/ptmx test" >&2;}
34831 disable_ptmx_check=yes 17993 disable_ptmx_check=yes
34832fi 17994fi
34833if test -z "$no_dev_ptmx" ; then 17995if test -z "$no_dev_ptmx" ; then
34834 if test "x$disable_ptmx_check" != "xyes" ; then 17996 if test "x$disable_ptmx_check" != "xyes" ; then
34835 { echo "$as_me:$LINENO: checking for \"/dev/ptmx\"" >&5 17997 as_ac_File=`$as_echo "ac_cv_file_"/dev/ptmx"" | $as_tr_sh`
34836echo $ECHO_N "checking for \"/dev/ptmx\"... $ECHO_C" >&6; } 17998{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptmx\"" >&5
34837if test "${ac_cv_file___dev_ptmx_+set}" = set; then 17999$as_echo_n "checking for \"/dev/ptmx\"... " >&6; }
34838 echo $ECHO_N "(cached) $ECHO_C" >&6 18000if eval \${$as_ac_File+:} false; then :
18001 $as_echo_n "(cached) " >&6
34839else 18002else
34840 test "$cross_compiling" = yes && 18003 test "$cross_compiling" = yes &&
34841 { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 18004 as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
34842echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
34843 { (exit 1); exit 1; }; }
34844if test -r ""/dev/ptmx""; then 18005if test -r ""/dev/ptmx""; then
34845 ac_cv_file___dev_ptmx_=yes 18006 eval "$as_ac_File=yes"
34846else 18007else
34847 ac_cv_file___dev_ptmx_=no 18008 eval "$as_ac_File=no"
34848fi 18009fi
34849fi 18010fi
34850{ echo "$as_me:$LINENO: result: $ac_cv_file___dev_ptmx_" >&5 18011eval ac_res=\$$as_ac_File
34851echo "${ECHO_T}$ac_cv_file___dev_ptmx_" >&6; } 18012 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
34852if test $ac_cv_file___dev_ptmx_ = yes; then 18013$as_echo "$ac_res" >&6; }
18014if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
34853 18015
34854 18016
34855cat >>confdefs.h <<_ACEOF 18017cat >>confdefs.h <<_ACEOF
@@ -34865,24 +18027,24 @@ fi
34865fi 18027fi
34866 18028
34867if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then 18029if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then
34868 { echo "$as_me:$LINENO: checking for \"/dev/ptc\"" >&5 18030 as_ac_File=`$as_echo "ac_cv_file_"/dev/ptc"" | $as_tr_sh`
34869echo $ECHO_N "checking for \"/dev/ptc\"... $ECHO_C" >&6; } 18031{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptc\"" >&5
34870if test "${ac_cv_file___dev_ptc_+set}" = set; then 18032$as_echo_n "checking for \"/dev/ptc\"... " >&6; }
34871 echo $ECHO_N "(cached) $ECHO_C" >&6 18033if eval \${$as_ac_File+:} false; then :
18034 $as_echo_n "(cached) " >&6
34872else 18035else
34873 test "$cross_compiling" = yes && 18036 test "$cross_compiling" = yes &&
34874 { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 18037 as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
34875echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
34876 { (exit 1); exit 1; }; }
34877if test -r ""/dev/ptc""; then 18038if test -r ""/dev/ptc""; then
34878 ac_cv_file___dev_ptc_=yes 18039 eval "$as_ac_File=yes"
34879else 18040else
34880 ac_cv_file___dev_ptc_=no 18041 eval "$as_ac_File=no"
34881fi 18042fi
34882fi 18043fi
34883{ echo "$as_me:$LINENO: result: $ac_cv_file___dev_ptc_" >&5 18044eval ac_res=\$$as_ac_File
34884echo "${ECHO_T}$ac_cv_file___dev_ptc_" >&6; } 18045 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
34885if test $ac_cv_file___dev_ptc_ = yes; then 18046$as_echo "$ac_res" >&6; }
18047if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
34886 18048
34887 18049
34888cat >>confdefs.h <<_ACEOF 18050cat >>confdefs.h <<_ACEOF
@@ -34895,23 +18057,21 @@ _ACEOF
34895fi 18057fi
34896 18058
34897else 18059else
34898 { echo "$as_me:$LINENO: WARNING: cross compiling: Disabling /dev/ptc test" >&5 18060 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptc test" >&5
34899echo "$as_me: WARNING: cross compiling: Disabling /dev/ptc test" >&2;} 18061$as_echo "$as_me: WARNING: cross compiling: Disabling /dev/ptc test" >&2;}
34900fi 18062fi
34901 18063
34902# Options from here on. Some of these are preset by platform above 18064# Options from here on. Some of these are preset by platform above
34903 18065
34904# Check whether --with-mantype was given. 18066# Check whether --with-mantype was given.
34905if test "${with_mantype+set}" = set; then 18067if test "${with_mantype+set}" = set; then :
34906 withval=$with_mantype; 18068 withval=$with_mantype;
34907 case "$withval" in 18069 case "$withval" in
34908 man|cat|doc) 18070 man|cat|doc)
34909 MANTYPE=$withval 18071 MANTYPE=$withval
34910 ;; 18072 ;;
34911 *) 18073 *)
34912 { { echo "$as_me:$LINENO: error: invalid man type: $withval" >&5 18074 as_fn_error $? "invalid man type: $withval" "$LINENO" 5
34913echo "$as_me: error: invalid man type: $withval" >&2;}
34914 { (exit 1); exit 1; }; }
34915 ;; 18075 ;;
34916 esac 18076 esac
34917 18077
@@ -34924,10 +18084,10 @@ if test -z "$MANTYPE"; then
34924do 18084do
34925 # Extract the first word of "$ac_prog", so it can be a program name with args. 18085 # Extract the first word of "$ac_prog", so it can be a program name with args.
34926set dummy $ac_prog; ac_word=$2 18086set dummy $ac_prog; ac_word=$2
34927{ echo "$as_me:$LINENO: checking for $ac_word" >&5 18087{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
34928echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 18088$as_echo_n "checking for $ac_word... " >&6; }
34929if test "${ac_cv_path_NROFF+set}" = set; then 18089if ${ac_cv_path_NROFF+:} false; then :
34930 echo $ECHO_N "(cached) $ECHO_C" >&6 18090 $as_echo_n "(cached) " >&6
34931else 18091else
34932 case $NROFF in 18092 case $NROFF in
34933 [\\/]* | ?:[\\/]*) 18093 [\\/]* | ?:[\\/]*)
@@ -34939,14 +18099,14 @@ for as_dir in $TestPath
34939do 18099do
34940 IFS=$as_save_IFS 18100 IFS=$as_save_IFS
34941 test -z "$as_dir" && as_dir=. 18101 test -z "$as_dir" && as_dir=.
34942 for ac_exec_ext in '' $ac_executable_extensions; do 18102 for ac_exec_ext in '' $ac_executable_extensions; do
34943 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 18103 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
34944 ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext" 18104 ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext"
34945 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 18105 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
34946 break 2 18106 break 2
34947 fi 18107 fi
34948done 18108done
34949done 18109 done
34950IFS=$as_save_IFS 18110IFS=$as_save_IFS
34951 18111
34952 ;; 18112 ;;
@@ -34954,11 +18114,11 @@ esac
34954fi 18114fi
34955NROFF=$ac_cv_path_NROFF 18115NROFF=$ac_cv_path_NROFF
34956if test -n "$NROFF"; then 18116if test -n "$NROFF"; then
34957 { echo "$as_me:$LINENO: result: $NROFF" >&5 18117 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5
34958echo "${ECHO_T}$NROFF" >&6; } 18118$as_echo "$NROFF" >&6; }
34959else 18119else
34960 { echo "$as_me:$LINENO: result: no" >&5 18120 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
34961echo "${ECHO_T}no" >&6; } 18121$as_echo "no" >&6; }
34962fi 18122fi
34963 18123
34964 18124
@@ -34986,13 +18146,11 @@ fi
34986MD5_MSG="no" 18146MD5_MSG="no"
34987 18147
34988# Check whether --with-md5-passwords was given. 18148# Check whether --with-md5-passwords was given.
34989if test "${with_md5_passwords+set}" = set; then 18149if test "${with_md5_passwords+set}" = set; then :
34990 withval=$with_md5_passwords; 18150 withval=$with_md5_passwords;
34991 if test "x$withval" != "xno" ; then 18151 if test "x$withval" != "xno" ; then
34992 18152
34993cat >>confdefs.h <<\_ACEOF 18153$as_echo "#define HAVE_MD5_PASSWORDS 1" >>confdefs.h
34994#define HAVE_MD5_PASSWORDS 1
34995_ACEOF
34996 18154
34997 MD5_MSG="yes" 18155 MD5_MSG="yes"
34998 fi 18156 fi
@@ -35004,12 +18162,10 @@ fi
35004# Whether to disable shadow password support 18162# Whether to disable shadow password support
35005 18163
35006# Check whether --with-shadow was given. 18164# Check whether --with-shadow was given.
35007if test "${with_shadow+set}" = set; then 18165if test "${with_shadow+set}" = set; then :
35008 withval=$with_shadow; 18166 withval=$with_shadow;
35009 if test "x$withval" = "xno" ; then 18167 if test "x$withval" = "xno" ; then
35010 cat >>confdefs.h <<\_ACEOF 18168 $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
35011#define DISABLE_SHADOW 1
35012_ACEOF
35013 18169
35014 disable_shadow=yes 18170 disable_shadow=yes
35015 fi 18171 fi
@@ -35019,13 +18175,9 @@ fi
35019 18175
35020 18176
35021if test -z "$disable_shadow" ; then 18177if test -z "$disable_shadow" ; then
35022 { echo "$as_me:$LINENO: checking if the systems has expire shadow information" >&5 18178 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the systems has expire shadow information" >&5
35023echo $ECHO_N "checking if the systems has expire shadow information... $ECHO_C" >&6; } 18179$as_echo_n "checking if the systems has expire shadow information... " >&6; }
35024 cat >conftest.$ac_ext <<_ACEOF 18180 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35025/* confdefs.h. */
35026_ACEOF
35027cat confdefs.h >>conftest.$ac_ext
35028cat >>conftest.$ac_ext <<_ACEOF
35029/* end confdefs.h. */ 18181/* end confdefs.h. */
35030 18182
35031#include <sys/types.h> 18183#include <sys/types.h>
@@ -35040,45 +18192,20 @@ main ()
35040 return 0; 18192 return 0;
35041} 18193}
35042_ACEOF 18194_ACEOF
35043rm -f conftest.$ac_objext 18195if ac_fn_c_try_compile "$LINENO"; then :
35044if { (ac_try="$ac_compile"
35045case "(($ac_try" in
35046 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35047 *) ac_try_echo=$ac_try;;
35048esac
35049eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35050 (eval "$ac_compile") 2>conftest.er1
35051 ac_status=$?
35052 grep -v '^ *+' conftest.er1 >conftest.err
35053 rm -f conftest.er1
35054 cat conftest.err >&5
35055 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35056 (exit $ac_status); } && {
35057 test -z "$ac_c_werror_flag" ||
35058 test ! -s conftest.err
35059 } && test -s conftest.$ac_objext; then
35060 sp_expire_available=yes 18196 sp_expire_available=yes
35061else
35062 echo "$as_me: failed program was:" >&5
35063sed 's/^/| /' conftest.$ac_ext >&5
35064
35065
35066
35067fi 18197fi
35068
35069rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18198rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35070 18199
35071 if test "x$sp_expire_available" = "xyes" ; then 18200 if test "x$sp_expire_available" = "xyes" ; then
35072 { echo "$as_me:$LINENO: result: yes" >&5 18201 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35073echo "${ECHO_T}yes" >&6; } 18202$as_echo "yes" >&6; }
35074 18203
35075cat >>confdefs.h <<\_ACEOF 18204$as_echo "#define HAS_SHADOW_EXPIRE 1" >>confdefs.h
35076#define HAS_SHADOW_EXPIRE 1
35077_ACEOF
35078 18205
35079 else 18206 else
35080 { echo "$as_me:$LINENO: result: no" >&5 18207 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35081echo "${ECHO_T}no" >&6; } 18208$as_echo "no" >&6; }
35082 fi 18209 fi
35083fi 18210fi
35084 18211
@@ -35086,20 +18213,16 @@ fi
35086if test ! -z "$IPADDR_IN_DISPLAY" ; then 18213if test ! -z "$IPADDR_IN_DISPLAY" ; then
35087 DISPLAY_HACK_MSG="yes" 18214 DISPLAY_HACK_MSG="yes"
35088 18215
35089cat >>confdefs.h <<\_ACEOF 18216$as_echo "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
35090#define IPADDR_IN_DISPLAY 1
35091_ACEOF
35092 18217
35093else 18218else
35094 DISPLAY_HACK_MSG="no" 18219 DISPLAY_HACK_MSG="no"
35095 18220
35096# Check whether --with-ipaddr-display was given. 18221# Check whether --with-ipaddr-display was given.
35097if test "${with_ipaddr_display+set}" = set; then 18222if test "${with_ipaddr_display+set}" = set; then :
35098 withval=$with_ipaddr_display; 18223 withval=$with_ipaddr_display;
35099 if test "x$withval" != "xno" ; then 18224 if test "x$withval" != "xno" ; then
35100 cat >>confdefs.h <<\_ACEOF 18225 $as_echo "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
35101#define IPADDR_IN_DISPLAY 1
35102_ACEOF
35103 18226
35104 DISPLAY_HACK_MSG="yes" 18227 DISPLAY_HACK_MSG="yes"
35105 fi 18228 fi
@@ -35111,10 +18234,10 @@ fi
35111 18234
35112# check for /etc/default/login and use it if present. 18235# check for /etc/default/login and use it if present.
35113# Check whether --enable-etc-default-login was given. 18236# Check whether --enable-etc-default-login was given.
35114if test "${enable_etc_default_login+set}" = set; then 18237if test "${enable_etc_default_login+set}" = set; then :
35115 enableval=$enable_etc_default_login; if test "x$enableval" = "xno"; then 18238 enableval=$enable_etc_default_login; if test "x$enableval" = "xno"; then
35116 { echo "$as_me:$LINENO: /etc/default/login handling disabled" >&5 18239 { $as_echo "$as_me:${as_lineno-$LINENO}: /etc/default/login handling disabled" >&5
35117echo "$as_me: /etc/default/login handling disabled" >&6;} 18240$as_echo "$as_me: /etc/default/login handling disabled" >&6;}
35118 etc_default_login=no 18241 etc_default_login=no
35119 else 18242 else
35120 etc_default_login=yes 18243 etc_default_login=yes
@@ -35122,8 +18245,8 @@ echo "$as_me: /etc/default/login handling disabled" >&6;}
35122else 18245else
35123 if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; 18246 if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes";
35124 then 18247 then
35125 { echo "$as_me:$LINENO: WARNING: cross compiling: not checking /etc/default/login" >&5 18248 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking /etc/default/login" >&5
35126echo "$as_me: WARNING: cross compiling: not checking /etc/default/login" >&2;} 18249$as_echo "$as_me: WARNING: cross compiling: not checking /etc/default/login" >&2;}
35127 etc_default_login=no 18250 etc_default_login=no
35128 else 18251 else
35129 etc_default_login=yes 18252 etc_default_login=yes
@@ -35133,32 +18256,30 @@ fi
35133 18256
35134 18257
35135if test "x$etc_default_login" != "xno"; then 18258if test "x$etc_default_login" != "xno"; then
35136 { echo "$as_me:$LINENO: checking for \"/etc/default/login\"" >&5 18259 as_ac_File=`$as_echo "ac_cv_file_"/etc/default/login"" | $as_tr_sh`
35137echo $ECHO_N "checking for \"/etc/default/login\"... $ECHO_C" >&6; } 18260{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/etc/default/login\"" >&5
35138if test "${ac_cv_file___etc_default_login_+set}" = set; then 18261$as_echo_n "checking for \"/etc/default/login\"... " >&6; }
35139 echo $ECHO_N "(cached) $ECHO_C" >&6 18262if eval \${$as_ac_File+:} false; then :
18263 $as_echo_n "(cached) " >&6
35140else 18264else
35141 test "$cross_compiling" = yes && 18265 test "$cross_compiling" = yes &&
35142 { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 18266 as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
35143echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
35144 { (exit 1); exit 1; }; }
35145if test -r ""/etc/default/login""; then 18267if test -r ""/etc/default/login""; then
35146 ac_cv_file___etc_default_login_=yes 18268 eval "$as_ac_File=yes"
35147else 18269else
35148 ac_cv_file___etc_default_login_=no 18270 eval "$as_ac_File=no"
35149fi 18271fi
35150fi 18272fi
35151{ echo "$as_me:$LINENO: result: $ac_cv_file___etc_default_login_" >&5 18273eval ac_res=\$$as_ac_File
35152echo "${ECHO_T}$ac_cv_file___etc_default_login_" >&6; } 18274 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
35153if test $ac_cv_file___etc_default_login_ = yes; then 18275$as_echo "$ac_res" >&6; }
18276if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
35154 external_path_file=/etc/default/login 18277 external_path_file=/etc/default/login
35155fi 18278fi
35156 18279
35157 if test "x$external_path_file" = "x/etc/default/login"; then 18280 if test "x$external_path_file" = "x/etc/default/login"; then
35158 18281
35159cat >>confdefs.h <<\_ACEOF 18282$as_echo "#define HAVE_ETC_DEFAULT_LOGIN 1" >>confdefs.h
35160#define HAVE_ETC_DEFAULT_LOGIN 1
35161_ACEOF
35162 18283
35163 fi 18284 fi
35164fi 18285fi
@@ -35172,21 +18293,21 @@ fi
35172SERVER_PATH_MSG="(default)" 18293SERVER_PATH_MSG="(default)"
35173 18294
35174# Check whether --with-default-path was given. 18295# Check whether --with-default-path was given.
35175if test "${with_default_path+set}" = set; then 18296if test "${with_default_path+set}" = set; then :
35176 withval=$with_default_path; 18297 withval=$with_default_path;
35177 if test "x$external_path_file" = "x/etc/login.conf" ; then 18298 if test "x$external_path_file" = "x/etc/login.conf" ; then
35178 { echo "$as_me:$LINENO: WARNING: 18299 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
35179--with-default-path=PATH has no effect on this system. 18300--with-default-path=PATH has no effect on this system.
35180Edit /etc/login.conf instead." >&5 18301Edit /etc/login.conf instead." >&5
35181echo "$as_me: WARNING: 18302$as_echo "$as_me: WARNING:
35182--with-default-path=PATH has no effect on this system. 18303--with-default-path=PATH has no effect on this system.
35183Edit /etc/login.conf instead." >&2;} 18304Edit /etc/login.conf instead." >&2;}
35184 elif test "x$withval" != "xno" ; then 18305 elif test "x$withval" != "xno" ; then
35185 if test ! -z "$external_path_file" ; then 18306 if test ! -z "$external_path_file" ; then
35186 { echo "$as_me:$LINENO: WARNING: 18307 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
35187--with-default-path=PATH will only be used if PATH is not defined in 18308--with-default-path=PATH will only be used if PATH is not defined in
35188$external_path_file ." >&5 18309$external_path_file ." >&5
35189echo "$as_me: WARNING: 18310$as_echo "$as_me: WARNING:
35190--with-default-path=PATH will only be used if PATH is not defined in 18311--with-default-path=PATH will only be used if PATH is not defined in
35191$external_path_file ." >&2;} 18312$external_path_file ." >&2;}
35192 fi 18313 fi
@@ -35196,26 +18317,22 @@ $external_path_file ." >&2;}
35196 18317
35197else 18318else
35198 if test "x$external_path_file" = "x/etc/login.conf" ; then 18319 if test "x$external_path_file" = "x/etc/login.conf" ; then
35199 { echo "$as_me:$LINENO: WARNING: Make sure the path to scp is in /etc/login.conf" >&5 18320 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Make sure the path to scp is in /etc/login.conf" >&5
35200echo "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;} 18321$as_echo "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;}
35201 else 18322 else
35202 if test ! -z "$external_path_file" ; then 18323 if test ! -z "$external_path_file" ; then
35203 { echo "$as_me:$LINENO: WARNING: 18324 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
35204If PATH is defined in $external_path_file, ensure the path to scp is included, 18325If PATH is defined in $external_path_file, ensure the path to scp is included,
35205otherwise scp will not work." >&5 18326otherwise scp will not work." >&5
35206echo "$as_me: WARNING: 18327$as_echo "$as_me: WARNING:
35207If PATH is defined in $external_path_file, ensure the path to scp is included, 18328If PATH is defined in $external_path_file, ensure the path to scp is included,
35208otherwise scp will not work." >&2;} 18329otherwise scp will not work." >&2;}
35209 fi 18330 fi
35210 if test "$cross_compiling" = yes; then 18331 if test "$cross_compiling" = yes; then :
35211 user_path="/usr/bin:/bin:/usr/sbin:/sbin" 18332 user_path="/usr/bin:/bin:/usr/sbin:/sbin"
35212 18333
35213else 18334else
35214 cat >conftest.$ac_ext <<_ACEOF 18335 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35215/* confdefs.h. */
35216_ACEOF
35217cat confdefs.h >>conftest.$ac_ext
35218cat >>conftest.$ac_ext <<_ACEOF
35219/* end confdefs.h. */ 18336/* end confdefs.h. */
35220 18337
35221/* find out what STDPATH is */ 18338/* find out what STDPATH is */
@@ -35255,39 +18372,15 @@ main ()
35255 return 0; 18372 return 0;
35256} 18373}
35257_ACEOF 18374_ACEOF
35258rm -f conftest$ac_exeext 18375if ac_fn_c_try_run "$LINENO"; then :
35259if { (ac_try="$ac_link"
35260case "(($ac_try" in
35261 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35262 *) ac_try_echo=$ac_try;;
35263esac
35264eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35265 (eval "$ac_link") 2>&5
35266 ac_status=$?
35267 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35268 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
35269 { (case "(($ac_try" in
35270 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35271 *) ac_try_echo=$ac_try;;
35272esac
35273eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35274 (eval "$ac_try") 2>&5
35275 ac_status=$?
35276 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35277 (exit $ac_status); }; }; then
35278 user_path=`cat conftest.stdpath` 18376 user_path=`cat conftest.stdpath`
35279else 18377else
35280 echo "$as_me: program exited with status $ac_status" >&5 18378 user_path="/usr/bin:/bin:/usr/sbin:/sbin"
35281echo "$as_me: failed program was:" >&5
35282sed 's/^/| /' conftest.$ac_ext >&5
35283
35284( exit $ac_status )
35285 user_path="/usr/bin:/bin:/usr/sbin:/sbin"
35286fi 18379fi
35287rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext 18380rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
18381 conftest.$ac_objext conftest.beam conftest.$ac_ext
35288fi 18382fi
35289 18383
35290
35291# make sure $bindir is in USER_PATH so scp will work 18384# make sure $bindir is in USER_PATH so scp will work
35292 t_bindir="${bindir}" 18385 t_bindir="${bindir}"
35293 while echo "${t_bindir}" | egrep '\$\{|NONE/' >/dev/null 2>&1; do 18386 while echo "${t_bindir}" | egrep '\$\{|NONE/' >/dev/null 2>&1; do
@@ -35304,8 +18397,8 @@ fi
35304 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1 18397 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
35305 if test $? -ne 0 ; then 18398 if test $? -ne 0 ; then
35306 user_path=$user_path:$t_bindir 18399 user_path=$user_path:$t_bindir
35307 { echo "$as_me:$LINENO: result: Adding $t_bindir to USER_PATH so scp will work" >&5 18400 { $as_echo "$as_me:${as_lineno-$LINENO}: result: Adding $t_bindir to USER_PATH so scp will work" >&5
35308echo "${ECHO_T}Adding $t_bindir to USER_PATH so scp will work" >&6; } 18401$as_echo "Adding $t_bindir to USER_PATH so scp will work" >&6; }
35309 fi 18402 fi
35310 fi 18403 fi
35311 fi 18404 fi
@@ -35324,7 +18417,7 @@ fi
35324# Set superuser path separately to user path 18417# Set superuser path separately to user path
35325 18418
35326# Check whether --with-superuser-path was given. 18419# Check whether --with-superuser-path was given.
35327if test "${with_superuser_path+set}" = set; then 18420if test "${with_superuser_path+set}" = set; then :
35328 withval=$with_superuser_path; 18421 withval=$with_superuser_path;
35329 if test -n "$withval" && test "x$withval" != "xno" && \ 18422 if test -n "$withval" && test "x$withval" != "xno" && \
35330 test "x${withval}" != "xyes"; then 18423 test "x${withval}" != "xyes"; then
@@ -35341,40 +18434,36 @@ fi
35341 18434
35342 18435
35343 18436
35344{ echo "$as_me:$LINENO: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5 18437{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5
35345echo $ECHO_N "checking if we need to convert IPv4 in IPv6-mapped addresses... $ECHO_C" >&6; } 18438$as_echo_n "checking if we need to convert IPv4 in IPv6-mapped addresses... " >&6; }
35346IPV4_IN6_HACK_MSG="no" 18439IPV4_IN6_HACK_MSG="no"
35347 18440
35348# Check whether --with-4in6 was given. 18441# Check whether --with-4in6 was given.
35349if test "${with_4in6+set}" = set; then 18442if test "${with_4in6+set}" = set; then :
35350 withval=$with_4in6; 18443 withval=$with_4in6;
35351 if test "x$withval" != "xno" ; then 18444 if test "x$withval" != "xno" ; then
35352 { echo "$as_me:$LINENO: result: yes" >&5 18445 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35353echo "${ECHO_T}yes" >&6; } 18446$as_echo "yes" >&6; }
35354 18447
35355cat >>confdefs.h <<\_ACEOF 18448$as_echo "#define IPV4_IN_IPV6 1" >>confdefs.h
35356#define IPV4_IN_IPV6 1
35357_ACEOF
35358 18449
35359 IPV4_IN6_HACK_MSG="yes" 18450 IPV4_IN6_HACK_MSG="yes"
35360 else 18451 else
35361 { echo "$as_me:$LINENO: result: no" >&5 18452 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35362echo "${ECHO_T}no" >&6; } 18453$as_echo "no" >&6; }
35363 fi 18454 fi
35364 18455
35365else 18456else
35366 18457
35367 if test "x$inet6_default_4in6" = "xyes"; then 18458 if test "x$inet6_default_4in6" = "xyes"; then
35368 { echo "$as_me:$LINENO: result: yes (default)" >&5 18459 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
35369echo "${ECHO_T}yes (default)" >&6; } 18460$as_echo "yes (default)" >&6; }
35370 cat >>confdefs.h <<\_ACEOF 18461 $as_echo "#define IPV4_IN_IPV6 1" >>confdefs.h
35371#define IPV4_IN_IPV6 1
35372_ACEOF
35373 18462
35374 IPV4_IN6_HACK_MSG="yes" 18463 IPV4_IN6_HACK_MSG="yes"
35375 else 18464 else
35376 { echo "$as_me:$LINENO: result: no (default)" >&5 18465 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (default)" >&5
35377echo "${ECHO_T}no (default)" >&6; } 18466$as_echo "no (default)" >&6; }
35378 fi 18467 fi
35379 18468
35380 18469
@@ -35385,13 +18474,11 @@ fi
35385BSD_AUTH_MSG=no 18474BSD_AUTH_MSG=no
35386 18475
35387# Check whether --with-bsd-auth was given. 18476# Check whether --with-bsd-auth was given.
35388if test "${with_bsd_auth+set}" = set; then 18477if test "${with_bsd_auth+set}" = set; then :
35389 withval=$with_bsd_auth; 18478 withval=$with_bsd_auth;
35390 if test "x$withval" != "xno" ; then 18479 if test "x$withval" != "xno" ; then
35391 18480
35392cat >>confdefs.h <<\_ACEOF 18481$as_echo "#define BSD_AUTH 1" >>confdefs.h
35393#define BSD_AUTH 1
35394_ACEOF
35395 18482
35396 BSD_AUTH_MSG=yes 18483 BSD_AUTH_MSG=yes
35397 fi 18484 fi
@@ -35412,14 +18499,14 @@ fi
35412 18499
35413 18500
35414# Check whether --with-pid-dir was given. 18501# Check whether --with-pid-dir was given.
35415if test "${with_pid_dir+set}" = set; then 18502if test "${with_pid_dir+set}" = set; then :
35416 withval=$with_pid_dir; 18503 withval=$with_pid_dir;
35417 if test -n "$withval" && test "x$withval" != "xno" && \ 18504 if test -n "$withval" && test "x$withval" != "xno" && \
35418 test "x${withval}" != "xyes"; then 18505 test "x${withval}" != "xyes"; then
35419 piddir=$withval 18506 piddir=$withval
35420 if test ! -d $piddir ; then 18507 if test ! -d $piddir ; then
35421 { echo "$as_me:$LINENO: WARNING: ** no $piddir directory on this system **" >&5 18508 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** no $piddir directory on this system **" >&5
35422echo "$as_me: WARNING: ** no $piddir directory on this system **" >&2;} 18509$as_echo "$as_me: WARNING: ** no $piddir directory on this system **" >&2;}
35423 fi 18510 fi
35424 fi 18511 fi
35425 18512
@@ -35435,12 +18522,10 @@ _ACEOF
35435 18522
35436 18523
35437# Check whether --enable-lastlog was given. 18524# Check whether --enable-lastlog was given.
35438if test "${enable_lastlog+set}" = set; then 18525if test "${enable_lastlog+set}" = set; then :
35439 enableval=$enable_lastlog; 18526 enableval=$enable_lastlog;
35440 if test "x$enableval" = "xno" ; then 18527 if test "x$enableval" = "xno" ; then
35441 cat >>confdefs.h <<\_ACEOF 18528 $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
35442#define DISABLE_LASTLOG 1
35443_ACEOF
35444 18529
35445 fi 18530 fi
35446 18531
@@ -35448,12 +18533,10 @@ _ACEOF
35448fi 18533fi
35449 18534
35450# Check whether --enable-utmp was given. 18535# Check whether --enable-utmp was given.
35451if test "${enable_utmp+set}" = set; then 18536if test "${enable_utmp+set}" = set; then :
35452 enableval=$enable_utmp; 18537 enableval=$enable_utmp;
35453 if test "x$enableval" = "xno" ; then 18538 if test "x$enableval" = "xno" ; then
35454 cat >>confdefs.h <<\_ACEOF 18539 $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
35455#define DISABLE_UTMP 1
35456_ACEOF
35457 18540
35458 fi 18541 fi
35459 18542
@@ -35461,13 +18544,11 @@ _ACEOF
35461fi 18544fi
35462 18545
35463# Check whether --enable-utmpx was given. 18546# Check whether --enable-utmpx was given.
35464if test "${enable_utmpx+set}" = set; then 18547if test "${enable_utmpx+set}" = set; then :
35465 enableval=$enable_utmpx; 18548 enableval=$enable_utmpx;
35466 if test "x$enableval" = "xno" ; then 18549 if test "x$enableval" = "xno" ; then
35467 18550
35468cat >>confdefs.h <<\_ACEOF 18551$as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
35469#define DISABLE_UTMPX 1
35470_ACEOF
35471 18552
35472 fi 18553 fi
35473 18554
@@ -35475,12 +18556,10 @@ _ACEOF
35475fi 18556fi
35476 18557
35477# Check whether --enable-wtmp was given. 18558# Check whether --enable-wtmp was given.
35478if test "${enable_wtmp+set}" = set; then 18559if test "${enable_wtmp+set}" = set; then :
35479 enableval=$enable_wtmp; 18560 enableval=$enable_wtmp;
35480 if test "x$enableval" = "xno" ; then 18561 if test "x$enableval" = "xno" ; then
35481 cat >>confdefs.h <<\_ACEOF 18562 $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
35482#define DISABLE_WTMP 1
35483_ACEOF
35484 18563
35485 fi 18564 fi
35486 18565
@@ -35488,13 +18567,11 @@ _ACEOF
35488fi 18567fi
35489 18568
35490# Check whether --enable-wtmpx was given. 18569# Check whether --enable-wtmpx was given.
35491if test "${enable_wtmpx+set}" = set; then 18570if test "${enable_wtmpx+set}" = set; then :
35492 enableval=$enable_wtmpx; 18571 enableval=$enable_wtmpx;
35493 if test "x$enableval" = "xno" ; then 18572 if test "x$enableval" = "xno" ; then
35494 18573
35495cat >>confdefs.h <<\_ACEOF 18574$as_echo "#define DISABLE_WTMPX 1" >>confdefs.h
35496#define DISABLE_WTMPX 1
35497_ACEOF
35498 18575
35499 fi 18576 fi
35500 18577
@@ -35502,12 +18579,10 @@ _ACEOF
35502fi 18579fi
35503 18580
35504# Check whether --enable-libutil was given. 18581# Check whether --enable-libutil was given.
35505if test "${enable_libutil+set}" = set; then 18582if test "${enable_libutil+set}" = set; then :
35506 enableval=$enable_libutil; 18583 enableval=$enable_libutil;
35507 if test "x$enableval" = "xno" ; then 18584 if test "x$enableval" = "xno" ; then
35508 cat >>confdefs.h <<\_ACEOF 18585 $as_echo "#define DISABLE_LOGIN 1" >>confdefs.h
35509#define DISABLE_LOGIN 1
35510_ACEOF
35511 18586
35512 fi 18587 fi
35513 18588
@@ -35515,13 +18590,11 @@ _ACEOF
35515fi 18590fi
35516 18591
35517# Check whether --enable-pututline was given. 18592# Check whether --enable-pututline was given.
35518if test "${enable_pututline+set}" = set; then 18593if test "${enable_pututline+set}" = set; then :
35519 enableval=$enable_pututline; 18594 enableval=$enable_pututline;
35520 if test "x$enableval" = "xno" ; then 18595 if test "x$enableval" = "xno" ; then
35521 18596
35522cat >>confdefs.h <<\_ACEOF 18597$as_echo "#define DISABLE_PUTUTLINE 1" >>confdefs.h
35523#define DISABLE_PUTUTLINE 1
35524_ACEOF
35525 18598
35526 fi 18599 fi
35527 18600
@@ -35529,13 +18602,11 @@ _ACEOF
35529fi 18602fi
35530 18603
35531# Check whether --enable-pututxline was given. 18604# Check whether --enable-pututxline was given.
35532if test "${enable_pututxline+set}" = set; then 18605if test "${enable_pututxline+set}" = set; then :
35533 enableval=$enable_pututxline; 18606 enableval=$enable_pututxline;
35534 if test "x$enableval" = "xno" ; then 18607 if test "x$enableval" = "xno" ; then
35535 18608
35536cat >>confdefs.h <<\_ACEOF 18609$as_echo "#define DISABLE_PUTUTXLINE 1" >>confdefs.h
35537#define DISABLE_PUTUTXLINE 1
35538_ACEOF
35539 18610
35540 fi 18611 fi
35541 18612
@@ -35544,12 +18615,10 @@ fi
35544 18615
35545 18616
35546# Check whether --with-lastlog was given. 18617# Check whether --with-lastlog was given.
35547if test "${with_lastlog+set}" = set; then 18618if test "${with_lastlog+set}" = set; then :
35548 withval=$with_lastlog; 18619 withval=$with_lastlog;
35549 if test "x$withval" = "xno" ; then 18620 if test "x$withval" = "xno" ; then
35550 cat >>confdefs.h <<\_ACEOF 18621 $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
35551#define DISABLE_LASTLOG 1
35552_ACEOF
35553 18622
35554 elif test -n "$withval" && test "x${withval}" != "xyes"; then 18623 elif test -n "$withval" && test "x${withval}" != "xyes"; then
35555 conf_lastlog_location=$withval 18624 conf_lastlog_location=$withval
@@ -35560,13 +18629,9 @@ fi
35560 18629
35561 18630
35562 18631
35563{ echo "$as_me:$LINENO: checking if your system defines LASTLOG_FILE" >&5 18632{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines LASTLOG_FILE" >&5
35564echo $ECHO_N "checking if your system defines LASTLOG_FILE... $ECHO_C" >&6; } 18633$as_echo_n "checking if your system defines LASTLOG_FILE... " >&6; }
35565cat >conftest.$ac_ext <<_ACEOF 18634cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35566/* confdefs.h. */
35567_ACEOF
35568cat confdefs.h >>conftest.$ac_ext
35569cat >>conftest.$ac_ext <<_ACEOF
35570/* end confdefs.h. */ 18635/* end confdefs.h. */
35571 18636
35572#include <sys/types.h> 18637#include <sys/types.h>
@@ -35589,39 +18654,16 @@ main ()
35589 return 0; 18654 return 0;
35590} 18655}
35591_ACEOF 18656_ACEOF
35592rm -f conftest.$ac_objext 18657if ac_fn_c_try_compile "$LINENO"; then :
35593if { (ac_try="$ac_compile" 18658 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35594case "(($ac_try" in 18659$as_echo "yes" >&6; }
35595 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35596 *) ac_try_echo=$ac_try;;
35597esac
35598eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35599 (eval "$ac_compile") 2>conftest.er1
35600 ac_status=$?
35601 grep -v '^ *+' conftest.er1 >conftest.err
35602 rm -f conftest.er1
35603 cat conftest.err >&5
35604 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35605 (exit $ac_status); } && {
35606 test -z "$ac_c_werror_flag" ||
35607 test ! -s conftest.err
35608 } && test -s conftest.$ac_objext; then
35609 { echo "$as_me:$LINENO: result: yes" >&5
35610echo "${ECHO_T}yes" >&6; }
35611else 18660else
35612 echo "$as_me: failed program was:" >&5
35613sed 's/^/| /' conftest.$ac_ext >&5
35614
35615 18661
35616 { echo "$as_me:$LINENO: result: no" >&5 18662 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35617echo "${ECHO_T}no" >&6; } 18663$as_echo "no" >&6; }
35618 { echo "$as_me:$LINENO: checking if your system defines _PATH_LASTLOG" >&5 18664 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines _PATH_LASTLOG" >&5
35619echo $ECHO_N "checking if your system defines _PATH_LASTLOG... $ECHO_C" >&6; } 18665$as_echo_n "checking if your system defines _PATH_LASTLOG... " >&6; }
35620 cat >conftest.$ac_ext <<_ACEOF 18666 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35621/* confdefs.h. */
35622_ACEOF
35623cat confdefs.h >>conftest.$ac_ext
35624cat >>conftest.$ac_ext <<_ACEOF
35625/* end confdefs.h. */ 18667/* end confdefs.h. */
35626 18668
35627#include <sys/types.h> 18669#include <sys/types.h>
@@ -35641,40 +18683,19 @@ main ()
35641 return 0; 18683 return 0;
35642} 18684}
35643_ACEOF 18685_ACEOF
35644rm -f conftest.$ac_objext 18686if ac_fn_c_try_compile "$LINENO"; then :
35645if { (ac_try="$ac_compile" 18687 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35646case "(($ac_try" in 18688$as_echo "yes" >&6; }
35647 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35648 *) ac_try_echo=$ac_try;;
35649esac
35650eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35651 (eval "$ac_compile") 2>conftest.er1
35652 ac_status=$?
35653 grep -v '^ *+' conftest.er1 >conftest.err
35654 rm -f conftest.er1
35655 cat conftest.err >&5
35656 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35657 (exit $ac_status); } && {
35658 test -z "$ac_c_werror_flag" ||
35659 test ! -s conftest.err
35660 } && test -s conftest.$ac_objext; then
35661 { echo "$as_me:$LINENO: result: yes" >&5
35662echo "${ECHO_T}yes" >&6; }
35663else 18689else
35664 echo "$as_me: failed program was:" >&5
35665sed 's/^/| /' conftest.$ac_ext >&5
35666 18690
35667 18691 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35668 { echo "$as_me:$LINENO: result: no" >&5 18692$as_echo "no" >&6; }
35669echo "${ECHO_T}no" >&6; }
35670 system_lastlog_path=no 18693 system_lastlog_path=no
35671 18694
35672fi 18695fi
35673
35674rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18696rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35675 18697
35676fi 18698fi
35677
35678rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18699rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35679 18700
35680if test -z "$conf_lastlog_location"; then 18701if test -z "$conf_lastlog_location"; then
@@ -35685,8 +18706,8 @@ if test -z "$conf_lastlog_location"; then
35685 fi 18706 fi
35686 done 18707 done
35687 if test -z "$conf_lastlog_location"; then 18708 if test -z "$conf_lastlog_location"; then
35688 { echo "$as_me:$LINENO: WARNING: ** Cannot find lastlog **" >&5 18709 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** Cannot find lastlog **" >&5
35689echo "$as_me: WARNING: ** Cannot find lastlog **" >&2;} 18710$as_echo "$as_me: WARNING: ** Cannot find lastlog **" >&2;}
35690 fi 18711 fi
35691 fi 18712 fi
35692fi 18713fi
@@ -35699,13 +18720,9 @@ _ACEOF
35699 18720
35700fi 18721fi
35701 18722
35702{ echo "$as_me:$LINENO: checking if your system defines UTMP_FILE" >&5 18723{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines UTMP_FILE" >&5
35703echo $ECHO_N "checking if your system defines UTMP_FILE... $ECHO_C" >&6; } 18724$as_echo_n "checking if your system defines UTMP_FILE... " >&6; }
35704cat >conftest.$ac_ext <<_ACEOF 18725cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35705/* confdefs.h. */
35706_ACEOF
35707cat confdefs.h >>conftest.$ac_ext
35708cat >>conftest.$ac_ext <<_ACEOF
35709/* end confdefs.h. */ 18726/* end confdefs.h. */
35710 18727
35711#include <sys/types.h> 18728#include <sys/types.h>
@@ -35722,35 +18739,15 @@ main ()
35722 return 0; 18739 return 0;
35723} 18740}
35724_ACEOF 18741_ACEOF
35725rm -f conftest.$ac_objext 18742if ac_fn_c_try_compile "$LINENO"; then :
35726if { (ac_try="$ac_compile" 18743 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35727case "(($ac_try" in 18744$as_echo "yes" >&6; }
35728 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35729 *) ac_try_echo=$ac_try;;
35730esac
35731eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35732 (eval "$ac_compile") 2>conftest.er1
35733 ac_status=$?
35734 grep -v '^ *+' conftest.er1 >conftest.err
35735 rm -f conftest.er1
35736 cat conftest.err >&5
35737 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35738 (exit $ac_status); } && {
35739 test -z "$ac_c_werror_flag" ||
35740 test ! -s conftest.err
35741 } && test -s conftest.$ac_objext; then
35742 { echo "$as_me:$LINENO: result: yes" >&5
35743echo "${ECHO_T}yes" >&6; }
35744else 18745else
35745 echo "$as_me: failed program was:" >&5 18746 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35746sed 's/^/| /' conftest.$ac_ext >&5 18747$as_echo "no" >&6; }
35747
35748 { echo "$as_me:$LINENO: result: no" >&5
35749echo "${ECHO_T}no" >&6; }
35750 system_utmp_path=no 18748 system_utmp_path=no
35751 18749
35752fi 18750fi
35753
35754rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18751rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35755if test -z "$conf_utmp_location"; then 18752if test -z "$conf_utmp_location"; then
35756 if test x"$system_utmp_path" = x"no" ; then 18753 if test x"$system_utmp_path" = x"no" ; then
@@ -35760,9 +18757,7 @@ if test -z "$conf_utmp_location"; then
35760 fi 18757 fi
35761 done 18758 done
35762 if test -z "$conf_utmp_location"; then 18759 if test -z "$conf_utmp_location"; then
35763 cat >>confdefs.h <<\_ACEOF 18760 $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
35764#define DISABLE_UTMP 1
35765_ACEOF
35766 18761
35767 fi 18762 fi
35768 fi 18763 fi
@@ -35775,13 +18770,9 @@ _ACEOF
35775 18770
35776fi 18771fi
35777 18772
35778{ echo "$as_me:$LINENO: checking if your system defines WTMP_FILE" >&5 18773{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMP_FILE" >&5
35779echo $ECHO_N "checking if your system defines WTMP_FILE... $ECHO_C" >&6; } 18774$as_echo_n "checking if your system defines WTMP_FILE... " >&6; }
35780cat >conftest.$ac_ext <<_ACEOF 18775cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35781/* confdefs.h. */
35782_ACEOF
35783cat confdefs.h >>conftest.$ac_ext
35784cat >>conftest.$ac_ext <<_ACEOF
35785/* end confdefs.h. */ 18776/* end confdefs.h. */
35786 18777
35787#include <sys/types.h> 18778#include <sys/types.h>
@@ -35798,35 +18789,15 @@ main ()
35798 return 0; 18789 return 0;
35799} 18790}
35800_ACEOF 18791_ACEOF
35801rm -f conftest.$ac_objext 18792if ac_fn_c_try_compile "$LINENO"; then :
35802if { (ac_try="$ac_compile" 18793 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35803case "(($ac_try" in 18794$as_echo "yes" >&6; }
35804 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35805 *) ac_try_echo=$ac_try;;
35806esac
35807eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35808 (eval "$ac_compile") 2>conftest.er1
35809 ac_status=$?
35810 grep -v '^ *+' conftest.er1 >conftest.err
35811 rm -f conftest.er1
35812 cat conftest.err >&5
35813 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35814 (exit $ac_status); } && {
35815 test -z "$ac_c_werror_flag" ||
35816 test ! -s conftest.err
35817 } && test -s conftest.$ac_objext; then
35818 { echo "$as_me:$LINENO: result: yes" >&5
35819echo "${ECHO_T}yes" >&6; }
35820else 18795else
35821 echo "$as_me: failed program was:" >&5 18796 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35822sed 's/^/| /' conftest.$ac_ext >&5 18797$as_echo "no" >&6; }
35823
35824 { echo "$as_me:$LINENO: result: no" >&5
35825echo "${ECHO_T}no" >&6; }
35826 system_wtmp_path=no 18798 system_wtmp_path=no
35827 18799
35828fi 18800fi
35829
35830rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18801rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35831if test -z "$conf_wtmp_location"; then 18802if test -z "$conf_wtmp_location"; then
35832 if test x"$system_wtmp_path" = x"no" ; then 18803 if test x"$system_wtmp_path" = x"no" ; then
@@ -35836,9 +18807,7 @@ if test -z "$conf_wtmp_location"; then
35836 fi 18807 fi
35837 done 18808 done
35838 if test -z "$conf_wtmp_location"; then 18809 if test -z "$conf_wtmp_location"; then
35839 cat >>confdefs.h <<\_ACEOF 18810 $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
35840#define DISABLE_WTMP 1
35841_ACEOF
35842 18811
35843 fi 18812 fi
35844 fi 18813 fi
@@ -35851,13 +18820,9 @@ _ACEOF
35851 18820
35852fi 18821fi
35853 18822
35854{ echo "$as_me:$LINENO: checking if your system defines WTMPX_FILE" >&5 18823{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMPX_FILE" >&5
35855echo $ECHO_N "checking if your system defines WTMPX_FILE... $ECHO_C" >&6; } 18824$as_echo_n "checking if your system defines WTMPX_FILE... " >&6; }
35856cat >conftest.$ac_ext <<_ACEOF 18825cat confdefs.h - <<_ACEOF >conftest.$ac_ext
35857/* confdefs.h. */
35858_ACEOF
35859cat confdefs.h >>conftest.$ac_ext
35860cat >>conftest.$ac_ext <<_ACEOF
35861/* end confdefs.h. */ 18826/* end confdefs.h. */
35862 18827
35863#include <sys/types.h> 18828#include <sys/types.h>
@@ -35877,41 +18842,19 @@ main ()
35877 return 0; 18842 return 0;
35878} 18843}
35879_ACEOF 18844_ACEOF
35880rm -f conftest.$ac_objext 18845if ac_fn_c_try_compile "$LINENO"; then :
35881if { (ac_try="$ac_compile" 18846 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
35882case "(($ac_try" in 18847$as_echo "yes" >&6; }
35883 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35884 *) ac_try_echo=$ac_try;;
35885esac
35886eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35887 (eval "$ac_compile") 2>conftest.er1
35888 ac_status=$?
35889 grep -v '^ *+' conftest.er1 >conftest.err
35890 rm -f conftest.er1
35891 cat conftest.err >&5
35892 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35893 (exit $ac_status); } && {
35894 test -z "$ac_c_werror_flag" ||
35895 test ! -s conftest.err
35896 } && test -s conftest.$ac_objext; then
35897 { echo "$as_me:$LINENO: result: yes" >&5
35898echo "${ECHO_T}yes" >&6; }
35899else 18848else
35900 echo "$as_me: failed program was:" >&5 18849 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
35901sed 's/^/| /' conftest.$ac_ext >&5 18850$as_echo "no" >&6; }
35902
35903 { echo "$as_me:$LINENO: result: no" >&5
35904echo "${ECHO_T}no" >&6; }
35905 system_wtmpx_path=no 18851 system_wtmpx_path=no
35906 18852
35907fi 18853fi
35908
35909rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 18854rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
35910if test -z "$conf_wtmpx_location"; then 18855if test -z "$conf_wtmpx_location"; then
35911 if test x"$system_wtmpx_path" = x"no" ; then 18856 if test x"$system_wtmpx_path" = x"no" ; then
35912 cat >>confdefs.h <<\_ACEOF 18857 $as_echo "#define DISABLE_WTMPX 1" >>confdefs.h
35913#define DISABLE_WTMPX 1
35914_ACEOF
35915 18858
35916 fi 18859 fi
35917else 18860else
@@ -35925,75 +18868,11 @@ fi
35925 18868
35926if test ! -z "$blibpath" ; then 18869if test ! -z "$blibpath" ; then
35927 LDFLAGS="$LDFLAGS $blibflags$blibpath" 18870 LDFLAGS="$LDFLAGS $blibflags$blibpath"
35928 { echo "$as_me:$LINENO: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5 18871 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5
35929echo "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;} 18872$as_echo "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;}
35930fi 18873fi
35931 18874
35932{ echo "$as_me:$LINENO: checking for struct lastlog.ll_line" >&5 18875ac_fn_c_check_member "$LINENO" "struct lastlog" "ll_line" "ac_cv_member_struct_lastlog_ll_line" "
35933echo $ECHO_N "checking for struct lastlog.ll_line... $ECHO_C" >&6; }
35934if test "${ac_cv_member_struct_lastlog_ll_line+set}" = set; then
35935 echo $ECHO_N "(cached) $ECHO_C" >&6
35936else
35937 cat >conftest.$ac_ext <<_ACEOF
35938/* confdefs.h. */
35939_ACEOF
35940cat confdefs.h >>conftest.$ac_ext
35941cat >>conftest.$ac_ext <<_ACEOF
35942/* end confdefs.h. */
35943
35944#ifdef HAVE_SYS_TYPES_H
35945#include <sys/types.h>
35946#endif
35947#ifdef HAVE_UTMP_H
35948#include <utmp.h>
35949#endif
35950#ifdef HAVE_UTMPX_H
35951#include <utmpx.h>
35952#endif
35953#ifdef HAVE_LASTLOG_H
35954#include <lastlog.h>
35955#endif
35956
35957
35958int
35959main ()
35960{
35961static struct lastlog ac_aggr;
35962if (ac_aggr.ll_line)
35963return 0;
35964 ;
35965 return 0;
35966}
35967_ACEOF
35968rm -f conftest.$ac_objext
35969if { (ac_try="$ac_compile"
35970case "(($ac_try" in
35971 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
35972 *) ac_try_echo=$ac_try;;
35973esac
35974eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
35975 (eval "$ac_compile") 2>conftest.er1
35976 ac_status=$?
35977 grep -v '^ *+' conftest.er1 >conftest.err
35978 rm -f conftest.er1
35979 cat conftest.err >&5
35980 echo "$as_me:$LINENO: \$? = $ac_status" >&5
35981 (exit $ac_status); } && {
35982 test -z "$ac_c_werror_flag" ||
35983 test ! -s conftest.err
35984 } && test -s conftest.$ac_objext; then
35985 ac_cv_member_struct_lastlog_ll_line=yes
35986else
35987 echo "$as_me: failed program was:" >&5
35988sed 's/^/| /' conftest.$ac_ext >&5
35989
35990 cat >conftest.$ac_ext <<_ACEOF
35991/* confdefs.h. */
35992_ACEOF
35993cat confdefs.h >>conftest.$ac_ext
35994cat >>conftest.$ac_ext <<_ACEOF
35995/* end confdefs.h. */
35996
35997#ifdef HAVE_SYS_TYPES_H 18876#ifdef HAVE_SYS_TYPES_H
35998#include <sys/types.h> 18877#include <sys/types.h>
35999#endif 18878#endif
@@ -36007,75 +18886,20 @@ cat >>conftest.$ac_ext <<_ACEOF
36007#include <lastlog.h> 18886#include <lastlog.h>
36008#endif 18887#endif
36009 18888
18889"
18890if test "x$ac_cv_member_struct_lastlog_ll_line" = xyes; then :
36010 18891
36011int
36012main ()
36013{
36014static struct lastlog ac_aggr;
36015if (sizeof ac_aggr.ll_line)
36016return 0;
36017 ;
36018 return 0;
36019}
36020_ACEOF
36021rm -f conftest.$ac_objext
36022if { (ac_try="$ac_compile"
36023case "(($ac_try" in
36024 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
36025 *) ac_try_echo=$ac_try;;
36026esac
36027eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
36028 (eval "$ac_compile") 2>conftest.er1
36029 ac_status=$?
36030 grep -v '^ *+' conftest.er1 >conftest.err
36031 rm -f conftest.er1
36032 cat conftest.err >&5
36033 echo "$as_me:$LINENO: \$? = $ac_status" >&5
36034 (exit $ac_status); } && {
36035 test -z "$ac_c_werror_flag" ||
36036 test ! -s conftest.err
36037 } && test -s conftest.$ac_objext; then
36038 ac_cv_member_struct_lastlog_ll_line=yes
36039else
36040 echo "$as_me: failed program was:" >&5
36041sed 's/^/| /' conftest.$ac_ext >&5
36042
36043 ac_cv_member_struct_lastlog_ll_line=no
36044fi
36045
36046rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
36047fi
36048
36049rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
36050fi
36051{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_lastlog_ll_line" >&5
36052echo "${ECHO_T}$ac_cv_member_struct_lastlog_ll_line" >&6; }
36053if test $ac_cv_member_struct_lastlog_ll_line = yes; then
36054 :
36055else 18892else
36056 18893
36057 if test x$SKIP_DISABLE_LASTLOG_DEFINE != "xyes" ; then 18894 if test x$SKIP_DISABLE_LASTLOG_DEFINE != "xyes" ; then
36058 cat >>confdefs.h <<\_ACEOF 18895 $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
36059#define DISABLE_LASTLOG 1
36060_ACEOF
36061 18896
36062 fi 18897 fi
36063 18898
36064fi 18899fi
36065 18900
36066 18901
36067{ echo "$as_me:$LINENO: checking for struct utmp.ut_line" >&5 18902ac_fn_c_check_member "$LINENO" "struct utmp" "ut_line" "ac_cv_member_struct_utmp_ut_line" "
36068echo $ECHO_N "checking for struct utmp.ut_line... $ECHO_C" >&6; }
36069if test "${ac_cv_member_struct_utmp_ut_line+set}" = set; then
36070 echo $ECHO_N "(cached) $ECHO_C" >&6
36071else
36072 cat >conftest.$ac_ext <<_ACEOF
36073/* confdefs.h. */
36074_ACEOF
36075cat confdefs.h >>conftest.$ac_ext
36076cat >>conftest.$ac_ext <<_ACEOF
36077/* end confdefs.h. */
36078
36079#ifdef HAVE_SYS_TYPES_H 18903#ifdef HAVE_SYS_TYPES_H
36080#include <sys/types.h> 18904#include <sys/types.h>
36081#endif 18905#endif
@@ -36089,113 +18913,14 @@ cat >>conftest.$ac_ext <<_ACEOF
36089#include <lastlog.h> 18913#include <lastlog.h>
36090#endif 18914#endif
36091 18915
18916"
18917if test "x$ac_cv_member_struct_utmp_ut_line" = xyes; then :
36092 18918
36093int
36094main ()
36095{
36096static struct utmp ac_aggr;
36097if (ac_aggr.ut_line)
36098return 0;
36099 ;
36100 return 0;
36101}
36102_ACEOF
36103rm -f conftest.$ac_objext
36104if { (ac_try="$ac_compile"
36105case "(($ac_try" in
36106 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
36107 *) ac_try_echo=$ac_try;;
36108esac
36109eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
36110 (eval "$ac_compile") 2>conftest.er1
36111 ac_status=$?
36112 grep -v '^ *+' conftest.er1 >conftest.err
36113 rm -f conftest.er1
36114 cat conftest.err >&5
36115 echo "$as_me:$LINENO: \$? = $ac_status" >&5
36116 (exit $ac_status); } && {
36117 test -z "$ac_c_werror_flag" ||
36118 test ! -s conftest.err
36119 } && test -s conftest.$ac_objext; then
36120 ac_cv_member_struct_utmp_ut_line=yes
36121else
36122 echo "$as_me: failed program was:" >&5
36123sed 's/^/| /' conftest.$ac_ext >&5
36124
36125 cat >conftest.$ac_ext <<_ACEOF
36126/* confdefs.h. */
36127_ACEOF
36128cat confdefs.h >>conftest.$ac_ext
36129cat >>conftest.$ac_ext <<_ACEOF
36130/* end confdefs.h. */
36131
36132#ifdef HAVE_SYS_TYPES_H
36133#include <sys/types.h>
36134#endif
36135#ifdef HAVE_UTMP_H
36136#include <utmp.h>
36137#endif
36138#ifdef HAVE_UTMPX_H
36139#include <utmpx.h>
36140#endif
36141#ifdef HAVE_LASTLOG_H
36142#include <lastlog.h>
36143#endif
36144
36145
36146int
36147main ()
36148{
36149static struct utmp ac_aggr;
36150if (sizeof ac_aggr.ut_line)
36151return 0;
36152 ;
36153 return 0;
36154}
36155_ACEOF
36156rm -f conftest.$ac_objext
36157if { (ac_try="$ac_compile"
36158case "(($ac_try" in
36159 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
36160 *) ac_try_echo=$ac_try;;
36161esac
36162eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
36163 (eval "$ac_compile") 2>conftest.er1
36164 ac_status=$?
36165 grep -v '^ *+' conftest.er1 >conftest.err
36166 rm -f conftest.er1
36167 cat conftest.err >&5
36168 echo "$as_me:$LINENO: \$? = $ac_status" >&5
36169 (exit $ac_status); } && {
36170 test -z "$ac_c_werror_flag" ||
36171 test ! -s conftest.err
36172 } && test -s conftest.$ac_objext; then
36173 ac_cv_member_struct_utmp_ut_line=yes
36174else
36175 echo "$as_me: failed program was:" >&5
36176sed 's/^/| /' conftest.$ac_ext >&5
36177
36178 ac_cv_member_struct_utmp_ut_line=no
36179fi
36180
36181rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
36182fi
36183
36184rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
36185fi
36186{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_line" >&5
36187echo "${ECHO_T}$ac_cv_member_struct_utmp_ut_line" >&6; }
36188if test $ac_cv_member_struct_utmp_ut_line = yes; then
36189 :
36190else 18919else
36191 18920
36192 cat >>confdefs.h <<\_ACEOF 18921 $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
36193#define DISABLE_UTMP 1
36194_ACEOF
36195 18922
36196 cat >>confdefs.h <<\_ACEOF 18923 $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
36197#define DISABLE_WTMP 1
36198_ACEOF
36199 18924
36200 18925
36201fi 18926fi
@@ -36208,64 +18933,15 @@ if test "x$ac_cv_func_getaddrinfo" != "xyes" ; then
36208else 18933else
36209 TEST_SSH_IPV6=yes 18934 TEST_SSH_IPV6=yes
36210fi 18935fi
36211{ echo "$as_me:$LINENO: checking whether BROKEN_GETADDRINFO is declared" >&5 18936ac_fn_c_check_decl "$LINENO" "BROKEN_GETADDRINFO" "ac_cv_have_decl_BROKEN_GETADDRINFO" "$ac_includes_default"
36212echo $ECHO_N "checking whether BROKEN_GETADDRINFO is declared... $ECHO_C" >&6; } 18937if test "x$ac_cv_have_decl_BROKEN_GETADDRINFO" = xyes; then :
36213if test "${ac_cv_have_decl_BROKEN_GETADDRINFO+set}" = set; then
36214 echo $ECHO_N "(cached) $ECHO_C" >&6
36215else
36216 cat >conftest.$ac_ext <<_ACEOF
36217/* confdefs.h. */
36218_ACEOF
36219cat confdefs.h >>conftest.$ac_ext
36220cat >>conftest.$ac_ext <<_ACEOF
36221/* end confdefs.h. */
36222$ac_includes_default
36223int
36224main ()
36225{
36226#ifndef BROKEN_GETADDRINFO
36227 (void) BROKEN_GETADDRINFO;
36228#endif
36229
36230 ;
36231 return 0;
36232}
36233_ACEOF
36234rm -f conftest.$ac_objext
36235if { (ac_try="$ac_compile"
36236case "(($ac_try" in
36237 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
36238 *) ac_try_echo=$ac_try;;
36239esac
36240eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
36241 (eval "$ac_compile") 2>conftest.er1
36242 ac_status=$?
36243 grep -v '^ *+' conftest.er1 >conftest.err
36244 rm -f conftest.er1
36245 cat conftest.err >&5
36246 echo "$as_me:$LINENO: \$? = $ac_status" >&5
36247 (exit $ac_status); } && {
36248 test -z "$ac_c_werror_flag" ||
36249 test ! -s conftest.err
36250 } && test -s conftest.$ac_objext; then
36251 ac_cv_have_decl_BROKEN_GETADDRINFO=yes
36252else
36253 echo "$as_me: failed program was:" >&5
36254sed 's/^/| /' conftest.$ac_ext >&5
36255
36256 ac_cv_have_decl_BROKEN_GETADDRINFO=no
36257fi
36258
36259rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
36260fi
36261{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_BROKEN_GETADDRINFO" >&5
36262echo "${ECHO_T}$ac_cv_have_decl_BROKEN_GETADDRINFO" >&6; }
36263if test $ac_cv_have_decl_BROKEN_GETADDRINFO = yes; then
36264 TEST_SSH_IPV6=no 18938 TEST_SSH_IPV6=no
36265fi 18939fi
36266 18940
36267TEST_SSH_IPV6=$TEST_SSH_IPV6 18941TEST_SSH_IPV6=$TEST_SSH_IPV6
36268 18942
18943TEST_SSH_UTF8=$TEST_SSH_UTF8
18944
36269TEST_MALLOC_OPTIONS=$TEST_MALLOC_OPTIONS 18945TEST_MALLOC_OPTIONS=$TEST_MALLOC_OPTIONS
36270 18946
36271UNSUPPORTED_ALGORITHMS=$unsupported_algorithms 18947UNSUPPORTED_ALGORITHMS=$unsupported_algorithms
@@ -36301,12 +18977,13 @@ _ACEOF
36301 case $ac_val in #( 18977 case $ac_val in #(
36302 *${as_nl}*) 18978 *${as_nl}*)
36303 case $ac_var in #( 18979 case $ac_var in #(
36304 *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 18980 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
36305echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; 18981$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
36306 esac 18982 esac
36307 case $ac_var in #( 18983 case $ac_var in #(
36308 _ | IFS | as_nl) ;; #( 18984 _ | IFS | as_nl) ;; #(
36309 *) $as_unset $ac_var ;; 18985 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
18986 *) { eval $ac_var=; unset $ac_var;} ;;
36310 esac ;; 18987 esac ;;
36311 esac 18988 esac
36312 done 18989 done
@@ -36314,8 +18991,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
36314 (set) 2>&1 | 18991 (set) 2>&1 |
36315 case $as_nl`(ac_space=' '; set) 2>&1` in #( 18992 case $as_nl`(ac_space=' '; set) 2>&1` in #(
36316 *${as_nl}ac_space=\ *) 18993 *${as_nl}ac_space=\ *)
36317 # `set' does not quote correctly, so add quotes (double-quote 18994 # `set' does not quote correctly, so add quotes: double-quote
36318 # substitution turns \\\\ into \\, and sed turns \\ into \). 18995 # substitution turns \\\\ into \\, and sed turns \\ into \.
36319 sed -n \ 18996 sed -n \
36320 "s/'/'\\\\''/g; 18997 "s/'/'\\\\''/g;
36321 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" 18998 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -36337,13 +19014,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
36337 :end' >>confcache 19014 :end' >>confcache
36338if diff "$cache_file" confcache >/dev/null 2>&1; then :; else 19015if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
36339 if test -w "$cache_file"; then 19016 if test -w "$cache_file"; then
36340 test "x$cache_file" != "x/dev/null" && 19017 if test "x$cache_file" != "x/dev/null"; then
36341 { echo "$as_me:$LINENO: updating cache $cache_file" >&5 19018 { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
36342echo "$as_me: updating cache $cache_file" >&6;} 19019$as_echo "$as_me: updating cache $cache_file" >&6;}
36343 cat confcache >$cache_file 19020 if test ! -f "$cache_file" || test -h "$cache_file"; then
19021 cat confcache >"$cache_file"
19022 else
19023 case $cache_file in #(
19024 */* | ?:*)
19025 mv -f confcache "$cache_file"$$ &&
19026 mv -f "$cache_file"$$ "$cache_file" ;; #(
19027 *)
19028 mv -f confcache "$cache_file" ;;
19029 esac
19030 fi
19031 fi
36344 else 19032 else
36345 { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 19033 { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
36346echo "$as_me: not updating unwritable cache $cache_file" >&6;} 19034$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
36347 fi 19035 fi
36348fi 19036fi
36349rm -f confcache 19037rm -f confcache
@@ -36356,14 +19044,15 @@ DEFS=-DHAVE_CONFIG_H
36356 19044
36357ac_libobjs= 19045ac_libobjs=
36358ac_ltlibobjs= 19046ac_ltlibobjs=
19047U=
36359for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue 19048for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
36360 # 1. Remove the extension, and $U if already installed. 19049 # 1. Remove the extension, and $U if already installed.
36361 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' 19050 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
36362 ac_i=`echo "$ac_i" | sed "$ac_script"` 19051 ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
36363 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR 19052 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
36364 # will be set to the directory where LIBOBJS objects are built. 19053 # will be set to the directory where LIBOBJS objects are built.
36365 ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" 19054 as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
36366 ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' 19055 as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
36367done 19056done
36368LIBOBJS=$ac_libobjs 19057LIBOBJS=$ac_libobjs
36369 19058
@@ -36371,12 +19060,15 @@ LTLIBOBJS=$ac_ltlibobjs
36371 19060
36372 19061
36373 19062
36374: ${CONFIG_STATUS=./config.status} 19063
19064: "${CONFIG_STATUS=./config.status}"
19065ac_write_fail=0
36375ac_clean_files_save=$ac_clean_files 19066ac_clean_files_save=$ac_clean_files
36376ac_clean_files="$ac_clean_files $CONFIG_STATUS" 19067ac_clean_files="$ac_clean_files $CONFIG_STATUS"
36377{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 19068{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
36378echo "$as_me: creating $CONFIG_STATUS" >&6;} 19069$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
36379cat >$CONFIG_STATUS <<_ACEOF 19070as_write_fail=0
19071cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
36380#! $SHELL 19072#! $SHELL
36381# Generated by $as_me. 19073# Generated by $as_me.
36382# Run this file to recreate the current configuration. 19074# Run this file to recreate the current configuration.
@@ -36386,59 +19078,79 @@ cat >$CONFIG_STATUS <<_ACEOF
36386debug=false 19078debug=false
36387ac_cs_recheck=false 19079ac_cs_recheck=false
36388ac_cs_silent=false 19080ac_cs_silent=false
36389SHELL=\${CONFIG_SHELL-$SHELL}
36390_ACEOF
36391 19081
36392cat >>$CONFIG_STATUS <<\_ACEOF 19082SHELL=\${CONFIG_SHELL-$SHELL}
36393## --------------------- ## 19083export SHELL
36394## M4sh Initialization. ## 19084_ASEOF
36395## --------------------- ## 19085cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
19086## -------------------- ##
19087## M4sh Initialization. ##
19088## -------------------- ##
36396 19089
36397# Be more Bourne compatible 19090# Be more Bourne compatible
36398DUALCASE=1; export DUALCASE # for MKS sh 19091DUALCASE=1; export DUALCASE # for MKS sh
36399if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 19092if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
36400 emulate sh 19093 emulate sh
36401 NULLCMD=: 19094 NULLCMD=:
36402 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 19095 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
36403 # is contrary to our usage. Disable this feature. 19096 # is contrary to our usage. Disable this feature.
36404 alias -g '${1+"$@"}'='"$@"' 19097 alias -g '${1+"$@"}'='"$@"'
36405 setopt NO_GLOB_SUBST 19098 setopt NO_GLOB_SUBST
36406else 19099else
36407 case `(set -o) 2>/dev/null` in 19100 case `(set -o) 2>/dev/null` in #(
36408 *posix*) set -o posix ;; 19101 *posix*) :
19102 set -o posix ;; #(
19103 *) :
19104 ;;
36409esac 19105esac
36410
36411fi 19106fi
36412 19107
36413 19108
36414 19109as_nl='
36415 19110'
36416# PATH needs CR 19111export as_nl
36417# Avoid depending upon Character Ranges. 19112# Printing a long string crashes Solaris 7 /usr/bin/printf.
36418as_cr_letters='abcdefghijklmnopqrstuvwxyz' 19113as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
36419as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 19114as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
36420as_cr_Letters=$as_cr_letters$as_cr_LETTERS 19115as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
36421as_cr_digits='0123456789' 19116# Prefer a ksh shell builtin over an external printf program on Solaris,
36422as_cr_alnum=$as_cr_Letters$as_cr_digits 19117# but without wasting forks for bash or zsh.
36423 19118if test -z "$BASH_VERSION$ZSH_VERSION" \
36424# The user is always right. 19119 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
36425if test "${PATH_SEPARATOR+set}" != set; then 19120 as_echo='print -r --'
36426 echo "#! /bin/sh" >conf$$.sh 19121 as_echo_n='print -rn --'
36427 echo "exit 0" >>conf$$.sh 19122elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
36428 chmod +x conf$$.sh 19123 as_echo='printf %s\n'
36429 if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then 19124 as_echo_n='printf %s'
36430 PATH_SEPARATOR=';' 19125else
19126 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
19127 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
19128 as_echo_n='/usr/ucb/echo -n'
36431 else 19129 else
36432 PATH_SEPARATOR=: 19130 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
19131 as_echo_n_body='eval
19132 arg=$1;
19133 case $arg in #(
19134 *"$as_nl"*)
19135 expr "X$arg" : "X\\(.*\\)$as_nl";
19136 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
19137 esac;
19138 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
19139 '
19140 export as_echo_n_body
19141 as_echo_n='sh -c $as_echo_n_body as_echo'
36433 fi 19142 fi
36434 rm -f conf$$.sh 19143 export as_echo_body
19144 as_echo='sh -c $as_echo_body as_echo'
36435fi 19145fi
36436 19146
36437# Support unset when possible. 19147# The user is always right.
36438if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then 19148if test "${PATH_SEPARATOR+set}" != set; then
36439 as_unset=unset 19149 PATH_SEPARATOR=:
36440else 19150 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
36441 as_unset=false 19151 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
19152 PATH_SEPARATOR=';'
19153 }
36442fi 19154fi
36443 19155
36444 19156
@@ -36447,20 +19159,19 @@ fi
36447# there to prevent editors from complaining about space-tab. 19159# there to prevent editors from complaining about space-tab.
36448# (If _AS_PATH_WALK were called with IFS unset, it would disable word 19160# (If _AS_PATH_WALK were called with IFS unset, it would disable word
36449# splitting by setting IFS to empty value.) 19161# splitting by setting IFS to empty value.)
36450as_nl='
36451'
36452IFS=" "" $as_nl" 19162IFS=" "" $as_nl"
36453 19163
36454# Find who we are. Look in the path if we contain no directory separator. 19164# Find who we are. Look in the path if we contain no directory separator.
36455case $0 in 19165as_myself=
19166case $0 in #((
36456 *[\\/]* ) as_myself=$0 ;; 19167 *[\\/]* ) as_myself=$0 ;;
36457 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 19168 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
36458for as_dir in $PATH 19169for as_dir in $PATH
36459do 19170do
36460 IFS=$as_save_IFS 19171 IFS=$as_save_IFS
36461 test -z "$as_dir" && as_dir=. 19172 test -z "$as_dir" && as_dir=.
36462 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 19173 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
36463done 19174 done
36464IFS=$as_save_IFS 19175IFS=$as_save_IFS
36465 19176
36466 ;; 19177 ;;
@@ -36471,32 +19182,111 @@ if test "x$as_myself" = x; then
36471 as_myself=$0 19182 as_myself=$0
36472fi 19183fi
36473if test ! -f "$as_myself"; then 19184if test ! -f "$as_myself"; then
36474 echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 19185 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
36475 { (exit 1); exit 1; } 19186 exit 1
36476fi 19187fi
36477 19188
36478# Work around bugs in pre-3.0 UWIN ksh. 19189# Unset variables that we do not need and which cause bugs (e.g. in
36479for as_var in ENV MAIL MAILPATH 19190# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
36480do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var 19191# suppresses any "Segmentation fault" message there. '((' could
19192# trigger a bug in pdksh 5.2.14.
19193for as_var in BASH_ENV ENV MAIL MAILPATH
19194do eval test x\${$as_var+set} = xset \
19195 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
36481done 19196done
36482PS1='$ ' 19197PS1='$ '
36483PS2='> ' 19198PS2='> '
36484PS4='+ ' 19199PS4='+ '
36485 19200
36486# NLS nuisances. 19201# NLS nuisances.
36487for as_var in \ 19202LC_ALL=C
36488 LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ 19203export LC_ALL
36489 LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ 19204LANGUAGE=C
36490 LC_TELEPHONE LC_TIME 19205export LANGUAGE
36491do 19206
36492 if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then 19207# CDPATH.
36493 eval $as_var=C; export $as_var 19208(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
36494 else 19209
36495 ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var 19210
19211# as_fn_error STATUS ERROR [LINENO LOG_FD]
19212# ----------------------------------------
19213# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
19214# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
19215# script with STATUS, using 1 if that was 0.
19216as_fn_error ()
19217{
19218 as_status=$1; test $as_status -eq 0 && as_status=1
19219 if test "$4"; then
19220 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
19221 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
36496 fi 19222 fi
36497done 19223 $as_echo "$as_me: error: $2" >&2
19224 as_fn_exit $as_status
19225} # as_fn_error
19226
19227
19228# as_fn_set_status STATUS
19229# -----------------------
19230# Set $? to STATUS, without forking.
19231as_fn_set_status ()
19232{
19233 return $1
19234} # as_fn_set_status
19235
19236# as_fn_exit STATUS
19237# -----------------
19238# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
19239as_fn_exit ()
19240{
19241 set +e
19242 as_fn_set_status $1
19243 exit $1
19244} # as_fn_exit
19245
19246# as_fn_unset VAR
19247# ---------------
19248# Portably unset VAR.
19249as_fn_unset ()
19250{
19251 { eval $1=; unset $1;}
19252}
19253as_unset=as_fn_unset
19254# as_fn_append VAR VALUE
19255# ----------------------
19256# Append the text in VALUE to the end of the definition contained in VAR. Take
19257# advantage of any shell optimizations that allow amortized linear growth over
19258# repeated appends, instead of the typical quadratic growth present in naive
19259# implementations.
19260if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
19261 eval 'as_fn_append ()
19262 {
19263 eval $1+=\$2
19264 }'
19265else
19266 as_fn_append ()
19267 {
19268 eval $1=\$$1\$2
19269 }
19270fi # as_fn_append
19271
19272# as_fn_arith ARG...
19273# ------------------
19274# Perform arithmetic evaluation on the ARGs, and store the result in the
19275# global $as_val. Take advantage of shells that can avoid forks. The arguments
19276# must be portable across $(()) and expr.
19277if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
19278 eval 'as_fn_arith ()
19279 {
19280 as_val=$(( $* ))
19281 }'
19282else
19283 as_fn_arith ()
19284 {
19285 as_val=`expr "$@" || test $? -eq 1`
19286 }
19287fi # as_fn_arith
19288
36498 19289
36499# Required to use basename.
36500if expr a : '\(a\)' >/dev/null 2>&1 && 19290if expr a : '\(a\)' >/dev/null 2>&1 &&
36501 test "X`expr 00001 : '.*\(...\)'`" = X001; then 19291 test "X`expr 00001 : '.*\(...\)'`" = X001; then
36502 as_expr=expr 19292 as_expr=expr
@@ -36510,13 +19300,17 @@ else
36510 as_basename=false 19300 as_basename=false
36511fi 19301fi
36512 19302
19303if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
19304 as_dirname=dirname
19305else
19306 as_dirname=false
19307fi
36513 19308
36514# Name of the executable.
36515as_me=`$as_basename -- "$0" || 19309as_me=`$as_basename -- "$0" ||
36516$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 19310$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
36517 X"$0" : 'X\(//\)$' \| \ 19311 X"$0" : 'X\(//\)$' \| \
36518 X"$0" : 'X\(/\)' \| . 2>/dev/null || 19312 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
36519echo X/"$0" | 19313$as_echo X/"$0" |
36520 sed '/^.*\/\([^/][^/]*\)\/*$/{ 19314 sed '/^.*\/\([^/][^/]*\)\/*$/{
36521 s//\1/ 19315 s//\1/
36522 q 19316 q
@@ -36531,131 +19325,118 @@ echo X/"$0" |
36531 } 19325 }
36532 s/.*/./; q'` 19326 s/.*/./; q'`
36533 19327
36534# CDPATH. 19328# Avoid depending upon Character Ranges.
36535$as_unset CDPATH 19329as_cr_letters='abcdefghijklmnopqrstuvwxyz'
36536 19330as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
36537 19331as_cr_Letters=$as_cr_letters$as_cr_LETTERS
36538 19332as_cr_digits='0123456789'
36539 as_lineno_1=$LINENO 19333as_cr_alnum=$as_cr_Letters$as_cr_digits
36540 as_lineno_2=$LINENO
36541 test "x$as_lineno_1" != "x$as_lineno_2" &&
36542 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
36543
36544 # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
36545 # uniformly replaced by the line number. The first 'sed' inserts a
36546 # line-number line after each line using $LINENO; the second 'sed'
36547 # does the real work. The second script uses 'N' to pair each
36548 # line-number line with the line containing $LINENO, and appends
36549 # trailing '-' during substitution so that $LINENO is not a special
36550 # case at line end.
36551 # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
36552 # scripts with optimization help from Paolo Bonzini. Blame Lee
36553 # E. McMahon (1931-1989) for sed's syntax. :-)
36554 sed -n '
36555 p
36556 /[$]LINENO/=
36557 ' <$as_myself |
36558 sed '
36559 s/[$]LINENO.*/&-/
36560 t lineno
36561 b
36562 :lineno
36563 N
36564 :loop
36565 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
36566 t loop
36567 s/-\n.*//
36568 ' >$as_me.lineno &&
36569 chmod +x "$as_me.lineno" ||
36570 { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
36571 { (exit 1); exit 1; }; }
36572
36573 # Don't try to exec as it changes $[0], causing all sort of problems
36574 # (the dirname of $[0] is not the place where we might find the
36575 # original and so on. Autoconf is especially sensitive to this).
36576 . "./$as_me.lineno"
36577 # Exit status is that of the last command.
36578 exit
36579}
36580
36581
36582if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
36583 as_dirname=dirname
36584else
36585 as_dirname=false
36586fi
36587 19334
36588ECHO_C= ECHO_N= ECHO_T= 19335ECHO_C= ECHO_N= ECHO_T=
36589case `echo -n x` in 19336case `echo -n x` in #(((((
36590-n*) 19337-n*)
36591 case `echo 'x\c'` in 19338 case `echo 'xy\c'` in
36592 *c*) ECHO_T=' ';; # ECHO_T is single tab character. 19339 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
36593 *) ECHO_C='\c';; 19340 xy) ECHO_C='\c';;
19341 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
19342 ECHO_T=' ';;
36594 esac;; 19343 esac;;
36595*) 19344*)
36596 ECHO_N='-n';; 19345 ECHO_N='-n';;
36597esac 19346esac
36598 19347
36599if expr a : '\(a\)' >/dev/null 2>&1 &&
36600 test "X`expr 00001 : '.*\(...\)'`" = X001; then
36601 as_expr=expr
36602else
36603 as_expr=false
36604fi
36605
36606rm -f conf$$ conf$$.exe conf$$.file 19348rm -f conf$$ conf$$.exe conf$$.file
36607if test -d conf$$.dir; then 19349if test -d conf$$.dir; then
36608 rm -f conf$$.dir/conf$$.file 19350 rm -f conf$$.dir/conf$$.file
36609else 19351else
36610 rm -f conf$$.dir 19352 rm -f conf$$.dir
36611 mkdir conf$$.dir 19353 mkdir conf$$.dir 2>/dev/null
36612fi 19354fi
36613echo >conf$$.file 19355if (echo >conf$$.file) 2>/dev/null; then
36614if ln -s conf$$.file conf$$ 2>/dev/null; then 19356 if ln -s conf$$.file conf$$ 2>/dev/null; then
36615 as_ln_s='ln -s' 19357 as_ln_s='ln -s'
36616 # ... but there are two gotchas: 19358 # ... but there are two gotchas:
36617 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 19359 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
36618 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 19360 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
36619 # In both cases, we have to default to `cp -p'. 19361 # In both cases, we have to default to `cp -pR'.
36620 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 19362 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
36621 as_ln_s='cp -p' 19363 as_ln_s='cp -pR'
36622elif ln conf$$.file conf$$ 2>/dev/null; then 19364 elif ln conf$$.file conf$$ 2>/dev/null; then
36623 as_ln_s=ln 19365 as_ln_s=ln
36624else 19366 else
36625 as_ln_s='cp -p' 19367 as_ln_s='cp -pR'
19368 fi
19369else
19370 as_ln_s='cp -pR'
36626fi 19371fi
36627rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file 19372rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
36628rmdir conf$$.dir 2>/dev/null 19373rmdir conf$$.dir 2>/dev/null
36629 19374
19375
19376# as_fn_mkdir_p
19377# -------------
19378# Create "$as_dir" as a directory, including parents if necessary.
19379as_fn_mkdir_p ()
19380{
19381
19382 case $as_dir in #(
19383 -*) as_dir=./$as_dir;;
19384 esac
19385 test -d "$as_dir" || eval $as_mkdir_p || {
19386 as_dirs=
19387 while :; do
19388 case $as_dir in #(
19389 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
19390 *) as_qdir=$as_dir;;
19391 esac
19392 as_dirs="'$as_qdir' $as_dirs"
19393 as_dir=`$as_dirname -- "$as_dir" ||
19394$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
19395 X"$as_dir" : 'X\(//\)[^/]' \| \
19396 X"$as_dir" : 'X\(//\)$' \| \
19397 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
19398$as_echo X"$as_dir" |
19399 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
19400 s//\1/
19401 q
19402 }
19403 /^X\(\/\/\)[^/].*/{
19404 s//\1/
19405 q
19406 }
19407 /^X\(\/\/\)$/{
19408 s//\1/
19409 q
19410 }
19411 /^X\(\/\).*/{
19412 s//\1/
19413 q
19414 }
19415 s/.*/./; q'`
19416 test -d "$as_dir" && break
19417 done
19418 test -z "$as_dirs" || eval "mkdir $as_dirs"
19419 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
19420
19421
19422} # as_fn_mkdir_p
36630if mkdir -p . 2>/dev/null; then 19423if mkdir -p . 2>/dev/null; then
36631 as_mkdir_p=: 19424 as_mkdir_p='mkdir -p "$as_dir"'
36632else 19425else
36633 test -d ./-p && rmdir ./-p 19426 test -d ./-p && rmdir ./-p
36634 as_mkdir_p=false 19427 as_mkdir_p=false
36635fi 19428fi
36636 19429
36637if test -x / >/dev/null 2>&1; then 19430
36638 as_test_x='test -x' 19431# as_fn_executable_p FILE
36639else 19432# -----------------------
36640 if ls -dL / >/dev/null 2>&1; then 19433# Test if FILE is an executable regular file.
36641 as_ls_L_option=L 19434as_fn_executable_p ()
36642 else 19435{
36643 as_ls_L_option= 19436 test -f "$1" && test -x "$1"
36644 fi 19437} # as_fn_executable_p
36645 as_test_x=' 19438as_test_x='test -x'
36646 eval sh -c '\'' 19439as_executable_p=as_fn_executable_p
36647 if test -d "$1"; then
36648 test -d "$1/.";
36649 else
36650 case $1 in
36651 -*)set "./$1";;
36652 esac;
36653 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
36654 ???[sx]*):;;*)false;;esac;fi
36655 '\'' sh
36656 '
36657fi
36658as_executable_p=$as_test_x
36659 19440
36660# Sed expression to map a string onto a valid CPP name. 19441# Sed expression to map a string onto a valid CPP name.
36661as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" 19442as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -36665,13 +19446,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
36665 19446
36666 19447
36667exec 6>&1 19448exec 6>&1
19449## ----------------------------------- ##
19450## Main body of $CONFIG_STATUS script. ##
19451## ----------------------------------- ##
19452_ASEOF
19453test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
36668 19454
36669# Save the log message, to keep $[0] and so on meaningful, and to 19455cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
19456# Save the log message, to keep $0 and so on meaningful, and to
36670# report actual input values of CONFIG_FILES etc. instead of their 19457# report actual input values of CONFIG_FILES etc. instead of their
36671# values after options handling. 19458# values after options handling.
36672ac_log=" 19459ac_log="
36673This file was extended by OpenSSH $as_me Portable, which was 19460This file was extended by OpenSSH $as_me Portable, which was
36674generated by GNU Autoconf 2.61. Invocation command line was 19461generated by GNU Autoconf 2.69. Invocation command line was
36675 19462
36676 CONFIG_FILES = $CONFIG_FILES 19463 CONFIG_FILES = $CONFIG_FILES
36677 CONFIG_HEADERS = $CONFIG_HEADERS 19464 CONFIG_HEADERS = $CONFIG_HEADERS
@@ -36684,29 +19471,41 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
36684 19471
36685_ACEOF 19472_ACEOF
36686 19473
36687cat >>$CONFIG_STATUS <<_ACEOF 19474case $ac_config_files in *"
19475"*) set x $ac_config_files; shift; ac_config_files=$*;;
19476esac
19477
19478case $ac_config_headers in *"
19479"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
19480esac
19481
19482
19483cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
36688# Files that config.status was made for. 19484# Files that config.status was made for.
36689config_files="$ac_config_files" 19485config_files="$ac_config_files"
36690config_headers="$ac_config_headers" 19486config_headers="$ac_config_headers"
36691 19487
36692_ACEOF 19488_ACEOF
36693 19489
36694cat >>$CONFIG_STATUS <<\_ACEOF 19490cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
36695ac_cs_usage="\ 19491ac_cs_usage="\
36696\`$as_me' instantiates files from templates according to the 19492\`$as_me' instantiates files and other configuration actions
36697current configuration. 19493from templates according to the current configuration. Unless the files
19494and actions are specified as TAGs, all are instantiated by default.
36698 19495
36699Usage: $0 [OPTIONS] [FILE]... 19496Usage: $0 [OPTION]... [TAG]...
36700 19497
36701 -h, --help print this help, then exit 19498 -h, --help print this help, then exit
36702 -V, --version print version number and configuration settings, then exit 19499 -V, --version print version number and configuration settings, then exit
36703 -q, --quiet do not print progress messages 19500 --config print configuration, then exit
19501 -q, --quiet, --silent
19502 do not print progress messages
36704 -d, --debug don't remove temporary files 19503 -d, --debug don't remove temporary files
36705 --recheck update $as_me by reconfiguring in the same conditions 19504 --recheck update $as_me by reconfiguring in the same conditions
36706 --file=FILE[:TEMPLATE] 19505 --file=FILE[:TEMPLATE]
36707 instantiate the configuration file FILE 19506 instantiate the configuration file FILE
36708 --header=FILE[:TEMPLATE] 19507 --header=FILE[:TEMPLATE]
36709 instantiate the configuration header FILE 19508 instantiate the configuration header FILE
36710 19509
36711Configuration files: 19510Configuration files:
36712$config_files 19511$config_files
@@ -36714,36 +19513,43 @@ $config_files
36714Configuration headers: 19513Configuration headers:
36715$config_headers 19514$config_headers
36716 19515
36717Report bugs to <bug-autoconf@gnu.org>." 19516Report bugs to <openssh-unix-dev@mindrot.org>."
36718 19517
36719_ACEOF 19518_ACEOF
36720cat >>$CONFIG_STATUS <<_ACEOF 19519cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
19520ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
36721ac_cs_version="\\ 19521ac_cs_version="\\
36722OpenSSH config.status Portable 19522OpenSSH config.status Portable
36723configured by $0, generated by GNU Autoconf 2.61, 19523configured by $0, generated by GNU Autoconf 2.69,
36724 with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" 19524 with options \\"\$ac_cs_config\\"
36725 19525
36726Copyright (C) 2006 Free Software Foundation, Inc. 19526Copyright (C) 2012 Free Software Foundation, Inc.
36727This config.status script is free software; the Free Software Foundation 19527This config.status script is free software; the Free Software Foundation
36728gives unlimited permission to copy, distribute and modify it." 19528gives unlimited permission to copy, distribute and modify it."
36729 19529
36730ac_pwd='$ac_pwd' 19530ac_pwd='$ac_pwd'
36731srcdir='$srcdir' 19531srcdir='$srcdir'
36732INSTALL='$INSTALL' 19532INSTALL='$INSTALL'
19533AWK='$AWK'
19534test -n "\$AWK" || AWK=awk
36733_ACEOF 19535_ACEOF
36734 19536
36735cat >>$CONFIG_STATUS <<\_ACEOF 19537cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
36736# If no file are specified by the user, then we need to provide default 19538# The default lists apply if the user does not specify any file.
36737# value. By we need to know if files were specified by the user.
36738ac_need_defaults=: 19539ac_need_defaults=:
36739while test $# != 0 19540while test $# != 0
36740do 19541do
36741 case $1 in 19542 case $1 in
36742 --*=*) 19543 --*=?*)
36743 ac_option=`expr "X$1" : 'X\([^=]*\)='` 19544 ac_option=`expr "X$1" : 'X\([^=]*\)='`
36744 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` 19545 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
36745 ac_shift=: 19546 ac_shift=:
36746 ;; 19547 ;;
19548 --*=)
19549 ac_option=`expr "X$1" : 'X\([^=]*\)='`
19550 ac_optarg=
19551 ac_shift=:
19552 ;;
36747 *) 19553 *)
36748 ac_option=$1 19554 ac_option=$1
36749 ac_optarg=$2 19555 ac_optarg=$2
@@ -36756,34 +19562,41 @@ do
36756 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) 19562 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
36757 ac_cs_recheck=: ;; 19563 ac_cs_recheck=: ;;
36758 --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) 19564 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
36759 echo "$ac_cs_version"; exit ;; 19565 $as_echo "$ac_cs_version"; exit ;;
19566 --config | --confi | --conf | --con | --co | --c )
19567 $as_echo "$ac_cs_config"; exit ;;
36760 --debug | --debu | --deb | --de | --d | -d ) 19568 --debug | --debu | --deb | --de | --d | -d )
36761 debug=: ;; 19569 debug=: ;;
36762 --file | --fil | --fi | --f ) 19570 --file | --fil | --fi | --f )
36763 $ac_shift 19571 $ac_shift
36764 CONFIG_FILES="$CONFIG_FILES $ac_optarg" 19572 case $ac_optarg in
19573 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
19574 '') as_fn_error $? "missing file argument" ;;
19575 esac
19576 as_fn_append CONFIG_FILES " '$ac_optarg'"
36765 ac_need_defaults=false;; 19577 ac_need_defaults=false;;
36766 --header | --heade | --head | --hea ) 19578 --header | --heade | --head | --hea )
36767 $ac_shift 19579 $ac_shift
36768 CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" 19580 case $ac_optarg in
19581 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
19582 esac
19583 as_fn_append CONFIG_HEADERS " '$ac_optarg'"
36769 ac_need_defaults=false;; 19584 ac_need_defaults=false;;
36770 --he | --h) 19585 --he | --h)
36771 # Conflict between --help and --header 19586 # Conflict between --help and --header
36772 { echo "$as_me: error: ambiguous option: $1 19587 as_fn_error $? "ambiguous option: \`$1'
36773Try \`$0 --help' for more information." >&2 19588Try \`$0 --help' for more information.";;
36774 { (exit 1); exit 1; }; };;
36775 --help | --hel | -h ) 19589 --help | --hel | -h )
36776 echo "$ac_cs_usage"; exit ;; 19590 $as_echo "$ac_cs_usage"; exit ;;
36777 -q | -quiet | --quiet | --quie | --qui | --qu | --q \ 19591 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
36778 | -silent | --silent | --silen | --sile | --sil | --si | --s) 19592 | -silent | --silent | --silen | --sile | --sil | --si | --s)
36779 ac_cs_silent=: ;; 19593 ac_cs_silent=: ;;
36780 19594
36781 # This is an error. 19595 # This is an error.
36782 -*) { echo "$as_me: error: unrecognized option: $1 19596 -*) as_fn_error $? "unrecognized option: \`$1'
36783Try \`$0 --help' for more information." >&2 19597Try \`$0 --help' for more information." ;;
36784 { (exit 1); exit 1; }; } ;;
36785 19598
36786 *) ac_config_targets="$ac_config_targets $1" 19599 *) as_fn_append ac_config_targets " $1"
36787 ac_need_defaults=false ;; 19600 ac_need_defaults=false ;;
36788 19601
36789 esac 19602 esac
@@ -36798,30 +19611,32 @@ if $ac_cs_silent; then
36798fi 19611fi
36799 19612
36800_ACEOF 19613_ACEOF
36801cat >>$CONFIG_STATUS <<_ACEOF 19614cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
36802if \$ac_cs_recheck; then 19615if \$ac_cs_recheck; then
36803 echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 19616 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
36804 CONFIG_SHELL=$SHELL 19617 shift
19618 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
19619 CONFIG_SHELL='$SHELL'
36805 export CONFIG_SHELL 19620 export CONFIG_SHELL
36806 exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion 19621 exec "\$@"
36807fi 19622fi
36808 19623
36809_ACEOF 19624_ACEOF
36810cat >>$CONFIG_STATUS <<\_ACEOF 19625cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
36811exec 5>>config.log 19626exec 5>>config.log
36812{ 19627{
36813 echo 19628 echo
36814 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 19629 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
36815## Running $as_me. ## 19630## Running $as_me. ##
36816_ASBOX 19631_ASBOX
36817 echo "$ac_log" 19632 $as_echo "$ac_log"
36818} >&5 19633} >&5
36819 19634
36820_ACEOF 19635_ACEOF
36821cat >>$CONFIG_STATUS <<_ACEOF 19636cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
36822_ACEOF 19637_ACEOF
36823 19638
36824cat >>$CONFIG_STATUS <<\_ACEOF 19639cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
36825 19640
36826# Handling of arguments. 19641# Handling of arguments.
36827for ac_config_target in $ac_config_targets 19642for ac_config_target in $ac_config_targets
@@ -36836,9 +19651,7 @@ do
36836 "openbsd-compat/regress/Makefile") CONFIG_FILES="$CONFIG_FILES openbsd-compat/regress/Makefile" ;; 19651 "openbsd-compat/regress/Makefile") CONFIG_FILES="$CONFIG_FILES openbsd-compat/regress/Makefile" ;;
36837 "survey.sh") CONFIG_FILES="$CONFIG_FILES survey.sh" ;; 19652 "survey.sh") CONFIG_FILES="$CONFIG_FILES survey.sh" ;;
36838 19653
36839 *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 19654 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
36840echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
36841 { (exit 1); exit 1; }; };;
36842 esac 19655 esac
36843done 19656done
36844 19657
@@ -36860,256 +19673,302 @@ fi
36860# after its creation but before its name has been assigned to `$tmp'. 19673# after its creation but before its name has been assigned to `$tmp'.
36861$debug || 19674$debug ||
36862{ 19675{
36863 tmp= 19676 tmp= ac_tmp=
36864 trap 'exit_status=$? 19677 trap 'exit_status=$?
36865 { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status 19678 : "${ac_tmp:=$tmp}"
19679 { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
36866' 0 19680' 0
36867 trap '{ (exit 1); exit 1; }' 1 2 13 15 19681 trap 'as_fn_exit 1' 1 2 13 15
36868} 19682}
36869# Create a (secure) tmp directory for tmp files. 19683# Create a (secure) tmp directory for tmp files.
36870 19684
36871{ 19685{
36872 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && 19686 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
36873 test -n "$tmp" && test -d "$tmp" 19687 test -d "$tmp"
36874} || 19688} ||
36875{ 19689{
36876 tmp=./conf$$-$RANDOM 19690 tmp=./conf$$-$RANDOM
36877 (umask 077 && mkdir "$tmp") 19691 (umask 077 && mkdir "$tmp")
36878} || 19692} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
36879{ 19693ac_tmp=$tmp
36880 echo "$me: cannot create a temporary directory in ." >&2
36881 { (exit 1); exit 1; }
36882}
36883 19694
36884# 19695# Set up the scripts for CONFIG_FILES section.
36885# Set up the sed scripts for CONFIG_FILES section. 19696# No need to generate them if there are no CONFIG_FILES.
36886# 19697# This happens for instance with `./config.status config.h'.
36887
36888# No need to generate the scripts if there are no CONFIG_FILES.
36889# This happens for instance when ./config.status config.h
36890if test -n "$CONFIG_FILES"; then 19698if test -n "$CONFIG_FILES"; then
36891 19699
36892_ACEOF
36893 19700
19701ac_cr=`echo X | tr X '\015'`
19702# On cygwin, bash can eat \r inside `` if the user requested igncr.
19703# But we know of no other shell where ac_cr would be empty at this
19704# point, so we can use a bashism as a fallback.
19705if test "x$ac_cr" = x; then
19706 eval ac_cr=\$\'\\r\'
19707fi
19708ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
19709if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
19710 ac_cs_awk_cr='\\r'
19711else
19712 ac_cs_awk_cr=$ac_cr
19713fi
19714
19715echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
19716_ACEOF
36894 19717
36895 19718
19719{
19720 echo "cat >conf$$subs.awk <<_ACEOF" &&
19721 echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
19722 echo "_ACEOF"
19723} >conf$$subs.sh ||
19724 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
19725ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
36896ac_delim='%!_!# ' 19726ac_delim='%!_!# '
36897for ac_last_try in false false false false false :; do 19727for ac_last_try in false false false false false :; do
36898 cat >conf$$subs.sed <<_ACEOF 19728 . ./conf$$subs.sh ||
36899SHELL!$SHELL$ac_delim 19729 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
36900PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim 19730
36901PACKAGE_NAME!$PACKAGE_NAME$ac_delim 19731 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
36902PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim 19732 if test $ac_delim_n = $ac_delim_num; then
36903PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
36904PACKAGE_STRING!$PACKAGE_STRING$ac_delim
36905PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
36906exec_prefix!$exec_prefix$ac_delim
36907prefix!$prefix$ac_delim
36908program_transform_name!$program_transform_name$ac_delim
36909bindir!$bindir$ac_delim
36910sbindir!$sbindir$ac_delim
36911libexecdir!$libexecdir$ac_delim
36912datarootdir!$datarootdir$ac_delim
36913datadir!$datadir$ac_delim
36914sysconfdir!$sysconfdir$ac_delim
36915sharedstatedir!$sharedstatedir$ac_delim
36916localstatedir!$localstatedir$ac_delim
36917includedir!$includedir$ac_delim
36918oldincludedir!$oldincludedir$ac_delim
36919docdir!$docdir$ac_delim
36920infodir!$infodir$ac_delim
36921htmldir!$htmldir$ac_delim
36922dvidir!$dvidir$ac_delim
36923pdfdir!$pdfdir$ac_delim
36924psdir!$psdir$ac_delim
36925libdir!$libdir$ac_delim
36926localedir!$localedir$ac_delim
36927mandir!$mandir$ac_delim
36928DEFS!$DEFS$ac_delim
36929ECHO_C!$ECHO_C$ac_delim
36930ECHO_N!$ECHO_N$ac_delim
36931ECHO_T!$ECHO_T$ac_delim
36932LIBS!$LIBS$ac_delim
36933build_alias!$build_alias$ac_delim
36934host_alias!$host_alias$ac_delim
36935target_alias!$target_alias$ac_delim
36936CC!$CC$ac_delim
36937CFLAGS!$CFLAGS$ac_delim
36938LDFLAGS!$LDFLAGS$ac_delim
36939CPPFLAGS!$CPPFLAGS$ac_delim
36940ac_ct_CC!$ac_ct_CC$ac_delim
36941EXEEXT!$EXEEXT$ac_delim
36942OBJEXT!$OBJEXT$ac_delim
36943build!$build$ac_delim
36944build_cpu!$build_cpu$ac_delim
36945build_vendor!$build_vendor$ac_delim
36946build_os!$build_os$ac_delim
36947host!$host$ac_delim
36948host_cpu!$host_cpu$ac_delim
36949host_vendor!$host_vendor$ac_delim
36950host_os!$host_os$ac_delim
36951CPP!$CPP$ac_delim
36952GREP!$GREP$ac_delim
36953EGREP!$EGREP$ac_delim
36954AWK!$AWK$ac_delim
36955RANLIB!$RANLIB$ac_delim
36956INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
36957INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
36958INSTALL_DATA!$INSTALL_DATA$ac_delim
36959AR!$AR$ac_delim
36960ac_ct_AR!$ac_ct_AR$ac_delim
36961CAT!$CAT$ac_delim
36962KILL!$KILL$ac_delim
36963PERL!$PERL$ac_delim
36964SED!$SED$ac_delim
36965ENT!$ENT$ac_delim
36966TEST_MINUS_S_SH!$TEST_MINUS_S_SH$ac_delim
36967SH!$SH$ac_delim
36968GROFF!$GROFF$ac_delim
36969NROFF!$NROFF$ac_delim
36970MANDOC!$MANDOC$ac_delim
36971TEST_SHELL!$TEST_SHELL$ac_delim
36972MANFMT!$MANFMT$ac_delim
36973PATH_GROUPADD_PROG!$PATH_GROUPADD_PROG$ac_delim
36974PATH_USERADD_PROG!$PATH_USERADD_PROG$ac_delim
36975MAKE_PACKAGE_SUPPORTED!$MAKE_PACKAGE_SUPPORTED$ac_delim
36976STARTUP_SCRIPT_SHELL!$STARTUP_SCRIPT_SHELL$ac_delim
36977LOGIN_PROGRAM_FALLBACK!$LOGIN_PROGRAM_FALLBACK$ac_delim
36978PATH_PASSWD_PROG!$PATH_PASSWD_PROG$ac_delim
36979LD!$LD$ac_delim
36980PKGCONFIG!$PKGCONFIG$ac_delim
36981LIBEDIT!$LIBEDIT$ac_delim
36982TEST_SSH_ECC!$TEST_SSH_ECC$ac_delim
36983COMMENT_OUT_ECC!$COMMENT_OUT_ECC$ac_delim
36984SSH_PRIVSEP_USER!$SSH_PRIVSEP_USER$ac_delim
36985SSHLIBS!$SSHLIBS$ac_delim
36986SSHDLIBS!$SSHDLIBS$ac_delim
36987KRB5CONF!$KRB5CONF$ac_delim
36988GSSLIBS!$GSSLIBS$ac_delim
36989K5LIBS!$K5LIBS$ac_delim
36990PRIVSEP_PATH!$PRIVSEP_PATH$ac_delim
36991xauth_path!$xauth_path$ac_delim
36992STRIP_OPT!$STRIP_OPT$ac_delim
36993XAUTH_PATH!$XAUTH_PATH$ac_delim
36994MANTYPE!$MANTYPE$ac_delim
36995mansubdir!$mansubdir$ac_delim
36996_ACEOF
36997
36998 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
36999 break 19733 break
37000 elif $ac_last_try; then 19734 elif $ac_last_try; then
37001 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 19735 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
37002echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
37003 { (exit 1); exit 1; }; }
37004 else 19736 else
37005 ac_delim="$ac_delim!$ac_delim _$ac_delim!! " 19737 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
37006 fi 19738 fi
37007done 19739done
37008 19740rm -f conf$$subs.sh
37009ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` 19741
37010if test -n "$ac_eof"; then 19742cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
37011 ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` 19743cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
37012 ac_eof=`expr $ac_eof + 1` 19744_ACEOF
19745sed -n '
19746h
19747s/^/S["/; s/!.*/"]=/
19748p
19749g
19750s/^[^!]*!//
19751:repl
19752t repl
19753s/'"$ac_delim"'$//
19754t delim
19755:nl
19756h
19757s/\(.\{148\}\)..*/\1/
19758t more1
19759s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
19760p
19761n
19762b repl
19763:more1
19764s/["\\]/\\&/g; s/^/"/; s/$/"\\/
19765p
19766g
19767s/.\{148\}//
19768t nl
19769:delim
19770h
19771s/\(.\{148\}\)..*/\1/
19772t more2
19773s/["\\]/\\&/g; s/^/"/; s/$/"/
19774p
19775b
19776:more2
19777s/["\\]/\\&/g; s/^/"/; s/$/"\\/
19778p
19779g
19780s/.\{148\}//
19781t delim
19782' <conf$$subs.awk | sed '
19783/^[^""]/{
19784 N
19785 s/\n//
19786}
19787' >>$CONFIG_STATUS || ac_write_fail=1
19788rm -f conf$$subs.awk
19789cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
19790_ACAWK
19791cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
19792 for (key in S) S_is_set[key] = 1
19793 FS = ""
19794
19795}
19796{
19797 line = $ 0
19798 nfields = split(line, field, "@")
19799 substed = 0
19800 len = length(field[1])
19801 for (i = 2; i < nfields; i++) {
19802 key = field[i]
19803 keylen = length(key)
19804 if (S_is_set[key]) {
19805 value = S[key]
19806 line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
19807 len += length(value) + length(field[++i])
19808 substed = 1
19809 } else
19810 len += 1 + keylen
19811 }
19812
19813 print line
19814}
19815
19816_ACAWK
19817_ACEOF
19818cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
19819if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
19820 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
19821else
19822 cat
19823fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
19824 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
19825_ACEOF
19826
19827# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
19828# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
19829# trailing colons and then remove the whole line if VPATH becomes empty
19830# (actually we leave an empty line to preserve line numbers).
19831if test "x$srcdir" = x.; then
19832 ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
19833h
19834s///
19835s/^/:/
19836s/[ ]*$/:/
19837s/:\$(srcdir):/:/g
19838s/:\${srcdir}:/:/g
19839s/:@srcdir@:/:/g
19840s/^:*//
19841s/:*$//
19842x
19843s/\(=[ ]*\).*/\1/
19844G
19845s/\n//
19846s/^[^=]*=[ ]*$//
19847}'
37013fi 19848fi
37014 19849
37015cat >>$CONFIG_STATUS <<_ACEOF 19850cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
37016cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof 19851fi # test -n "$CONFIG_FILES"
37017/@[a-zA-Z_][a-zA-Z_0-9]*@/!b 19852
37018_ACEOF 19853# Set up the scripts for CONFIG_HEADERS section.
37019sed ' 19854# No need to generate them if there are no CONFIG_HEADERS.
37020s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g 19855# This happens for instance with `./config.status Makefile'.
37021s/^/s,@/; s/!/@,|#_!!_#|/ 19856if test -n "$CONFIG_HEADERS"; then
37022:n 19857cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
37023t n 19858BEGIN {
37024s/'"$ac_delim"'$/,g/; t
37025s/$/\\/; p
37026N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
37027' >>$CONFIG_STATUS <conf$$subs.sed
37028rm -f conf$$subs.sed
37029cat >>$CONFIG_STATUS <<_ACEOF
37030CEOF$ac_eof
37031_ACEOF 19859_ACEOF
37032 19860
19861# Transform confdefs.h into an awk script `defines.awk', embedded as
19862# here-document in config.status, that substitutes the proper values into
19863# config.h.in to produce config.h.
37033 19864
19865# Create a delimiter string that does not exist in confdefs.h, to ease
19866# handling of long lines.
37034ac_delim='%!_!# ' 19867ac_delim='%!_!# '
37035for ac_last_try in false false false false false :; do 19868for ac_last_try in false false :; do
37036 cat >conf$$subs.sed <<_ACEOF 19869 ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
37037user_path!$user_path$ac_delim 19870 if test -z "$ac_tt"; then
37038piddir!$piddir$ac_delim
37039TEST_SSH_IPV6!$TEST_SSH_IPV6$ac_delim
37040TEST_MALLOC_OPTIONS!$TEST_MALLOC_OPTIONS$ac_delim
37041UNSUPPORTED_ALGORITHMS!$UNSUPPORTED_ALGORITHMS$ac_delim
37042LIBOBJS!$LIBOBJS$ac_delim
37043LTLIBOBJS!$LTLIBOBJS$ac_delim
37044_ACEOF
37045
37046 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
37047 break 19871 break
37048 elif $ac_last_try; then 19872 elif $ac_last_try; then
37049 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 19873 as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
37050echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
37051 { (exit 1); exit 1; }; }
37052 else 19874 else
37053 ac_delim="$ac_delim!$ac_delim _$ac_delim!! " 19875 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
37054 fi 19876 fi
37055done 19877done
37056 19878
37057ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` 19879# For the awk script, D is an array of macro values keyed by name,
37058if test -n "$ac_eof"; then 19880# likewise P contains macro parameters if any. Preserve backslash
37059 ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` 19881# newline sequences.
37060 ac_eof=`expr $ac_eof + 1`
37061fi
37062 19882
37063cat >>$CONFIG_STATUS <<_ACEOF 19883ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
37064cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof 19884sed -n '
37065/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end 19885s/.\{148\}/&'"$ac_delim"'/g
37066_ACEOF 19886t rset
37067sed ' 19887:rset
37068s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g 19888s/^[ ]*#[ ]*define[ ][ ]*/ /
37069s/^/s,@/; s/!/@,|#_!!_#|/ 19889t def
37070:n 19890d
37071t n 19891:def
37072s/'"$ac_delim"'$/,g/; t 19892s/\\$//
37073s/$/\\/; p 19893t bsnl
37074N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n 19894s/["\\]/\\&/g
37075' >>$CONFIG_STATUS <conf$$subs.sed 19895s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
37076rm -f conf$$subs.sed 19896D["\1"]=" \3"/p
37077cat >>$CONFIG_STATUS <<_ACEOF 19897s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
37078:end 19898d
37079s/|#_!!_#|//g 19899:bsnl
37080CEOF$ac_eof 19900s/["\\]/\\&/g
19901s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
19902D["\1"]=" \3\\\\\\n"\\/p
19903t cont
19904s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
19905t cont
19906d
19907:cont
19908n
19909s/.\{148\}/&'"$ac_delim"'/g
19910t clear
19911:clear
19912s/\\$//
19913t bsnlc
19914s/["\\]/\\&/g; s/^/"/; s/$/"/p
19915d
19916:bsnlc
19917s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
19918b cont
19919' <confdefs.h | sed '
19920s/'"$ac_delim"'/"\\\
19921"/g' >>$CONFIG_STATUS || ac_write_fail=1
19922
19923cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
19924 for (key in D) D_is_set[key] = 1
19925 FS = ""
19926}
19927/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
19928 line = \$ 0
19929 split(line, arg, " ")
19930 if (arg[1] == "#") {
19931 defundef = arg[2]
19932 mac1 = arg[3]
19933 } else {
19934 defundef = substr(arg[1], 2)
19935 mac1 = arg[2]
19936 }
19937 split(mac1, mac2, "(") #)
19938 macro = mac2[1]
19939 prefix = substr(line, 1, index(line, defundef) - 1)
19940 if (D_is_set[macro]) {
19941 # Preserve the white space surrounding the "#".
19942 print prefix "define", macro P[macro] D[macro]
19943 next
19944 } else {
19945 # Replace #undef with comments. This is necessary, for example,
19946 # in the case of _POSIX_SOURCE, which is predefined and required
19947 # on some systems where configure will not decide to define it.
19948 if (defundef == "undef") {
19949 print "/*", prefix defundef, macro, "*/"
19950 next
19951 }
19952 }
19953}
19954{ print }
19955_ACAWK
37081_ACEOF 19956_ACEOF
19957cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
19958 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
19959fi # test -n "$CONFIG_HEADERS"
37082 19960
37083 19961
37084# VPATH may cause trouble with some makes, so we remove $(srcdir), 19962eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS "
37085# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and 19963shift
37086# trailing colons and then remove the whole line if VPATH becomes empty 19964for ac_tag
37087# (actually we leave an empty line to preserve line numbers).
37088if test "x$srcdir" = x.; then
37089 ac_vpsub='/^[ ]*VPATH[ ]*=/{
37090s/:*\$(srcdir):*/:/
37091s/:*\${srcdir}:*/:/
37092s/:*@srcdir@:*/:/
37093s/^\([^=]*=[ ]*\):*/\1/
37094s/:*$//
37095s/^[^=]*=[ ]*$//
37096}'
37097fi
37098
37099cat >>$CONFIG_STATUS <<\_ACEOF
37100fi # test -n "$CONFIG_FILES"
37101
37102
37103for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS
37104do 19965do
37105 case $ac_tag in 19966 case $ac_tag in
37106 :[FHLC]) ac_mode=$ac_tag; continue;; 19967 :[FHLC]) ac_mode=$ac_tag; continue;;
37107 esac 19968 esac
37108 case $ac_mode$ac_tag in 19969 case $ac_mode$ac_tag in
37109 :[FHL]*:*);; 19970 :[FHL]*:*);;
37110 :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 19971 :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
37111echo "$as_me: error: Invalid tag $ac_tag." >&2;}
37112 { (exit 1); exit 1; }; };;
37113 :[FH]-) ac_tag=-:-;; 19972 :[FH]-) ac_tag=-:-;;
37114 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; 19973 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
37115 esac 19974 esac
@@ -37128,7 +19987,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
37128 for ac_f 19987 for ac_f
37129 do 19988 do
37130 case $ac_f in 19989 case $ac_f in
37131 -) ac_f="$tmp/stdin";; 19990 -) ac_f="$ac_tmp/stdin";;
37132 *) # Look for the file first in the build tree, then in the source tree 19991 *) # Look for the file first in the build tree, then in the source tree
37133 # (if the path is not absolute). The absolute path cannot be DOS-style, 19992 # (if the path is not absolute). The absolute path cannot be DOS-style,
37134 # because $ac_f cannot contain `:'. 19993 # because $ac_f cannot contain `:'.
@@ -37137,26 +19996,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
37137 [\\/$]*) false;; 19996 [\\/$]*) false;;
37138 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; 19997 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
37139 esac || 19998 esac ||
37140 { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 19999 as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
37141echo "$as_me: error: cannot find input file: $ac_f" >&2;}
37142 { (exit 1); exit 1; }; };;
37143 esac 20000 esac
37144 ac_file_inputs="$ac_file_inputs $ac_f" 20001 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
20002 as_fn_append ac_file_inputs " '$ac_f'"
37145 done 20003 done
37146 20004
37147 # Let's still pretend it is `configure' which instantiates (i.e., don't 20005 # Let's still pretend it is `configure' which instantiates (i.e., don't
37148 # use $as_me), people would be surprised to read: 20006 # use $as_me), people would be surprised to read:
37149 # /* config.h. Generated by config.status. */ 20007 # /* config.h. Generated by config.status. */
37150 configure_input="Generated from "`IFS=: 20008 configure_input='Generated from '`
37151 echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." 20009 $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
20010 `' by configure.'
37152 if test x"$ac_file" != x-; then 20011 if test x"$ac_file" != x-; then
37153 configure_input="$ac_file. $configure_input" 20012 configure_input="$ac_file. $configure_input"
37154 { echo "$as_me:$LINENO: creating $ac_file" >&5 20013 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
37155echo "$as_me: creating $ac_file" >&6;} 20014$as_echo "$as_me: creating $ac_file" >&6;}
37156 fi 20015 fi
20016 # Neutralize special characters interpreted by sed in replacement strings.
20017 case $configure_input in #(
20018 *\&* | *\|* | *\\* )
20019 ac_sed_conf_input=`$as_echo "$configure_input" |
20020 sed 's/[\\\\&|]/\\\\&/g'`;; #(
20021 *) ac_sed_conf_input=$configure_input;;
20022 esac
37157 20023
37158 case $ac_tag in 20024 case $ac_tag in
37159 *:-:* | *:-) cat >"$tmp/stdin";; 20025 *:-:* | *:-) cat >"$ac_tmp/stdin" \
20026 || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
37160 esac 20027 esac
37161 ;; 20028 ;;
37162 esac 20029 esac
@@ -37166,42 +20033,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
37166 X"$ac_file" : 'X\(//\)[^/]' \| \ 20033 X"$ac_file" : 'X\(//\)[^/]' \| \
37167 X"$ac_file" : 'X\(//\)$' \| \ 20034 X"$ac_file" : 'X\(//\)$' \| \
37168 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || 20035 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
37169echo X"$ac_file" | 20036$as_echo X"$ac_file" |
37170 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
37171 s//\1/
37172 q
37173 }
37174 /^X\(\/\/\)[^/].*/{
37175 s//\1/
37176 q
37177 }
37178 /^X\(\/\/\)$/{
37179 s//\1/
37180 q
37181 }
37182 /^X\(\/\).*/{
37183 s//\1/
37184 q
37185 }
37186 s/.*/./; q'`
37187 { as_dir="$ac_dir"
37188 case $as_dir in #(
37189 -*) as_dir=./$as_dir;;
37190 esac
37191 test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
37192 as_dirs=
37193 while :; do
37194 case $as_dir in #(
37195 *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
37196 *) as_qdir=$as_dir;;
37197 esac
37198 as_dirs="'$as_qdir' $as_dirs"
37199 as_dir=`$as_dirname -- "$as_dir" ||
37200$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
37201 X"$as_dir" : 'X\(//\)[^/]' \| \
37202 X"$as_dir" : 'X\(//\)$' \| \
37203 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
37204echo X"$as_dir" |
37205 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 20037 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
37206 s//\1/ 20038 s//\1/
37207 q 20039 q
@@ -37219,20 +20051,15 @@ echo X"$as_dir" |
37219 q 20051 q
37220 } 20052 }
37221 s/.*/./; q'` 20053 s/.*/./; q'`
37222 test -d "$as_dir" && break 20054 as_dir="$ac_dir"; as_fn_mkdir_p
37223 done
37224 test -z "$as_dirs" || eval "mkdir $as_dirs"
37225 } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
37226echo "$as_me: error: cannot create directory $as_dir" >&2;}
37227 { (exit 1); exit 1; }; }; }
37228 ac_builddir=. 20055 ac_builddir=.
37229 20056
37230case "$ac_dir" in 20057case "$ac_dir" in
37231.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; 20058.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
37232*) 20059*)
37233 ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` 20060 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
37234 # A ".." for each directory in $ac_dir_suffix. 20061 # A ".." for each directory in $ac_dir_suffix.
37235 ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` 20062 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
37236 case $ac_top_builddir_sub in 20063 case $ac_top_builddir_sub in
37237 "") ac_top_builddir_sub=. ac_top_build_prefix= ;; 20064 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
37238 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; 20065 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -37272,12 +20099,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
37272 esac 20099 esac
37273_ACEOF 20100_ACEOF
37274 20101
37275cat >>$CONFIG_STATUS <<\_ACEOF 20102cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
37276# If the template does not know about datarootdir, expand it. 20103# If the template does not know about datarootdir, expand it.
37277# FIXME: This hack should be removed a few years after 2.60. 20104# FIXME: This hack should be removed a few years after 2.60.
37278ac_datarootdir_hack=; ac_datarootdir_seen= 20105ac_datarootdir_hack=; ac_datarootdir_seen=
37279 20106ac_sed_dataroot='
37280case `sed -n '/datarootdir/ { 20107/datarootdir/ {
37281 p 20108 p
37282 q 20109 q
37283} 20110}
@@ -37285,36 +20112,37 @@ case `sed -n '/datarootdir/ {
37285/@docdir@/p 20112/@docdir@/p
37286/@infodir@/p 20113/@infodir@/p
37287/@localedir@/p 20114/@localedir@/p
37288/@mandir@/p 20115/@mandir@/p'
37289' $ac_file_inputs` in 20116case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
37290*datarootdir*) ac_datarootdir_seen=yes;; 20117*datarootdir*) ac_datarootdir_seen=yes;;
37291*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) 20118*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
37292 { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 20119 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
37293echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} 20120$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
37294_ACEOF 20121_ACEOF
37295cat >>$CONFIG_STATUS <<_ACEOF 20122cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
37296 ac_datarootdir_hack=' 20123 ac_datarootdir_hack='
37297 s&@datadir@&$datadir&g 20124 s&@datadir@&$datadir&g
37298 s&@docdir@&$docdir&g 20125 s&@docdir@&$docdir&g
37299 s&@infodir@&$infodir&g 20126 s&@infodir@&$infodir&g
37300 s&@localedir@&$localedir&g 20127 s&@localedir@&$localedir&g
37301 s&@mandir@&$mandir&g 20128 s&@mandir@&$mandir&g
37302 s&\\\${datarootdir}&$datarootdir&g' ;; 20129 s&\\\${datarootdir}&$datarootdir&g' ;;
37303esac 20130esac
37304_ACEOF 20131_ACEOF
37305 20132
37306# Neutralize VPATH when `$srcdir' = `.'. 20133# Neutralize VPATH when `$srcdir' = `.'.
37307# Shell code in configure.ac might set extrasub. 20134# Shell code in configure.ac might set extrasub.
37308# FIXME: do we really want to maintain this feature? 20135# FIXME: do we really want to maintain this feature?
37309cat >>$CONFIG_STATUS <<_ACEOF 20136cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
37310 sed "$ac_vpsub 20137ac_sed_extra="$ac_vpsub
37311$extrasub 20138$extrasub
37312_ACEOF 20139_ACEOF
37313cat >>$CONFIG_STATUS <<\_ACEOF 20140cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
37314:t 20141:t
37315/@[a-zA-Z_][a-zA-Z_0-9]*@/!b 20142/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
37316s&@configure_input@&$configure_input&;t t 20143s|@configure_input@|$ac_sed_conf_input|;t t
37317s&@top_builddir@&$ac_top_builddir_sub&;t t 20144s&@top_builddir@&$ac_top_builddir_sub&;t t
20145s&@top_build_prefix@&$ac_top_build_prefix&;t t
37318s&@srcdir@&$ac_srcdir&;t t 20146s&@srcdir@&$ac_srcdir&;t t
37319s&@abs_srcdir@&$ac_abs_srcdir&;t t 20147s&@abs_srcdir@&$ac_abs_srcdir&;t t
37320s&@top_srcdir@&$ac_top_srcdir&;t t 20148s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -37324,119 +20152,49 @@ s&@abs_builddir@&$ac_abs_builddir&;t t
37324s&@abs_top_builddir@&$ac_abs_top_builddir&;t t 20152s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
37325s&@INSTALL@&$ac_INSTALL&;t t 20153s&@INSTALL@&$ac_INSTALL&;t t
37326$ac_datarootdir_hack 20154$ac_datarootdir_hack
37327" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out 20155"
20156eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
20157 >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
37328 20158
37329test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && 20159test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
37330 { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && 20160 { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
37331 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && 20161 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
37332 { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' 20162 "$ac_tmp/out"`; test -z "$ac_out"; } &&
37333which seems to be undefined. Please make sure it is defined." >&5 20163 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
37334echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' 20164which seems to be undefined. Please make sure it is defined" >&5
37335which seems to be undefined. Please make sure it is defined." >&2;} 20165$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
37336 20166which seems to be undefined. Please make sure it is defined" >&2;}
37337 rm -f "$tmp/stdin" 20167
20168 rm -f "$ac_tmp/stdin"
37338 case $ac_file in 20169 case $ac_file in
37339 -) cat "$tmp/out"; rm -f "$tmp/out";; 20170 -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
37340 *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; 20171 *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
37341 esac 20172 esac \
20173 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
37342 ;; 20174 ;;
37343 :H) 20175 :H)
37344 # 20176 #
37345 # CONFIG_HEADER 20177 # CONFIG_HEADER
37346 # 20178 #
37347_ACEOF
37348
37349# Transform confdefs.h into a sed script `conftest.defines', that
37350# substitutes the proper values into config.h.in to produce config.h.
37351rm -f conftest.defines conftest.tail
37352# First, append a space to every undef/define line, to ease matching.
37353echo 's/$/ /' >conftest.defines
37354# Then, protect against being on the right side of a sed subst, or in
37355# an unquoted here document, in config.status. If some macros were
37356# called several times there might be several #defines for the same
37357# symbol, which is useless. But do not sort them, since the last
37358# AC_DEFINE must be honored.
37359ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
37360# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
37361# NAME is the cpp macro being defined, VALUE is the value it is being given.
37362# PARAMS is the parameter list in the macro definition--in most cases, it's
37363# just an empty string.
37364ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
37365ac_dB='\\)[ (].*,\\1define\\2'
37366ac_dC=' '
37367ac_dD=' ,'
37368
37369uniq confdefs.h |
37370 sed -n '
37371 t rset
37372 :rset
37373 s/^[ ]*#[ ]*define[ ][ ]*//
37374 t ok
37375 d
37376 :ok
37377 s/[\\&,]/\\&/g
37378 s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
37379 s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
37380 ' >>conftest.defines
37381
37382# Remove the space that was appended to ease matching.
37383# Then replace #undef with comments. This is necessary, for
37384# example, in the case of _POSIX_SOURCE, which is predefined and required
37385# on some systems where configure will not decide to define it.
37386# (The regexp can be short, since the line contains either #define or #undef.)
37387echo 's/ $//
37388s,^[ #]*u.*,/* & */,' >>conftest.defines
37389
37390# Break up conftest.defines:
37391ac_max_sed_lines=50
37392
37393# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
37394# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
37395# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
37396# et cetera.
37397ac_in='$ac_file_inputs'
37398ac_out='"$tmp/out1"'
37399ac_nxt='"$tmp/out2"'
37400
37401while :
37402do
37403 # Write a here document:
37404 cat >>$CONFIG_STATUS <<_ACEOF
37405 # First, check the format of the line:
37406 cat >"\$tmp/defines.sed" <<\\CEOF
37407/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
37408/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
37409b
37410:def
37411_ACEOF
37412 sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
37413 echo 'CEOF
37414 sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
37415 ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
37416 sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
37417 grep . conftest.tail >/dev/null || break
37418 rm -f conftest.defines
37419 mv conftest.tail conftest.defines
37420done
37421rm -f conftest.defines conftest.tail
37422
37423echo "ac_result=$ac_in" >>$CONFIG_STATUS
37424cat >>$CONFIG_STATUS <<\_ACEOF
37425 if test x"$ac_file" != x-; then 20179 if test x"$ac_file" != x-; then
37426 echo "/* $configure_input */" >"$tmp/config.h" 20180 {
37427 cat "$ac_result" >>"$tmp/config.h" 20181 $as_echo "/* $configure_input */" \
37428 if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then 20182 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
37429 { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 20183 } >"$ac_tmp/config.h" \
37430echo "$as_me: $ac_file is unchanged" >&6;} 20184 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
20185 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
20186 { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
20187$as_echo "$as_me: $ac_file is unchanged" >&6;}
37431 else 20188 else
37432 rm -f $ac_file 20189 rm -f "$ac_file"
37433 mv "$tmp/config.h" $ac_file 20190 mv "$ac_tmp/config.h" "$ac_file" \
20191 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
37434 fi 20192 fi
37435 else 20193 else
37436 echo "/* $configure_input */" 20194 $as_echo "/* $configure_input */" \
37437 cat "$ac_result" 20195 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
20196 || as_fn_error $? "could not create -" "$LINENO" 5
37438 fi 20197 fi
37439 rm -f "$tmp/out12"
37440 ;; 20198 ;;
37441 20199
37442 20200
@@ -37445,11 +20203,13 @@ echo "$as_me: $ac_file is unchanged" >&6;}
37445done # for ac_tag 20203done # for ac_tag
37446 20204
37447 20205
37448{ (exit 0); exit 0; } 20206as_fn_exit 0
37449_ACEOF 20207_ACEOF
37450chmod +x $CONFIG_STATUS
37451ac_clean_files=$ac_clean_files_save 20208ac_clean_files=$ac_clean_files_save
37452 20209
20210test $ac_write_fail = 0 ||
20211 as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
20212
37453 20213
37454# configure is writing to config.log, and then calls config.status. 20214# configure is writing to config.log, and then calls config.status.
37455# config.status does its own redirection, appending to config.log. 20215# config.status does its own redirection, appending to config.log.
@@ -37469,7 +20229,11 @@ if test "$no_create" != yes; then
37469 exec 5>>config.log 20229 exec 5>>config.log
37470 # Use ||, not &&, to avoid exiting from the if with $? = 1, which 20230 # Use ||, not &&, to avoid exiting from the if with $? = 1, which
37471 # would make configure fail if this is the last instruction. 20231 # would make configure fail if this is the last instruction.
37472 $ac_cs_success || { (exit 1); exit 1; } 20232 $ac_cs_success || as_fn_exit 1
20233fi
20234if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
20235 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
20236$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
37473fi 20237fi
37474 20238
37475 20239
diff --git a/configure.ac b/configure.ac
index 6cafb1535..9f59794bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -79,19 +79,6 @@ if test -z "$AR" ; then
79 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***]) 79 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
80fi 80fi
81 81
82# Use LOGIN_PROGRAM from environment if possible
83if test ! -z "$LOGIN_PROGRAM" ; then
84 AC_DEFINE_UNQUOTED([LOGIN_PROGRAM_FALLBACK], ["$LOGIN_PROGRAM"],
85 [If your header files don't define LOGIN_PROGRAM,
86 then use this (detected) from environment and PATH])
87else
88 # Search for login
89 AC_PATH_PROG([LOGIN_PROGRAM_FALLBACK], [login])
90 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
91 AC_DEFINE_UNQUOTED([LOGIN_PROGRAM_FALLBACK], ["$LOGIN_PROGRAM_FALLBACK"])
92 fi
93fi
94
95AC_PATH_PROG([PATH_PASSWD_PROG], [passwd]) 82AC_PATH_PROG([PATH_PASSWD_PROG], [passwd])
96if test ! -z "$PATH_PASSWD_PROG" ; then 83if test ! -z "$PATH_PASSWD_PROG" ; then
97 AC_DEFINE_UNQUOTED([_PATH_PASSWD_PROG], ["$PATH_PASSWD_PROG"], 84 AC_DEFINE_UNQUOTED([_PATH_PASSWD_PROG], ["$PATH_PASSWD_PROG"],
@@ -123,6 +110,7 @@ AC_CHECK_DECL([PR_SET_NO_NEW_PRIVS], [have_linux_no_new_privs=1], , [
123 110
124openssl=yes 111openssl=yes
125ssh1=no 112ssh1=no
113COMMENT_OUT_RSA1="#no ssh1#"
126AC_ARG_WITH([openssl], 114AC_ARG_WITH([openssl],
127 [ --without-openssl Disable use of OpenSSL; use only limited internal crypto **EXPERIMENTAL** ], 115 [ --without-openssl Disable use of OpenSSL; use only limited internal crypto **EXPERIMENTAL** ],
128 [ if test "x$withval" = "xno" ; then 116 [ if test "x$withval" = "xno" ; then
@@ -147,6 +135,7 @@ AC_ARG_WITH([ssh1],
147 AC_MSG_ERROR([Cannot enable SSH protocol 1 with OpenSSL disabled]) 135 AC_MSG_ERROR([Cannot enable SSH protocol 1 with OpenSSL disabled])
148 fi 136 fi
149 ssh1=yes 137 ssh1=yes
138 COMMENT_OUT_RSA1=""
150 elif test "x$withval" = "xno" ; then 139 elif test "x$withval" = "xno" ; then
151 ssh1=no 140 ssh1=no
152 else 141 else
@@ -158,6 +147,7 @@ AC_MSG_CHECKING([whether SSH protocol 1 support is enabled])
158if test "x$ssh1" = "xyes" ; then 147if test "x$ssh1" = "xyes" ; then
159 AC_MSG_RESULT([yes]) 148 AC_MSG_RESULT([yes])
160 AC_DEFINE_UNQUOTED([WITH_SSH1], [1], [include SSH protocol version 1 support]) 149 AC_DEFINE_UNQUOTED([WITH_SSH1], [1], [include SSH protocol version 1 support])
150 AC_SUBST([COMMENT_OUT_RSA1])
161else 151else
162 AC_MSG_RESULT([no]) 152 AC_MSG_RESULT([no])
163fi 153fi
@@ -415,6 +405,7 @@ AC_CHECK_HEADERS([ \
415 sys/poll.h \ 405 sys/poll.h \
416 sys/prctl.h \ 406 sys/prctl.h \
417 sys/pstat.h \ 407 sys/pstat.h \
408 sys/ptrace.h \
418 sys/select.h \ 409 sys/select.h \
419 sys/stat.h \ 410 sys/stat.h \
420 sys/stream.h \ 411 sys/stream.h \
@@ -677,18 +668,16 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
677 TEST_MALLOC_OPTIONS="AFGJPRX" 668 TEST_MALLOC_OPTIONS="AFGJPRX"
678 ;; 669 ;;
679*-*-haiku*) 670*-*-haiku*)
680 LIBS="$LIBS -lbsd " 671 LIBS="$LIBS -lbsd "
681 AC_CHECK_LIB([network], [socket]) 672 AC_CHECK_LIB([network], [socket])
682 AC_DEFINE([HAVE_U_INT64_T]) 673 AC_DEFINE([HAVE_U_INT64_T])
683 MANTYPE=man 674 MANTYPE=man
684 ;; 675 ;;
685*-*-hpux*) 676*-*-hpux*)
686 # first we define all of the options common to all HP-UX releases 677 # first we define all of the options common to all HP-UX releases
687 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" 678 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
688 IPADDR_IN_DISPLAY=yes 679 IPADDR_IN_DISPLAY=yes
689 AC_DEFINE([USE_PIPES]) 680 AC_DEFINE([USE_PIPES])
690 AC_DEFINE([LOGIN_NO_ENDOPT], [1],
691 [Define if your login program cannot handle end of options ("--")])
692 AC_DEFINE([LOGIN_NEEDS_UTMPX]) 681 AC_DEFINE([LOGIN_NEEDS_UTMPX])
693 AC_DEFINE([LOCKED_PASSWD_STRING], ["*"], 682 AC_DEFINE([LOCKED_PASSWD_STRING], ["*"],
694 [String used in /etc/passwd to denote locked account]) 683 [String used in /etc/passwd to denote locked account])
@@ -805,7 +794,6 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
805 fi 794 fi
806 AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [], 795 AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [],
807 [], [#include <linux/types.h>]) 796 [], [#include <linux/types.h>])
808 AC_CHECK_FUNCS([prctl])
809 AC_MSG_CHECKING([for seccomp architecture]) 797 AC_MSG_CHECKING([for seccomp architecture])
810 seccomp_audit_arch= 798 seccomp_audit_arch=
811 case "$host" in 799 case "$host" in
@@ -870,8 +858,6 @@ mips-sony-bsd|mips-sony-newsos4)
870 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 858 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
871 [Prepend the address family to IP tunnel traffic]) 859 [Prepend the address family to IP tunnel traffic])
872 TEST_MALLOC_OPTIONS="AJRX" 860 TEST_MALLOC_OPTIONS="AJRX"
873 AC_DEFINE([BROKEN_STRNVIS], [1],
874 [NetBSD strnvis argument order is swapped compared to OpenBSD])
875 AC_DEFINE([BROKEN_READ_COMPARISON], [1], 861 AC_DEFINE([BROKEN_READ_COMPARISON], [1],
876 [NetBSD read function is sometimes redirected, breaking atomicio comparisons against it]) 862 [NetBSD read function is sometimes redirected, breaking atomicio comparisons against it])
877 ;; 863 ;;
@@ -882,8 +868,6 @@ mips-sony-bsd|mips-sony-newsos4)
882 AC_CHECK_HEADER([net/if_tap.h], , 868 AC_CHECK_HEADER([net/if_tap.h], ,
883 AC_DEFINE([SSH_TUN_NO_L2], [1], [No layer 2 tunnel support])) 869 AC_DEFINE([SSH_TUN_NO_L2], [1], [No layer 2 tunnel support]))
884 AC_DEFINE([BROKEN_GLOB], [1], [FreeBSD glob does not do what we need]) 870 AC_DEFINE([BROKEN_GLOB], [1], [FreeBSD glob does not do what we need])
885 AC_DEFINE([BROKEN_STRNVIS], [1],
886 [FreeBSD strnvis argument order is swapped compared to OpenBSD])
887 TEST_MALLOC_OPTIONS="AJRX" 871 TEST_MALLOC_OPTIONS="AJRX"
888 # Preauth crypto occasionally uses file descriptors for crypto offload 872 # Preauth crypto occasionally uses file descriptors for crypto offload
889 # and will crash if they cannot be opened. 873 # and will crash if they cannot be opened.
@@ -920,9 +904,6 @@ mips-sony-bsd|mips-sony-newsos4)
920 fi 904 fi
921 AC_DEFINE([PAM_SUN_CODEBASE]) 905 AC_DEFINE([PAM_SUN_CODEBASE])
922 AC_DEFINE([LOGIN_NEEDS_UTMPX]) 906 AC_DEFINE([LOGIN_NEEDS_UTMPX])
923 AC_DEFINE([LOGIN_NEEDS_TERM], [1],
924 [Some versions of /bin/login need the TERM supplied
925 on the commandline])
926 AC_DEFINE([PAM_TTY_KLUDGE]) 907 AC_DEFINE([PAM_TTY_KLUDGE])
927 AC_DEFINE([SSHPAM_CHAUTHTOK_NEEDS_RUID], [1], 908 AC_DEFINE([SSHPAM_CHAUTHTOK_NEEDS_RUID], [1],
928 [Define if pam_chauthtok wants real uid set 909 [Define if pam_chauthtok wants real uid set
@@ -1181,15 +1162,15 @@ mips-sony-bsd|mips-sony-newsos4)
1181 1162
1182*-*-ultrix*) 1163*-*-ultrix*)
1183 AC_DEFINE([BROKEN_GETGROUPS], [1], [getgroups(0,NULL) will return -1]) 1164 AC_DEFINE([BROKEN_GETGROUPS], [1], [getgroups(0,NULL) will return -1])
1184 AC_DEFINE([BROKEN_MMAP], [1], [Ultrix mmap can't map files])
1185 AC_DEFINE([NEED_SETPGRP]) 1165 AC_DEFINE([NEED_SETPGRP])
1186 AC_DEFINE([HAVE_SYS_SYSLOG_H], [1], [Force use of sys/syslog.h on Ultrix]) 1166 AC_DEFINE([HAVE_SYS_SYSLOG_H], [1], [Force use of sys/syslog.h on Ultrix])
1187 ;; 1167 ;;
1188 1168
1189*-*-lynxos) 1169*-*-lynxos)
1190 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__" 1170 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
1191 AC_DEFINE([BROKEN_SETVBUF], [1], [LynxOS has broken setvbuf() implementation]) 1171 AC_DEFINE([BROKEN_SETVBUF], [1],
1192 ;; 1172 [LynxOS has broken setvbuf() implementation])
1173 ;;
1193esac 1174esac
1194 1175
1195AC_MSG_CHECKING([compiler and flags for sanity]) 1176AC_MSG_CHECKING([compiler and flags for sanity])
@@ -1807,7 +1788,6 @@ AC_CHECK_FUNCS([ \
1807 memmove \ 1788 memmove \
1808 memset_s \ 1789 memset_s \
1809 mkdtemp \ 1790 mkdtemp \
1810 mmap \
1811 ngetaddrinfo \ 1791 ngetaddrinfo \
1812 nsleep \ 1792 nsleep \
1813 ogetaddrinfo \ 1793 ogetaddrinfo \
@@ -1843,6 +1823,7 @@ AC_CHECK_FUNCS([ \
1843 socketpair \ 1823 socketpair \
1844 statfs \ 1824 statfs \
1845 statvfs \ 1825 statvfs \
1826 strcasestr \
1846 strdup \ 1827 strdup \
1847 strerror \ 1828 strerror \
1848 strlcat \ 1829 strlcat \
@@ -1876,6 +1857,24 @@ CFLAGS="$CFLAGS -D_XOPEN_SOURCE"
1876AC_CHECK_FUNCS([mblen mbtowc nl_langinfo wcwidth]) 1857AC_CHECK_FUNCS([mblen mbtowc nl_langinfo wcwidth])
1877CFLAGS="$saved_CFLAGS" 1858CFLAGS="$saved_CFLAGS"
1878 1859
1860TEST_SSH_UTF8=${TEST_SSH_UTF8:=yes}
1861AC_MSG_CHECKING([for utf8 locale support])
1862AC_RUN_IFELSE(
1863 [AC_LANG_PROGRAM([[
1864#include <locale.h>
1865#include <stdlib.h>
1866 ]], [[
1867 char *loc = setlocale(LC_CTYPE, "en_US.UTF-8");
1868 if (loc != NULL)
1869 exit(0);
1870 exit(1);
1871 ]])],
1872 AC_MSG_RESULT(yes),
1873 [AC_MSG_RESULT(no)
1874 TEST_SSH_UTF8=no],
1875 AC_MSG_WARN([cross compiling: assuming yes])
1876)
1877
1879AC_LINK_IFELSE( 1878AC_LINK_IFELSE(
1880 [AC_LANG_PROGRAM( 1879 [AC_LANG_PROGRAM(
1881 [[ #include <ctype.h> ]], 1880 [[ #include <ctype.h> ]],
@@ -2413,6 +2412,41 @@ if test "x$check_for_conflicting_getspnam" = "x1"; then
2413 ) 2412 )
2414fi 2413fi
2415 2414
2415dnl NetBSD added an strnvis and unfortunately made it incompatible with the
2416dnl existing one in OpenBSD and Linux's libbsd (the former having existed
2417dnl for over ten years). Despite this incompatibility being reported during
2418dnl development (see http://gnats.netbsd.org/44977) they still shipped it.
2419dnl Even more unfortunately FreeBSD and later MacOS picked up this incompatible
2420dnl implementation. Try to detect this mess, and assume the only safe option
2421dnl if we're cross compiling.
2422dnl
2423dnl OpenBSD, 2001: strnvis(char *dst, const char *src, size_t dlen, int flag);
2424dnl NetBSD: 2012, strnvis(char *dst, size_t dlen, const char *src, int flag);
2425if test "x$ac_cv_func_strnvis" = "xyes"; then
2426 AC_MSG_CHECKING([for working strnvis])
2427 AC_RUN_IFELSE(
2428 [AC_LANG_PROGRAM([[
2429#include <signal.h>
2430#include <stdlib.h>
2431#include <string.h>
2432#include <vis.h>
2433static void sighandler(int sig) { _exit(1); }
2434 ]], [[
2435 char dst[16];
2436
2437 signal(SIGSEGV, sighandler);
2438 if (strnvis(dst, "src", 4, 0) && strcmp(dst, "src") == 0)
2439 exit(0);
2440 exit(1)
2441 ]])],
2442 [AC_MSG_RESULT([yes])],
2443 [AC_MSG_RESULT([no])
2444 AC_DEFINE([BROKEN_STRNVIS], [1], [strnvis detected broken])],
2445 [AC_MSG_WARN([cross compiling: assuming broken])
2446 AC_DEFINE([BROKEN_STRNVIS], [1], [strnvis assumed broken])]
2447 )
2448fi
2449
2416AC_FUNC_GETPGRP 2450AC_FUNC_GETPGRP
2417 2451
2418# Search for OpenSSL 2452# Search for OpenSSL
@@ -3092,6 +3126,17 @@ AC_ARG_WITH([pam],
3092 ] 3126 ]
3093) 3127)
3094 3128
3129AC_ARG_WITH([pam-service],
3130 [ --with-pam-service=name Specify PAM service name ],
3131 [
3132 if test "x$withval" != "xno" && \
3133 test "x$withval" != "xyes" ; then
3134 AC_DEFINE_UNQUOTED([SSHD_PAM_SERVICE],
3135 ["$withval"], [sshd PAM service name])
3136 fi
3137 ]
3138)
3139
3095# Check for older PAM 3140# Check for older PAM
3096if test "x$PAM_MSG" = "xyes" ; then 3141if test "x$PAM_MSG" = "xyes" ; then
3097 # Check PAM strerror arguments (old PAM) 3142 # Check PAM strerror arguments (old PAM)
@@ -4205,7 +4250,7 @@ AC_ARG_WITH([kerberos5],
4205 AC_DEFINE([KRB5], [1], [Define if you want Kerberos 5 support]) 4250 AC_DEFINE([KRB5], [1], [Define if you want Kerberos 5 support])
4206 KRB5_MSG="yes" 4251 KRB5_MSG="yes"
4207 4252
4208 AC_PATH_PROG([KRB5CONF], [krb5-config], 4253 AC_PATH_TOOL([KRB5CONF], [krb5-config],
4209 [$KRB5ROOT/bin/krb5-config], 4254 [$KRB5ROOT/bin/krb5-config],
4210 [$KRB5ROOT/bin:$PATH]) 4255 [$KRB5ROOT/bin:$PATH])
4211 if test -x $KRB5CONF ; then 4256 if test -x $KRB5CONF ; then
@@ -5086,6 +5131,7 @@ else
5086fi 5131fi
5087AC_CHECK_DECL([BROKEN_GETADDRINFO], [TEST_SSH_IPV6=no]) 5132AC_CHECK_DECL([BROKEN_GETADDRINFO], [TEST_SSH_IPV6=no])
5088AC_SUBST([TEST_SSH_IPV6], [$TEST_SSH_IPV6]) 5133AC_SUBST([TEST_SSH_IPV6], [$TEST_SSH_IPV6])
5134AC_SUBST([TEST_SSH_UTF8], [$TEST_SSH_UTF8])
5089AC_SUBST([TEST_MALLOC_OPTIONS], [$TEST_MALLOC_OPTIONS]) 5135AC_SUBST([TEST_MALLOC_OPTIONS], [$TEST_MALLOC_OPTIONS])
5090AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms]) 5136AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms])
5091 5137
diff --git a/contrib/Makefile b/contrib/Makefile
index eaf7fe2fd..3a36387b3 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -13,5 +13,10 @@ gnome-ssh-askpass2: gnome-ssh-askpass2.c
13 gnome-ssh-askpass2.c -o gnome-ssh-askpass2 \ 13 gnome-ssh-askpass2.c -o gnome-ssh-askpass2 \
14 `$(PKG_CONFIG) --libs gtk+-2.0 x11` 14 `$(PKG_CONFIG) --libs gtk+-2.0 x11`
15 15
16gnome-ssh-askpass3: gnome-ssh-askpass2.c
17 $(CC) $(CFLAGS) `$(PKG_CONFIG) --cflags gtk+-3.0` \
18 gnome-ssh-askpass2.c -o gnome-ssh-askpass3 \
19 `$(PKG_CONFIG) --libs gtk+-3.0 x11`
20
16clean: 21clean:
17 rm -f *.o gnome-ssh-askpass1 gnome-ssh-askpass2 gnome-ssh-askpass 22 rm -f *.o gnome-ssh-askpass gnome-ssh-askpass[123]
diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c
index 04b3a110e..e37a13382 100644
--- a/contrib/gnome-ssh-askpass2.c
+++ b/contrib/gnome-ssh-askpass2.c
@@ -57,19 +57,17 @@
57#include <gdk/gdkx.h> 57#include <gdk/gdkx.h>
58 58
59static void 59static void
60report_failed_grab (const char *what) 60report_failed_grab (GtkWidget *parent_window, const char *what)
61{ 61{
62 GtkWidget *err; 62 GtkWidget *err;
63 63
64 err = gtk_message_dialog_new(NULL, 0, 64 err = gtk_message_dialog_new(GTK_WINDOW(parent_window), 0,
65 GTK_MESSAGE_ERROR, 65 GTK_MESSAGE_ERROR,
66 GTK_BUTTONS_CLOSE, 66 GTK_BUTTONS_CLOSE,
67 "Could not grab %s. " 67 "Could not grab %s. "
68 "A malicious client may be eavesdropping " 68 "A malicious client may be eavesdropping "
69 "on your session.", what); 69 "on your session.", what);
70 gtk_window_set_position(GTK_WINDOW(err), GTK_WIN_POS_CENTER); 70 gtk_window_set_position(GTK_WINDOW(err), GTK_WIN_POS_CENTER);
71 gtk_label_set_line_wrap(GTK_LABEL((GTK_MESSAGE_DIALOG(err))->label),
72 TRUE);
73 71
74 gtk_dialog_run(GTK_DIALOG(err)); 72 gtk_dialog_run(GTK_DIALOG(err));
75 73
@@ -89,22 +87,27 @@ passphrase_dialog(char *message)
89 const char *failed; 87 const char *failed;
90 char *passphrase, *local; 88 char *passphrase, *local;
91 int result, grab_tries, grab_server, grab_pointer; 89 int result, grab_tries, grab_server, grab_pointer;
92 GtkWidget *dialog, *entry; 90 GtkWidget *parent_window, *dialog, *entry;
93 GdkGrabStatus status; 91 GdkGrabStatus status;
94 92
95 grab_server = (getenv("GNOME_SSH_ASKPASS_GRAB_SERVER") != NULL); 93 grab_server = (getenv("GNOME_SSH_ASKPASS_GRAB_SERVER") != NULL);
96 grab_pointer = (getenv("GNOME_SSH_ASKPASS_GRAB_POINTER") != NULL); 94 grab_pointer = (getenv("GNOME_SSH_ASKPASS_GRAB_POINTER") != NULL);
97 grab_tries = 0; 95 grab_tries = 0;
98 96
99 dialog = gtk_message_dialog_new(NULL, 0, 97 /* Create an invisible parent window so that GtkDialog doesn't
98 * complain. */
99 parent_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
100
101 dialog = gtk_message_dialog_new(GTK_WINDOW(parent_window), 0,
100 GTK_MESSAGE_QUESTION, 102 GTK_MESSAGE_QUESTION,
101 GTK_BUTTONS_OK_CANCEL, 103 GTK_BUTTONS_OK_CANCEL,
102 "%s", 104 "%s",
103 message); 105 message);
104 106
105 entry = gtk_entry_new(); 107 entry = gtk_entry_new();
106 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), entry, FALSE, 108 gtk_box_pack_start(
107 FALSE, 0); 109 GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), entry,
110 FALSE, FALSE, 0);
108 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); 111 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
109 gtk_widget_grab_focus(entry); 112 gtk_widget_grab_focus(entry);
110 gtk_widget_show(entry); 113 gtk_widget_show(entry);
@@ -112,8 +115,6 @@ passphrase_dialog(char *message)
112 gtk_window_set_title(GTK_WINDOW(dialog), "OpenSSH"); 115 gtk_window_set_title(GTK_WINDOW(dialog), "OpenSSH");
113 gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); 116 gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
114 gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); 117 gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
115 gtk_label_set_line_wrap(GTK_LABEL((GTK_MESSAGE_DIALOG(dialog))->label),
116 TRUE);
117 118
118 /* Make <enter> close dialog */ 119 /* Make <enter> close dialog */
119 gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); 120 gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
@@ -127,8 +128,8 @@ passphrase_dialog(char *message)
127 if (grab_pointer) { 128 if (grab_pointer) {
128 for(;;) { 129 for(;;) {
129 status = gdk_pointer_grab( 130 status = gdk_pointer_grab(
130 (GTK_WIDGET(dialog))->window, TRUE, 0, NULL, 131 (gtk_widget_get_window(GTK_WIDGET(dialog))), TRUE,
131 NULL, GDK_CURRENT_TIME); 132 0, NULL, NULL, GDK_CURRENT_TIME);
132 if (status == GDK_GRAB_SUCCESS) 133 if (status == GDK_GRAB_SUCCESS)
133 break; 134 break;
134 usleep(GRAB_WAIT * 1000); 135 usleep(GRAB_WAIT * 1000);
@@ -139,8 +140,9 @@ passphrase_dialog(char *message)
139 } 140 }
140 } 141 }
141 for(;;) { 142 for(;;) {
142 status = gdk_keyboard_grab((GTK_WIDGET(dialog))->window, 143 status = gdk_keyboard_grab(
143 FALSE, GDK_CURRENT_TIME); 144 gtk_widget_get_window(GTK_WIDGET(dialog)), FALSE,
145 GDK_CURRENT_TIME);
144 if (status == GDK_GRAB_SUCCESS) 146 if (status == GDK_GRAB_SUCCESS)
145 break; 147 break;
146 usleep(GRAB_WAIT * 1000); 148 usleep(GRAB_WAIT * 1000);
@@ -157,7 +159,7 @@ passphrase_dialog(char *message)
157 159
158 /* Ungrab */ 160 /* Ungrab */
159 if (grab_server) 161 if (grab_server)
160 XUngrabServer(GDK_DISPLAY()); 162 XUngrabServer(gdk_x11_get_default_xdisplay());
161 if (grab_pointer) 163 if (grab_pointer)
162 gdk_pointer_ungrab(GDK_CURRENT_TIME); 164 gdk_pointer_ungrab(GDK_CURRENT_TIME);
163 gdk_keyboard_ungrab(GDK_CURRENT_TIME); 165 gdk_keyboard_ungrab(GDK_CURRENT_TIME);
@@ -193,10 +195,10 @@ passphrase_dialog(char *message)
193 gdk_pointer_ungrab(GDK_CURRENT_TIME); 195 gdk_pointer_ungrab(GDK_CURRENT_TIME);
194 nograb: 196 nograb:
195 if (grab_server) 197 if (grab_server)
196 XUngrabServer(GDK_DISPLAY()); 198 XUngrabServer(gdk_x11_get_default_xdisplay());
197 gtk_widget_destroy(dialog); 199 gtk_widget_destroy(dialog);
198 200
199 report_failed_grab(failed); 201 report_failed_grab(parent_window, failed);
200 202
201 return (-1); 203 return (-1);
202} 204}
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index fd8678f12..666097c5e 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
1%define ver 7.3p1 1%define ver 7.4p1
2%define rel 1 2%define rel 1
3 3
4# OpenSSH privilege separation requires a user & group ID 4# OpenSSH privilege separation requires a user & group ID
@@ -72,8 +72,8 @@ Release: %{rel}rescue
72%else 72%else
73Release: %{rel} 73Release: %{rel}
74%endif 74%endif
75URL: http://www.openssh.com/portable.html 75URL: https://www.openssh.com/portable.html
76Source0: ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-%{version}.tar.gz 76Source0: https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-%{version}.tar.gz
77%if ! %{no_x11_askpass} 77%if ! %{no_x11_askpass}
78Source1: http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-%{aversion}.tar.gz 78Source1: http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-%{aversion}.tar.gz
79%endif 79%endif
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index d2b2728d5..4c4bbb69c 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,8 +13,8 @@
13 13
14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation 14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
15Name: openssh 15Name: openssh
16Version: 7.3p1 16Version: 7.4p1
17URL: http://www.openssh.com/ 17URL: https://www.openssh.com/
18Release: 1 18Release: 1
19Source0: openssh-%{version}.tar.gz 19Source0: openssh-%{version}.tar.gz
20Source1: x11-ssh-askpass-%{xversion}.tar.gz 20Source1: x11-ssh-askpass-%{xversion}.tar.gz
diff --git a/debian/.git-dpm b/debian/.git-dpm
index a3594adbc..5452ac780 100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@ -1,8 +1,8 @@
1# see git-dpm(1) from git-dpm package 1# see git-dpm(1) from git-dpm package
29c88f6248e9da14cb7916527862f2eac7f55b12a 22103d3e5566c54e08a59be750579a249e46747d7
39c88f6248e9da14cb7916527862f2eac7f55b12a 32103d3e5566c54e08a59be750579a249e46747d7
4a8ed8d256b2e2c05b0c15565a7938028c5192277 4971a7653746a6972b907dfe0ce139c06e4a6f482
5a8ed8d256b2e2c05b0c15565a7938028c5192277 5971a7653746a6972b907dfe0ce139c06e4a6f482
6openssh_7.3p1.orig.tar.gz 6openssh_7.4p1.orig.tar.gz
7bfade84283fcba885e2084343ab19a08c7d123a5 72330bbf82ed08cf3ac70e0acf00186ef3eeb97e0
81522617 81511780
diff --git a/debian/NEWS b/debian/NEWS
index 6f4564ba7..3a331e1fd 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,34 @@
1openssh (1:7.4p1-1) UNRELEASED; urgency=medium
2
3 OpenSSH 7.4 includes a number of changes that may affect existing
4 configurations:
5
6 * ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit
7 block ciphers are not safe in 2016 and we don't want to wait until
8 attacks like SWEET32 are extended to SSH. As 3des-cbc was the only
9 mandatory cipher in the SSH RFCs, this may cause problems connecting to
10 older devices using the default configuration, but it's highly likely
11 that such devices already need explicit configuration for key exchange
12 and hostkey algorithms already anyway.
13 * sshd(8): Remove support for pre-authentication compression. Doing
14 compression early in the protocol probably seemed reasonable in the
15 1990s, but today it's clearly a bad idea in terms of both cryptography
16 (cf. multiple compression oracle attacks in TLS) and attack surface.
17 Pre-auth compression support has been disabled by default for >10
18 years. Support remains in the client.
19 * ssh-agent will refuse to load PKCS#11 modules outside a whitelist of
20 trusted paths by default. The path whitelist may be specified at
21 run-time.
22 * sshd(8): When a forced-command appears in both a certificate and an
23 authorized keys/principals command= restriction, sshd will now refuse
24 to accept the certificate unless they are identical. The previous
25 (documented) behaviour of having the certificate forced-command
26 override the other could be a bit confusing and error-prone.
27 * sshd(8): Remove the UseLogin configuration directive and support for
28 having /bin/login manage login sessions.
29
30 -- Colin Watson <cjwatson@debian.org> Tue, 20 Dec 2016 22:21:15 +0000
31
1openssh (1:7.2p1-1) unstable; urgency=medium 32openssh (1:7.2p1-1) unstable; urgency=medium
2 33
3 OpenSSH 7.2 disables a number of legacy cryptographic algorithms by 34 OpenSSH 7.2 disables a number of legacy cryptographic algorithms by
diff --git a/debian/changelog b/debian/changelog
index 8e094ecdb..c2065c580 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,119 @@
1openssh (1:7.3p1-6) UNRELEASED; urgency=medium 1openssh (1:7.4p1-1) UNRELEASED; urgency=medium
2 2
3 * New upstream release (http://www.openssh.com/txt/release-7.4):
4 - ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit
5 block ciphers are not safe in 2016 and we don't want to wait until
6 attacks like SWEET32 are extended to SSH. As 3des-cbc was the only
7 mandatory cipher in the SSH RFCs, this may cause problems connecting
8 to older devices using the default configuration, but it's highly
9 likely that such devices already need explicit configuration for key
10 exchange and hostkey algorithms already anyway.
11 - sshd(8): When a forced-command appears in both a certificate and an
12 authorized keys/principals command= restriction, sshd will now refuse
13 to accept the certificate unless they are identical. The previous
14 (documented) behaviour of having the certificate forced-command
15 override the other could be a bit confusing and error-prone.
16 - sshd(8): Remove the UseLogin configuration directive and support for
17 having /bin/login manage login sessions.
18 - CVE-2016-10009: ssh-agent(1): Will now refuse to load PKCS#11 modules
19 from paths outside a trusted whitelist (run-time configurable).
20 Requests to load modules could be passed via agent forwarding and an
21 attacker could attempt to load a hostile PKCS#11 module across the
22 forwarded agent channel: PKCS#11 modules are shared libraries, so this
23 would result in code execution on the system running the ssh-agent if
24 the attacker has control of the forwarded agent-socket (on the host
25 running the sshd server) and the ability to write to the filesystem of
26 the host running ssh-agent (usually the host running the ssh client)
27 (closes: #848714).
28 - CVE-2016-10010: sshd(8): When privilege separation is disabled,
29 forwarded Unix-domain sockets would be created by sshd(8) with the
30 privileges of 'root' instead of the authenticated user. This release
31 refuses Unix-domain socket forwarding when privilege separation is
32 disabled (Privilege separation has been enabled by default for 14
33 years) (closes: #848715).
34 - CVE-2016-10011: sshd(8): Avoid theoretical leak of host private key
35 material to privilege-separated child processes via realloc() when
36 reading keys. No such leak was observed in practice for normal-sized
37 keys, nor does a leak to the child processes directly expose key
38 material to unprivileged users (closes: #848716).
39 - CVE-2016-10012: sshd(8): The shared memory manager used by
40 pre-authentication compression support had a bounds checks that could
41 be elided by some optimising compilers. Additionally, this memory
42 manager was incorrectly accessible when pre-authentication compression
43 was disabled. This could potentially allow attacks against the
44 privileged monitor process from the sandboxed privilege-separation
45 process (a compromise of the latter would be required first). This
46 release removes support for pre-authentication compression from
47 sshd(8) (closes: #848717).
48 - SECURITY: sshd(8): Validate address ranges for AllowUser and DenyUsers
49 directives at configuration load time and refuse to accept invalid
50 ones. It was previously possible to specify invalid CIDR address
51 ranges (e.g. user@127.1.2.3/55) and these would always match, possibly
52 resulting in granting access where it was not intended.
53 - ssh(1): Add a proxy multiplexing mode to ssh(1) inspired by the
54 version in PuTTY by Simon Tatham. This allows a multiplexing client
55 to communicate with the master process using a subset of the SSH
56 packet and channels protocol over a Unix-domain socket, with the main
57 process acting as a proxy that translates channel IDs, etc. This
58 allows multiplexing mode to run on systems that lack file-descriptor
59 passing (used by current multiplexing code) and potentially, in
60 conjunction with Unix-domain socket forwarding, with the client and
61 multiplexing master process on different machines. Multiplexing proxy
62 mode may be invoked using "ssh -O proxy ...".
63 - sshd(8): Add a sshd_config DisableForwarding option that disables X11,
64 agent, TCP, tunnel and Unix domain socket forwarding, as well as
65 anything else we might implement in the future. Like the 'restrict'
66 authorized_keys flag, this is intended to be a simple and future-proof
67 way of restricting an account.
68 - sshd(8), ssh(1): Support the "curve25519-sha256" key exchange method.
69 This is identical to the currently-supported method named
70 "curve25519-sha256@libssh.org".
71 - sshd(8): Improve handling of SIGHUP by checking to see if sshd is
72 already daemonised at startup and skipping the call to daemon(3) if it
73 is. This ensures that a SIGHUP restart of sshd(8) will retain the
74 same process-ID as the initial execution. sshd(8) will also now
75 unlink the PidFile prior to SIGHUP restart and re-create it after a
76 successful restart, rather than leaving a stale file in the case of a
77 configuration error.
78 - sshd(8): Allow ClientAliveInterval and ClientAliveCountMax directives
79 to appear in sshd_config Match blocks.
80 - sshd(8): Add %-escapes to AuthorizedPrincipalsCommand to match those
81 supported by AuthorizedKeysCommand (key, key type, fingerprint, etc.)
82 and a few more to provide access to the contents of the certificate
83 being offered.
84 - ssh(1): Allow IdentityFile to successfully load and use certificates
85 that have no corresponding bare public key.
86 - ssh(1): Fix public key authentication when multiple authentication is
87 in use and publickey is not just the first method attempted.
88 - ssh(1): Improve reporting when attempting to load keys from PKCS#11
89 tokens with fewer useless log messages and more detail in debug
90 messages.
91 - ssh(1): When tearing down ControlMaster connections, don't pollute
92 stderr when LogLevel=quiet.
93 - sftp(1): On ^Z wait for underlying ssh(1) to suspend before suspending
94 sftp(1) to ensure that ssh(1) restores the terminal mode correctly if
95 suspended during a password prompt.
96 - ssh(1): Avoid busy-wait when ssh(1) is suspended during a password
97 prompt (LP: #1646813).
98 - ssh(1), sshd(8): Correctly report errors during sending of ext-info
99 messages.
100 - sshd(8): Fix NULL-deref crash if sshd(8) received an out-of-sequence
101 NEWKEYS message.
102 - sshd(8): Correct list of supported signature algorithms sent in the
103 server-sig-algs extension.
104 - sshd(8): Fix sending ext_info message if privsep is disabled.
105 - sshd(8): More strictly enforce the expected ordering of privilege
106 separation monitor calls used for authentication and allow them only
107 when their respective authentication methods are enabled in the
108 configuration.
109 - sshd_config(5): Use 2001:db8::/32, the official IPv6 subnet for
110 configuration examples.
111 - On environments configured with Turkish locales, fall back to the
112 C/POSIX locale to avoid errors in configuration parsing caused by that
113 locale's unique handling of the letters 'i' and 'I' (LP: #1638338).
114 - contrib: Add a gnome-ssh-askpass3 with GTK+3 support.
115 - sshd(8): Improve PRNG reseeding across privilege separation and force
116 libcrypto to obtain a high-quality seed before chroot or sandboxing.
3 * Apply "wrap-and-sort -at -f debian/control -f debian/tests/control". 117 * Apply "wrap-and-sort -at -f debian/control -f debian/tests/control".
4 118
5 -- Colin Watson <cjwatson@debian.org> Mon, 05 Dec 2016 19:31:33 +0000 119 -- Colin Watson <cjwatson@debian.org> Mon, 05 Dec 2016 19:31:33 +0000
diff --git a/debian/patches/auth-log-verbosity.patch b/debian/patches/auth-log-verbosity.patch
index 7abed3704..55c5e84ff 100644
--- a/debian/patches/auth-log-verbosity.patch
+++ b/debian/patches/auth-log-verbosity.patch
@@ -1,4 +1,4 @@
1From b4b79ae5a16f73426b54c6394a29b2b49da4dc16 Mon Sep 17 00:00:00 2001 1From 69e0307a3bc73d5d360c19aeb61133c126cf63bf Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:02 +0000 3Date: Sun, 9 Feb 2014 16:10:02 +0000
4Subject: Quieten logs when multiple from= restrictions are used 4Subject: Quieten logs when multiple from= restrictions are used
@@ -11,12 +11,11 @@ Patch-Name: auth-log-verbosity.patch
11--- 11---
12 auth-options.c | 35 ++++++++++++++++++++++++++--------- 12 auth-options.c | 35 ++++++++++++++++++++++++++---------
13 auth-options.h | 1 + 13 auth-options.h | 1 +
14 auth-rsa.c | 2 ++
15 auth2-pubkey.c | 3 +++ 14 auth2-pubkey.c | 3 +++
16 4 files changed, 32 insertions(+), 9 deletions(-) 15 3 files changed, 30 insertions(+), 9 deletions(-)
17 16
18diff --git a/auth-options.c b/auth-options.c 17diff --git a/auth-options.c b/auth-options.c
19index b399b91..a9d9a81 100644 18index 57b49f7f..7eb87b35 100644
20--- a/auth-options.c 19--- a/auth-options.c
21+++ b/auth-options.c 20+++ b/auth-options.c
22@@ -59,9 +59,20 @@ int forced_tun_device = -1; 21@@ -59,9 +59,20 @@ int forced_tun_device = -1;
@@ -79,7 +78,7 @@ index b399b91..a9d9a81 100644
79 "is not permitted to use this " 78 "is not permitted to use this "
80 "certificate for login.", 79 "certificate for login.",
81diff --git a/auth-options.h b/auth-options.h 80diff --git a/auth-options.h b/auth-options.h
82index 34852e5..1653855 100644 81index 52cbb42a..82355276 100644
83--- a/auth-options.h 82--- a/auth-options.h
84+++ b/auth-options.h 83+++ b/auth-options.h
85@@ -33,6 +33,7 @@ extern int forced_tun_device; 84@@ -33,6 +33,7 @@ extern int forced_tun_device;
@@ -89,22 +88,9 @@ index 34852e5..1653855 100644
89+void auth_start_parse_options(void); 88+void auth_start_parse_options(void);
90 int auth_parse_options(struct passwd *, char *, char *, u_long); 89 int auth_parse_options(struct passwd *, char *, char *, u_long);
91 void auth_clear_options(void); 90 void auth_clear_options(void);
92 int auth_cert_options(struct sshkey *, struct passwd *); 91 int auth_cert_options(struct sshkey *, struct passwd *, const char **);
93diff --git a/auth-rsa.c b/auth-rsa.c
94index cbd971b..4cf2163 100644
95--- a/auth-rsa.c
96+++ b/auth-rsa.c
97@@ -181,6 +181,8 @@ rsa_key_allowed_in_file(struct passwd *pw, char *file,
98 if ((f = auth_openkeyfile(file, pw, options.strict_modes)) == NULL)
99 return 0;
100
101+ auth_start_parse_options();
102+
103 /*
104 * Go though the accepted keys, looking for the current key. If
105 * found, perform a challenge-response dialog to verify that the
106diff --git a/auth2-pubkey.c b/auth2-pubkey.c 92diff --git a/auth2-pubkey.c b/auth2-pubkey.c
107index 41b34ae..aace7ca 100644 93index 20f3309e..add77136 100644
108--- a/auth2-pubkey.c 94--- a/auth2-pubkey.c
109+++ b/auth2-pubkey.c 95+++ b/auth2-pubkey.c
110@@ -566,6 +566,7 @@ process_principals(FILE *f, char *file, struct passwd *pw, 96@@ -566,6 +566,7 @@ process_principals(FILE *f, char *file, struct passwd *pw,
@@ -115,19 +101,19 @@ index 41b34ae..aace7ca 100644
115 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 101 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
116 /* Skip leading whitespace. */ 102 /* Skip leading whitespace. */
117 for (cp = line; *cp == ' ' || *cp == '\t'; cp++) 103 for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
118@@ -731,6 +732,7 @@ check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw) 104@@ -764,6 +765,7 @@ check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw)
119 found_key = 0; 105 found_key = 0;
120 106
121 found = NULL; 107 found = NULL;
122+ auth_start_parse_options(); 108+ auth_start_parse_options();
123 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 109 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
124 char *cp, *key_options = NULL; 110 char *cp, *key_options = NULL, *fp = NULL;
125 if (found != NULL) 111 const char *reason = NULL;
126@@ -878,6 +880,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key) 112@@ -911,6 +913,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
127 if (key_cert_check_authority(key, 0, 1, 113 if (key_cert_check_authority(key, 0, 1,
128 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0) 114 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0)
129 goto fail_reason; 115 goto fail_reason;
130+ auth_start_parse_options(); 116+ auth_start_parse_options();
131 if (auth_cert_options(key, pw) != 0) 117 if (auth_cert_options(key, pw, &reason) != 0)
132 goto out; 118 goto fail_reason;
133 119
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch
index d75494fa6..145e667ba 100644
--- a/debian/patches/authorized-keys-man-symlink.patch
+++ b/debian/patches/authorized-keys-man-symlink.patch
@@ -1,4 +1,4 @@
1From 724283a55e8928a5564722ebe9c133033b51809d Mon Sep 17 00:00:00 2001 1From 59a369094592ce96510bb421d6e494b6f36eb7b7 Mon Sep 17 00:00:00 2001
2From: Tomas Pospisek <tpo_deb@sourcepole.ch> 2From: Tomas Pospisek <tpo_deb@sourcepole.ch>
3Date: Sun, 9 Feb 2014 16:10:07 +0000 3Date: Sun, 9 Feb 2014 16:10:07 +0000
4Subject: Install authorized_keys(5) as a symlink to sshd(8) 4Subject: Install authorized_keys(5) as a symlink to sshd(8)
@@ -13,10 +13,10 @@ Patch-Name: authorized-keys-man-symlink.patch
13 1 file changed, 1 insertion(+) 13 1 file changed, 1 insertion(+)
14 14
15diff --git a/Makefile.in b/Makefile.in 15diff --git a/Makefile.in b/Makefile.in
16index 51817df..21948dd 100644 16index 00a320e1..a6eb81ec 100644
17--- a/Makefile.in 17--- a/Makefile.in
18+++ b/Makefile.in 18+++ b/Makefile.in
19@@ -327,6 +327,7 @@ install-files: 19@@ -335,6 +335,7 @@ install-files:
20 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5 20 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5
21 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5 21 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5
22 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8 22 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
diff --git a/debian/patches/debian-banner.patch b/debian/patches/debian-banner.patch
index cf4bfad50..ad842c23f 100644
--- a/debian/patches/debian-banner.patch
+++ b/debian/patches/debian-banner.patch
@@ -1,4 +1,4 @@
1From 277ad2acedde81dce324e711da116d100b47f445 Mon Sep 17 00:00:00 2001 1From 02a077d3c8f8491d277b2291d5ae538379c7ed44 Mon Sep 17 00:00:00 2001
2From: Kees Cook <kees@debian.org> 2From: Kees Cook <kees@debian.org>
3Date: Sun, 9 Feb 2014 16:10:06 +0000 3Date: Sun, 9 Feb 2014 16:10:06 +0000
4Subject: Add DebianBanner server configuration option 4Subject: Add DebianBanner server configuration option
@@ -19,43 +19,43 @@ Patch-Name: debian-banner.patch
19 4 files changed, 18 insertions(+), 1 deletion(-) 19 4 files changed, 18 insertions(+), 1 deletion(-)
20 20
21diff --git a/servconf.c b/servconf.c 21diff --git a/servconf.c b/servconf.c
22index bf9f8f7..a98b309 100644 22index 49d3bdc8..1cee3d6c 100644
23--- a/servconf.c 23--- a/servconf.c
24+++ b/servconf.c 24+++ b/servconf.c
25@@ -171,6 +171,7 @@ initialize_server_options(ServerOptions *options) 25@@ -166,6 +166,7 @@ initialize_server_options(ServerOptions *options)
26 options->ip_qos_bulk = -1;
27 options->version_addendum = NULL; 26 options->version_addendum = NULL;
28 options->fingerprint_hash = -1; 27 options->fingerprint_hash = -1;
28 options->disable_forwarding = -1;
29+ options->debian_banner = -1; 29+ options->debian_banner = -1;
30 } 30 }
31 31
32 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */ 32 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */
33@@ -359,6 +360,8 @@ fill_default_server_options(ServerOptions *options) 33@@ -339,6 +340,8 @@ fill_default_server_options(ServerOptions *options)
34 options->fwd_opts.streamlocal_bind_unlink = 0;
35 if (options->fingerprint_hash == -1)
36 options->fingerprint_hash = SSH_FP_HASH_DEFAULT; 34 options->fingerprint_hash = SSH_FP_HASH_DEFAULT;
35 if (options->disable_forwarding == -1)
36 options->disable_forwarding = 0;
37+ if (options->debian_banner == -1) 37+ if (options->debian_banner == -1)
38+ options->debian_banner = 1; 38+ options->debian_banner = 1;
39 39
40 assemble_algorithms(options); 40 assemble_algorithms(options);
41 41
42@@ -445,6 +448,7 @@ typedef enum { 42@@ -425,6 +428,7 @@ typedef enum {
43 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, 43 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC,
44 sStreamLocalBindMask, sStreamLocalBindUnlink, 44 sStreamLocalBindMask, sStreamLocalBindUnlink,
45 sAllowStreamLocalForwarding, sFingerprintHash, 45 sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding,
46+ sDebianBanner, 46+ sDebianBanner,
47 sDeprecated, sUnsupported 47 sDeprecated, sIgnore, sUnsupported
48 } ServerOpCodes; 48 } ServerOpCodes;
49 49
50@@ -596,6 +600,7 @@ static struct { 50@@ -577,6 +581,7 @@ static struct {
51 { "streamlocalbindunlink", sStreamLocalBindUnlink, SSHCFG_ALL },
52 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL }, 51 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL },
53 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, 52 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL },
53 { "disableforwarding", sDisableForwarding, SSHCFG_ALL },
54+ { "debianbanner", sDebianBanner, SSHCFG_GLOBAL }, 54+ { "debianbanner", sDebianBanner, SSHCFG_GLOBAL },
55 { NULL, sBadOption, 0 } 55 { NULL, sBadOption, 0 }
56 }; 56 };
57 57
58@@ -1903,6 +1908,10 @@ process_server_config_line(ServerOptions *options, char *line, 58@@ -1860,6 +1865,10 @@ process_server_config_line(ServerOptions *options, char *line,
59 options->fingerprint_hash = value; 59 options->fingerprint_hash = value;
60 break; 60 break;
61 61
@@ -64,13 +64,13 @@ index bf9f8f7..a98b309 100644
64+ goto parse_int; 64+ goto parse_int;
65+ 65+
66 case sDeprecated: 66 case sDeprecated:
67 logit("%s line %d: Deprecated option %s", 67 case sIgnore:
68 filename, linenum, arg); 68 case sUnsupported:
69diff --git a/servconf.h b/servconf.h 69diff --git a/servconf.h b/servconf.h
70index 778ba17..161fa37 100644 70index 90dfa4c2..913a21b3 100644
71--- a/servconf.h 71--- a/servconf.h
72+++ b/servconf.h 72+++ b/servconf.h
73@@ -197,6 +197,8 @@ typedef struct { 73@@ -191,6 +191,8 @@ typedef struct {
74 char *auth_methods[MAX_AUTH_METHODS]; 74 char *auth_methods[MAX_AUTH_METHODS];
75 75
76 int fingerprint_hash; 76 int fingerprint_hash;
@@ -80,32 +80,32 @@ index 778ba17..161fa37 100644
80 80
81 /* Information about the incoming connection as used by Match */ 81 /* Information about the incoming connection as used by Match */
82diff --git a/sshd.c b/sshd.c 82diff --git a/sshd.c b/sshd.c
83index e873557..71fad9e 100644 83index 39e4699c..747beec8 100644
84--- a/sshd.c 84--- a/sshd.c
85+++ b/sshd.c 85+++ b/sshd.c
86@@ -443,7 +443,8 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) 86@@ -378,7 +378,8 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out)
87 } 87 char remote_version[256]; /* Must be at least as big as buf. */
88 88
89 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s", 89 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s",
90- major, minor, SSH_RELEASE, 90- PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE,
91+ major, minor, 91+ PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2,
92+ options.debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM, 92+ options.debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM,
93 *options.version_addendum == '\0' ? "" : " ", 93 *options.version_addendum == '\0' ? "" : " ",
94 options.version_addendum, newline); 94 options.version_addendum, newline);
95 95
96diff --git a/sshd_config.5 b/sshd_config.5 96diff --git a/sshd_config.5 b/sshd_config.5
97index e05cdbe..ac9b1f0 100644 97index 283ba889..4ea0a9c3 100644
98--- a/sshd_config.5 98--- a/sshd_config.5
99+++ b/sshd_config.5 99+++ b/sshd_config.5
100@@ -541,6 +541,11 @@ or 100@@ -526,6 +526,11 @@ or
101 .Dq no . 101 .Cm no .
102 The default is 102 The default is
103 .Dq delayed . 103 .Cm yes .
104+.It Cm DebianBanner 104+.It Cm DebianBanner
105+Specifies whether the distribution-specified extra version suffix is 105+Specifies whether the distribution-specified extra version suffix is
106+included during initial protocol handshake. 106+included during initial protocol handshake.
107+The default is 107+The default is
108+.Dq yes . 108+.Cm yes .
109 .It Cm DenyGroups 109 .It Cm DenyGroups
110 This keyword can be followed by a list of group name patterns, separated 110 This keyword can be followed by a list of group name patterns, separated
111 by spaces. 111 by spaces.
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch
index 1d9efcbbf..8129c1e58 100644
--- a/debian/patches/debian-config.patch
+++ b/debian/patches/debian-config.patch
@@ -1,4 +1,4 @@
1From 4c914ccd85bbf391c4dc61b85e3c178fef465e3f Mon Sep 17 00:00:00 2001 1From 2103d3e5566c54e08a59be750579a249e46747d7 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:18 +0000 3Date: Sun, 9 Feb 2014 16:10:18 +0000
4Subject: Various Debian-specific configuration changes 4Subject: Various Debian-specific configuration changes
@@ -32,10 +32,10 @@ Patch-Name: debian-config.patch
32 6 files changed, 72 insertions(+), 4 deletions(-) 32 6 files changed, 72 insertions(+), 4 deletions(-)
33 33
34diff --git a/readconf.c b/readconf.c 34diff --git a/readconf.c b/readconf.c
35index f6b4c8f..5cd51f3 100644 35index c02cdf63..d1091cbd 100644
36--- a/readconf.c 36--- a/readconf.c
37+++ b/readconf.c 37+++ b/readconf.c
38@@ -1928,7 +1928,7 @@ fill_default_options(Options * options) 38@@ -1927,7 +1927,7 @@ fill_default_options(Options * options)
39 if (options->forward_x11 == -1) 39 if (options->forward_x11 == -1)
40 options->forward_x11 = 0; 40 options->forward_x11 = 0;
41 if (options->forward_x11_trusted == -1) 41 if (options->forward_x11_trusted == -1)
@@ -45,7 +45,7 @@ index f6b4c8f..5cd51f3 100644
45 options->forward_x11_timeout = 1200; 45 options->forward_x11_timeout = 1200;
46 /* 46 /*
47diff --git a/ssh.1 b/ssh.1 47diff --git a/ssh.1 b/ssh.1
48index 22e56a7..6aa57c4 100644 48index 22e56a7b..6aa57c46 100644
49--- a/ssh.1 49--- a/ssh.1
50+++ b/ssh.1 50+++ b/ssh.1
51@@ -785,6 +785,16 @@ directive in 51@@ -785,6 +785,16 @@ directive in
@@ -84,7 +84,7 @@ index 22e56a7..6aa57c4 100644
84 Send log information using the 84 Send log information using the
85 .Xr syslog 3 85 .Xr syslog 3
86diff --git a/ssh_config b/ssh_config 86diff --git a/ssh_config b/ssh_config
87index 4e879cd..5190b06 100644 87index 4e879cd2..5190b06b 100644
88--- a/ssh_config 88--- a/ssh_config
89+++ b/ssh_config 89+++ b/ssh_config
90@@ -17,9 +17,10 @@ 90@@ -17,9 +17,10 @@
@@ -108,7 +108,7 @@ index 4e879cd..5190b06 100644
108+ GSSAPIAuthentication yes 108+ GSSAPIAuthentication yes
109+ GSSAPIDelegateCredentials no 109+ GSSAPIDelegateCredentials no
110diff --git a/ssh_config.5 b/ssh_config.5 110diff --git a/ssh_config.5 b/ssh_config.5
111index 30c97a9..c967258 100644 111index 40617be4..8dce757e 100644
112--- a/ssh_config.5 112--- a/ssh_config.5
113+++ b/ssh_config.5 113+++ b/ssh_config.5
114@@ -74,6 +74,22 @@ Since the first obtained value for each parameter is used, more 114@@ -74,6 +74,22 @@ Since the first obtained value for each parameter is used, more
@@ -131,24 +131,28 @@ index 30c97a9..c967258 100644
131+.Cm GSSAPIAuthentication No yes 131+.Cm GSSAPIAuthentication No yes
132+.El 132+.El
133+.Pp 133+.Pp
134 The configuration file has the following format: 134 The file contains keyword-argument pairs, one per line.
135 Lines starting with
136 .Ql #
137@@ -711,11 +727,12 @@ elapsed.
138 .It Cm ForwardX11Trusted
139 If this option is set to
140 .Cm yes ,
141+(the Debian-specific default),
142 remote X11 clients will have full access to the original X11 display.
135 .Pp 143 .Pp
136 Empty lines and lines starting with 144 If this option is set to
137@@ -799,7 +815,8 @@ token used for the session will be set to expire after 20 minutes. 145 .Cm no
138 Remote clients will be refused access after this time. 146-(the default),
139 .Pp 147+(the upstream default),
140 The default is 148 remote X11 clients will be considered untrusted and prevented
141-.Dq no . 149 from stealing or tampering with data belonging to trusted X11
142+.Dq yes 150 clients.
143+(Debian-specific).
144 .Pp
145 See the X11 SECURITY extension specification for full details on
146 the restrictions imposed on untrusted clients.
147diff --git a/sshd_config b/sshd_config 151diff --git a/sshd_config b/sshd_config
148index 3fe3e01..ec8ff8f 100644 152index 00e5a728..c0b84f8e 100644
149--- a/sshd_config 153--- a/sshd_config
150+++ b/sshd_config 154+++ b/sshd_config
151@@ -124,7 +124,7 @@ AuthorizedKeysFile .ssh/authorized_keys 155@@ -111,7 +111,7 @@ AuthorizedKeysFile .ssh/authorized_keys
152 #Banner none 156 #Banner none
153 157
154 # override default of no subsystems 158 # override default of no subsystems
@@ -158,7 +162,7 @@ index 3fe3e01..ec8ff8f 100644
158 # Example of overriding settings on a per-user basis 162 # Example of overriding settings on a per-user basis
159 #Match User anoncvs 163 #Match User anoncvs
160diff --git a/sshd_config.5 b/sshd_config.5 164diff --git a/sshd_config.5 b/sshd_config.5
161index b2b349e..79f2d61 100644 165index e45a8937..d6911a98 100644
162--- a/sshd_config.5 166--- a/sshd_config.5
163+++ b/sshd_config.5 167+++ b/sshd_config.5
164@@ -57,6 +57,31 @@ Arguments may optionally be enclosed in double quotes 168@@ -57,6 +57,31 @@ Arguments may optionally be enclosed in double quotes
diff --git a/debian/patches/dnssec-sshfp.patch b/debian/patches/dnssec-sshfp.patch
index e4498fb48..f85eaadd9 100644
--- a/debian/patches/dnssec-sshfp.patch
+++ b/debian/patches/dnssec-sshfp.patch
@@ -1,4 +1,4 @@
1From 9d9a37bb0c2d7546253ff2b0b67e314d8475bfc7 Mon Sep 17 00:00:00 2001 1From cb15899de8dc5d2e8b3869d743307d252af69643 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:01 +0000 3Date: Sun, 9 Feb 2014 16:10:01 +0000
4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf 4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf
@@ -18,7 +18,7 @@ Patch-Name: dnssec-sshfp.patch
18 3 files changed, 21 insertions(+), 6 deletions(-) 18 3 files changed, 21 insertions(+), 6 deletions(-)
19 19
20diff --git a/dns.c b/dns.c 20diff --git a/dns.c b/dns.c
21index e813afe..fce2e30 100644 21index e813afea..fce2e308 100644
22--- a/dns.c 22--- a/dns.c
23+++ b/dns.c 23+++ b/dns.c
24@@ -206,6 +206,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, 24@@ -206,6 +206,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address,
@@ -51,7 +51,7 @@ index e813afe..fce2e30 100644
51 verbose("DNS lookup error: %s", dns_result_totext(result)); 51 verbose("DNS lookup error: %s", dns_result_totext(result));
52 return -1; 52 return -1;
53diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c 53diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c
54index dc6fe05..e061a29 100644 54index dc6fe053..e061a290 100644
55--- a/openbsd-compat/getrrsetbyname.c 55--- a/openbsd-compat/getrrsetbyname.c
56+++ b/openbsd-compat/getrrsetbyname.c 56+++ b/openbsd-compat/getrrsetbyname.c
57@@ -209,8 +209,8 @@ getrrsetbyname(const char *hostname, unsigned int rdclass, 57@@ -209,8 +209,8 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
@@ -79,7 +79,7 @@ index dc6fe05..e061a29 100644
79 79
80 /* make query */ 80 /* make query */
81diff --git a/openbsd-compat/getrrsetbyname.h b/openbsd-compat/getrrsetbyname.h 81diff --git a/openbsd-compat/getrrsetbyname.h b/openbsd-compat/getrrsetbyname.h
82index 1283f55..dbbc85a 100644 82index 1283f550..dbbc85a2 100644
83--- a/openbsd-compat/getrrsetbyname.h 83--- a/openbsd-compat/getrrsetbyname.h
84+++ b/openbsd-compat/getrrsetbyname.h 84+++ b/openbsd-compat/getrrsetbyname.h
85@@ -72,6 +72,9 @@ 85@@ -72,6 +72,9 @@
diff --git a/debian/patches/doc-hash-tab-completion.patch b/debian/patches/doc-hash-tab-completion.patch
index 5f91cadfe..9d03ff54e 100644
--- a/debian/patches/doc-hash-tab-completion.patch
+++ b/debian/patches/doc-hash-tab-completion.patch
@@ -1,4 +1,4 @@
1From bfea780bba64294541d98efcc26b01392ff64c60 Mon Sep 17 00:00:00 2001 1From 9d1bb4df39e51955442e82d8764827abdd2651c9 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:11 +0000 3Date: Sun, 9 Feb 2014 16:10:11 +0000
4Subject: Document that HashKnownHosts may break tab-completion 4Subject: Document that HashKnownHosts may break tab-completion
@@ -13,10 +13,10 @@ Patch-Name: doc-hash-tab-completion.patch
13 1 file changed, 3 insertions(+) 13 1 file changed, 3 insertions(+)
14 14
15diff --git a/ssh_config.5 b/ssh_config.5 15diff --git a/ssh_config.5 b/ssh_config.5
16index 5dd26bc..30c97a9 100644 16index f62ea6b8..40617be4 100644
17--- a/ssh_config.5 17--- a/ssh_config.5
18+++ b/ssh_config.5 18+++ b/ssh_config.5
19@@ -883,6 +883,9 @@ Note that existing names and addresses in known hosts files 19@@ -805,6 +805,9 @@ Note that existing names and addresses in known hosts files
20 will not be converted automatically, 20 will not be converted automatically,
21 but may be manually hashed using 21 but may be manually hashed using
22 .Xr ssh-keygen 1 . 22 .Xr ssh-keygen 1 .
diff --git a/debian/patches/doc-upstart.patch b/debian/patches/doc-upstart.patch
index 8f093d80c..67906f19a 100644
--- a/debian/patches/doc-upstart.patch
+++ b/debian/patches/doc-upstart.patch
@@ -1,4 +1,4 @@
1From e4ba4e1616d372522de9e18f0973ed49a5521b95 Mon Sep 17 00:00:00 2001 1From d52a0f1744dde27a36c3ee8314fbbab8c1a2216f Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:12 +0000 3Date: Sun, 9 Feb 2014 16:10:12 +0000
4Subject: Refer to ssh's Upstart job as well as its init script 4Subject: Refer to ssh's Upstart job as well as its init script
@@ -12,10 +12,10 @@ Patch-Name: doc-upstart.patch
12 1 file changed, 4 insertions(+), 1 deletion(-) 12 1 file changed, 4 insertions(+), 1 deletion(-)
13 13
14diff --git a/sshd.8 b/sshd.8 14diff --git a/sshd.8 b/sshd.8
15index 58eefe9..4e75567 100644 15index e6915141..38a72540 100644
16--- a/sshd.8 16--- a/sshd.8
17+++ b/sshd.8 17+++ b/sshd.8
18@@ -67,7 +67,10 @@ over an insecure network. 18@@ -65,7 +65,10 @@ over an insecure network.
19 .Nm 19 .Nm
20 listens for connections from clients. 20 listens for connections from clients.
21 It is normally started at boot from 21 It is normally started at boot from
diff --git a/debian/patches/fix-putty-interop-tests.patch b/debian/patches/fix-putty-interop-tests.patch
deleted file mode 100644
index c33c24acc..000000000
--- a/debian/patches/fix-putty-interop-tests.patch
+++ /dev/null
@@ -1,113 +0,0 @@
1From 9c88f6248e9da14cb7916527862f2eac7f55b12a Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org>
3Date: Sat, 19 Nov 2016 16:02:49 +0000
4Subject: Fix PuTTY interop tests
5
6A while back I got a patch into PuTTY (although it hasn't yet made it
7into an upstream release) to add passphrase-file options to puttygen.
8Use these to make the PuTTY interop tests non-interactive.
9
10Fix up a few details of the saved session.
11
12When plink is given a saved session name, it expects that *instead* of
13the host name (or IP address), not in addition to it. Drop "127.0.0.1"
14from the various plink test command lines.
15
16(It is possible that the last two of these represent compatibility
17breaks of some kind; but if they are, then that ship sailed sufficiently
18long ago - at least seven years, possibly more - that it's no longer
19worth worrying about it. It's more useful to test interoperability with
20current versions.)
21
22Origin: https://bugzilla.mindrot.org/attachment.cgi?id=2891
23Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2639
24Last-Update: 2016-11-19
25
26Patch-Name: fix-putty-interop-tests.patch
27---
28 regress/putty-ciphers.sh | 2 +-
29 regress/putty-kex.sh | 3 +--
30 regress/putty-transfer.sh | 4 ++--
31 regress/test-exec.sh | 10 ++++++++--
32 4 files changed, 12 insertions(+), 7 deletions(-)
33
34diff --git a/regress/putty-ciphers.sh b/regress/putty-ciphers.sh
35index 724a98c..3775b1d 100644
36--- a/regress/putty-ciphers.sh
37+++ b/regress/putty-ciphers.sh
38@@ -16,7 +16,7 @@ for c in aes blowfish 3des arcfour aes128-ctr aes192-ctr aes256-ctr ; do
39
40 rm -f ${COPY}
41 env HOME=$PWD ${PLINK} -load cipher_$c -batch -i putty.rsa2 \
42- 127.0.0.1 cat ${DATA} > ${COPY}
43+ cat ${DATA} > ${COPY}
44 if [ $? -ne 0 ]; then
45 fail "ssh cat $DATA failed"
46 fi
47diff --git a/regress/putty-kex.sh b/regress/putty-kex.sh
48index 1844d65..6ae2290 100644
49--- a/regress/putty-kex.sh
50+++ b/regress/putty-kex.sh
51@@ -14,8 +14,7 @@ for k in dh-gex-sha1 dh-group1-sha1 dh-group14-sha1 ; do
52 ${OBJ}/.putty/sessions/kex_$k
53 echo "KEX=$k" >> ${OBJ}/.putty/sessions/kex_$k
54
55- env HOME=$PWD ${PLINK} -load kex_$k -batch -i putty.rsa2 \
56- 127.0.0.1 true
57+ env HOME=$PWD ${PLINK} -load kex_$k -batch -i putty.rsa2 true
58 if [ $? -ne 0 ]; then
59 fail "KEX $k failed"
60 fi
61diff --git a/regress/putty-transfer.sh b/regress/putty-transfer.sh
62index aec0e04..cb1da94 100644
63--- a/regress/putty-transfer.sh
64+++ b/regress/putty-transfer.sh
65@@ -17,7 +17,7 @@ for p in 2; do
66 ${OBJ}/.putty/sessions/compression_$c
67 echo "Compression=$c" >> ${OBJ}/.putty/sessions/kex_$k
68 env HOME=$PWD ${PLINK} -load compression_$c -batch \
69- -i putty.rsa$p 127.0.0.1 cat ${DATA} > ${COPY}
70+ -i putty.rsa$p cat ${DATA} > ${COPY}
71 if [ $? -ne 0 ]; then
72 fail "ssh cat $DATA failed"
73 fi
74@@ -28,7 +28,7 @@ for p in 2; do
75 rm -f ${COPY}
76 dd if=$DATA obs=${s} 2> /dev/null | \
77 env HOME=$PWD ${PLINK} -load compression_$c \
78- -batch -i putty.rsa$p 127.0.0.1 \
79+ -batch -i putty.rsa$p \
80 "cat > ${COPY}"
81 if [ $? -ne 0 ]; then
82 fail "ssh cat $DATA failed"
83diff --git a/regress/test-exec.sh b/regress/test-exec.sh
84index 1b6526d..74b365c 100644
85--- a/regress/test-exec.sh
86+++ b/regress/test-exec.sh
87@@ -513,7 +513,11 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then
88
89 # Add a PuTTY key to authorized_keys
90 rm -f ${OBJ}/putty.rsa2
91- puttygen -t rsa -o ${OBJ}/putty.rsa2 < /dev/null > /dev/null
92+ if ! puttygen -t rsa -o ${OBJ}/putty.rsa2 \
93+ --new-passphrase /dev/null < /dev/null > /dev/null; then
94+ echo "Your installed version of PuTTY is too old to support --new-passphrase; trying without (may require manual interaction) ..." >&2
95+ puttygen -t rsa -o ${OBJ}/putty.rsa2 < /dev/null > /dev/null
96+ fi
97 puttygen -O public-openssh ${OBJ}/putty.rsa2 \
98 >> $OBJ/authorized_keys_$USER
99
100@@ -526,10 +530,12 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then
101 # Setup proxied session
102 mkdir -p ${OBJ}/.putty/sessions
103 rm -f ${OBJ}/.putty/sessions/localhost_proxy
104- echo "Hostname=127.0.0.1" >> ${OBJ}/.putty/sessions/localhost_proxy
105+ echo "Protocol=ssh" >> ${OBJ}/.putty/sessions/localhost_proxy
106+ echo "HostName=127.0.0.1" >> ${OBJ}/.putty/sessions/localhost_proxy
107 echo "PortNumber=$PORT" >> ${OBJ}/.putty/sessions/localhost_proxy
108 echo "ProxyMethod=5" >> ${OBJ}/.putty/sessions/localhost_proxy
109 echo "ProxyTelnetCommand=sh ${SRC}/sshd-log-wrapper.sh ${TEST_SSHD_LOGFILE} ${SSHD} -i -f $OBJ/sshd_proxy" >> ${OBJ}/.putty/sessions/localhost_proxy
110+ echo "ProxyLocalhost=1" >> ${OBJ}/.putty/sessions/localhost_proxy
111
112 REGRESS_INTEROP_PUTTY=yes
113 fi
diff --git a/debian/patches/gnome-ssh-askpass2-icon.patch b/debian/patches/gnome-ssh-askpass2-icon.patch
index c34441df3..8d4199907 100644
--- a/debian/patches/gnome-ssh-askpass2-icon.patch
+++ b/debian/patches/gnome-ssh-askpass2-icon.patch
@@ -1,4 +1,4 @@
1From db85bf41862b80b0447777d942a091cd3ac5f1c1 Mon Sep 17 00:00:00 2001 1From 39cb522642f428a818ef2cd56c39de4783da0b6e Mon Sep 17 00:00:00 2001
2From: Vincent Untz <vuntz@ubuntu.com> 2From: Vincent Untz <vuntz@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:16 +0000 3Date: Sun, 9 Feb 2014 16:10:16 +0000
4Subject: Give the ssh-askpass-gnome window a default icon 4Subject: Give the ssh-askpass-gnome window a default icon
@@ -12,10 +12,10 @@ Patch-Name: gnome-ssh-askpass2-icon.patch
12 1 file changed, 2 insertions(+) 12 1 file changed, 2 insertions(+)
13 13
14diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c 14diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c
15index 9d97c30..04b3a11 100644 15index 535a6927..e37a1338 100644
16--- a/contrib/gnome-ssh-askpass2.c 16--- a/contrib/gnome-ssh-askpass2.c
17+++ b/contrib/gnome-ssh-askpass2.c 17+++ b/contrib/gnome-ssh-askpass2.c
18@@ -209,6 +209,8 @@ main(int argc, char **argv) 18@@ -211,6 +211,8 @@ main(int argc, char **argv)
19 19
20 gtk_init(&argc, &argv); 20 gtk_init(&argc, &argv);
21 21
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch
index 8e946aa88..ea56167d7 100644
--- a/debian/patches/gssapi.patch
+++ b/debian/patches/gssapi.patch
@@ -1,4 +1,4 @@
1From eecddf8b72fcad83ccca43b1badb03782704f6b7 Mon Sep 17 00:00:00 2001 1From 9f717de15a8e113f7c6a3db52d75ce0172885f95 Mon Sep 17 00:00:00 2001
2From: Simon Wilkinson <simon@sxw.org.uk> 2From: Simon Wilkinson <simon@sxw.org.uk>
3Date: Sun, 9 Feb 2014 16:09:48 +0000 3Date: Sun, 9 Feb 2014 16:09:48 +0000
4Subject: GSSAPI key exchange support 4Subject: GSSAPI key exchange support
@@ -39,7 +39,7 @@ Patch-Name: gssapi.patch
39 kex.h | 14 +++ 39 kex.h | 14 +++
40 kexgssc.c | 338 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 40 kexgssc.c | 338 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
41 kexgsss.c | 295 ++++++++++++++++++++++++++++++++++++++++++++++++ 41 kexgsss.c | 295 ++++++++++++++++++++++++++++++++++++++++++++++++
42 monitor.c | 108 +++++++++++++++++- 42 monitor.c | 115 +++++++++++++++++--
43 monitor.h | 3 + 43 monitor.h | 3 +
44 monitor_wrap.c | 47 +++++++- 44 monitor_wrap.c | 47 +++++++-
45 monitor_wrap.h | 4 +- 45 monitor_wrap.h | 4 +-
@@ -56,14 +56,14 @@ Patch-Name: gssapi.patch
56 sshd_config.5 | 10 ++ 56 sshd_config.5 | 10 ++
57 sshkey.c | 3 +- 57 sshkey.c | 3 +-
58 sshkey.h | 1 + 58 sshkey.h | 1 +
59 35 files changed, 2054 insertions(+), 139 deletions(-) 59 35 files changed, 2053 insertions(+), 147 deletions(-)
60 create mode 100644 ChangeLog.gssapi 60 create mode 100644 ChangeLog.gssapi
61 create mode 100644 kexgssc.c 61 create mode 100644 kexgssc.c
62 create mode 100644 kexgsss.c 62 create mode 100644 kexgsss.c
63 63
64diff --git a/ChangeLog.gssapi b/ChangeLog.gssapi 64diff --git a/ChangeLog.gssapi b/ChangeLog.gssapi
65new file mode 100644 65new file mode 100644
66index 0000000..f117a33 66index 00000000..f117a336
67--- /dev/null 67--- /dev/null
68+++ b/ChangeLog.gssapi 68+++ b/ChangeLog.gssapi
69@@ -0,0 +1,113 @@ 69@@ -0,0 +1,113 @@
@@ -181,7 +181,7 @@ index 0000000..f117a33
181+ (from jbasney AT ncsa.uiuc.edu) 181+ (from jbasney AT ncsa.uiuc.edu)
182+ <gssapi-with-mic support is Bugzilla #1008> 182+ <gssapi-with-mic support is Bugzilla #1008>
183diff --git a/Makefile.in b/Makefile.in 183diff --git a/Makefile.in b/Makefile.in
184index 12991cd..51817df 100644 184index e10f3742..00a320e1 100644
185--- a/Makefile.in 185--- a/Makefile.in
186+++ b/Makefile.in 186+++ b/Makefile.in
187@@ -92,6 +92,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ 187@@ -92,6 +92,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
@@ -192,17 +192,17 @@ index 12991cd..51817df 100644
192 platform-pledge.o platform-tracing.o 192 platform-pledge.o platform-tracing.o
193 193
194 SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \ 194 SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
195@@ -105,7 +106,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \ 195@@ -105,7 +106,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
196 auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ 196 auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
197 auth2-none.o auth2-passwd.o auth2-pubkey.o \ 197 auth2-none.o auth2-passwd.o auth2-pubkey.o \
198 monitor_mm.o monitor.o monitor_wrap.o auth-krb5.o \ 198 monitor.o monitor_wrap.o auth-krb5.o \
199- auth2-gss.o gss-serv.o gss-serv-krb5.o \ 199- auth2-gss.o gss-serv.o gss-serv-krb5.o \
200+ auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o \ 200+ auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o \
201 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ 201 loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \
202 sftp-server.o sftp-common.o \ 202 sftp-server.o sftp-common.o \
203 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \ 203 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
204diff --git a/auth-krb5.c b/auth-krb5.c 204diff --git a/auth-krb5.c b/auth-krb5.c
205index a5a81ed..38e7fee 100644 205index a5a81ed2..38e7fee2 100644
206--- a/auth-krb5.c 206--- a/auth-krb5.c
207+++ b/auth-krb5.c 207+++ b/auth-krb5.c
208@@ -182,8 +182,13 @@ auth_krb5_password(Authctxt *authctxt, const char *password) 208@@ -182,8 +182,13 @@ auth_krb5_password(Authctxt *authctxt, const char *password)
@@ -253,10 +253,10 @@ index a5a81ed..38e7fee 100644
253 return (krb5_cc_resolve(ctx, ccname, ccache)); 253 return (krb5_cc_resolve(ctx, ccname, ccache));
254 } 254 }
255diff --git a/auth.c b/auth.c 255diff --git a/auth.c b/auth.c
256index 24527dd..f56dcc6 100644 256index 6ee6116d..c6390687 100644
257--- a/auth.c 257--- a/auth.c
258+++ b/auth.c 258+++ b/auth.c
259@@ -363,7 +363,8 @@ auth_root_allowed(const char *method) 259@@ -372,7 +372,8 @@ auth_root_allowed(const char *method)
260 case PERMIT_NO_PASSWD: 260 case PERMIT_NO_PASSWD:
261 if (strcmp(method, "publickey") == 0 || 261 if (strcmp(method, "publickey") == 0 ||
262 strcmp(method, "hostbased") == 0 || 262 strcmp(method, "hostbased") == 0 ||
@@ -266,7 +266,7 @@ index 24527dd..f56dcc6 100644
266 return 1; 266 return 1;
267 break; 267 break;
268 case PERMIT_FORCED_ONLY: 268 case PERMIT_FORCED_ONLY:
269@@ -786,99 +787,6 @@ fakepw(void) 269@@ -795,99 +796,6 @@ fakepw(void)
270 } 270 }
271 271
272 /* 272 /*
@@ -367,7 +367,7 @@ index 24527dd..f56dcc6 100644
367 * connection. The host name is cached, so it is efficient to call this 367 * connection. The host name is cached, so it is efficient to call this
368 * several times. 368 * several times.
369diff --git a/auth2-gss.c b/auth2-gss.c 369diff --git a/auth2-gss.c b/auth2-gss.c
370index 1ca8357..3b5036d 100644 370index 1ca83577..3b5036df 100644
371--- a/auth2-gss.c 371--- a/auth2-gss.c
372+++ b/auth2-gss.c 372+++ b/auth2-gss.c
373@@ -1,7 +1,7 @@ 373@@ -1,7 +1,7 @@
@@ -454,7 +454,7 @@ index 1ca8357..3b5036d 100644
454 "gssapi-with-mic", 454 "gssapi-with-mic",
455 userauth_gssapi, 455 userauth_gssapi,
456diff --git a/auth2.c b/auth2.c 456diff --git a/auth2.c b/auth2.c
457index 9108b86..ce0d376 100644 457index 9108b861..ce0d3760 100644
458--- a/auth2.c 458--- a/auth2.c
459+++ b/auth2.c 459+++ b/auth2.c
460@@ -70,6 +70,7 @@ extern Authmethod method_passwd; 460@@ -70,6 +70,7 @@ extern Authmethod method_passwd;
@@ -474,7 +474,7 @@ index 9108b86..ce0d376 100644
474 #endif 474 #endif
475 &method_passwd, 475 &method_passwd,
476diff --git a/canohost.c b/canohost.c 476diff --git a/canohost.c b/canohost.c
477index f71a085..404731d 100644 477index f71a0856..404731d2 100644
478--- a/canohost.c 478--- a/canohost.c
479+++ b/canohost.c 479+++ b/canohost.c
480@@ -35,6 +35,99 @@ 480@@ -35,6 +35,99 @@
@@ -578,7 +578,7 @@ index f71a085..404731d 100644
578 ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len) 578 ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len)
579 { 579 {
580diff --git a/canohost.h b/canohost.h 580diff --git a/canohost.h b/canohost.h
581index 26d6285..0cadc9f 100644 581index 26d62855..0cadc9f1 100644
582--- a/canohost.h 582--- a/canohost.h
583+++ b/canohost.h 583+++ b/canohost.h
584@@ -15,6 +15,9 @@ 584@@ -15,6 +15,9 @@
@@ -592,10 +592,10 @@ index 26d6285..0cadc9f 100644
592 int get_peer_port(int); 592 int get_peer_port(int);
593 char *get_local_ipaddr(int); 593 char *get_local_ipaddr(int);
594diff --git a/clientloop.c b/clientloop.c 594diff --git a/clientloop.c b/clientloop.c
595index 2c44f5d..421241f 100644 595index 4289a408..99c68b69 100644
596--- a/clientloop.c 596--- a/clientloop.c
597+++ b/clientloop.c 597+++ b/clientloop.c
598@@ -114,6 +114,10 @@ 598@@ -113,6 +113,10 @@
599 #include "ssherr.h" 599 #include "ssherr.h"
600 #include "hostfile.h" 600 #include "hostfile.h"
601 601
@@ -606,7 +606,7 @@ index 2c44f5d..421241f 100644
606 /* import options */ 606 /* import options */
607 extern Options options; 607 extern Options options;
608 608
609@@ -1666,9 +1670,18 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) 609@@ -1664,9 +1668,18 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
610 break; 610 break;
611 611
612 /* Do channel operations unless rekeying in progress. */ 612 /* Do channel operations unless rekeying in progress. */
@@ -627,10 +627,10 @@ index 2c44f5d..421241f 100644
627 client_process_net_input(readset); 627 client_process_net_input(readset);
628 628
629diff --git a/config.h.in b/config.h.in 629diff --git a/config.h.in b/config.h.in
630index 39d018f..d7caf9a 100644 630index 75e02ab4..afe540e9 100644
631--- a/config.h.in 631--- a/config.h.in
632+++ b/config.h.in 632+++ b/config.h.in
633@@ -1668,6 +1668,9 @@ 633@@ -1667,6 +1667,9 @@
634 /* Use btmp to log bad logins */ 634 /* Use btmp to log bad logins */
635 #undef USE_BTMP 635 #undef USE_BTMP
636 636
@@ -640,7 +640,7 @@ index 39d018f..d7caf9a 100644
640 /* Use libedit for sftp */ 640 /* Use libedit for sftp */
641 #undef USE_LIBEDIT 641 #undef USE_LIBEDIT
642 642
643@@ -1683,6 +1686,9 @@ 643@@ -1682,6 +1685,9 @@
644 /* Use PIPES instead of a socketpair() */ 644 /* Use PIPES instead of a socketpair() */
645 #undef USE_PIPES 645 #undef USE_PIPES
646 646
@@ -651,10 +651,10 @@ index 39d018f..d7caf9a 100644
651 #undef USE_SOLARIS_PRIVS 651 #undef USE_SOLARIS_PRIVS
652 652
653diff --git a/configure.ac b/configure.ac 653diff --git a/configure.ac b/configure.ac
654index 373d21b..894ec3b 100644 654index eb9f45dc..5fdc696c 100644
655--- a/configure.ac 655--- a/configure.ac
656+++ b/configure.ac 656+++ b/configure.ac
657@@ -632,6 +632,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 657@@ -623,6 +623,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
658 [Use tunnel device compatibility to OpenBSD]) 658 [Use tunnel device compatibility to OpenBSD])
659 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 659 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
660 [Prepend the address family to IP tunnel traffic]) 660 [Prepend the address family to IP tunnel traffic])
@@ -686,11 +686,11 @@ index 373d21b..894ec3b 100644
686 AC_CHECK_DECL([AU_IPv4], [], 686 AC_CHECK_DECL([AU_IPv4], [],
687 AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records]) 687 AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records])
688diff --git a/gss-genr.c b/gss-genr.c 688diff --git a/gss-genr.c b/gss-genr.c
689index d617d60..b4eca3f 100644 689index 62559ed9..0b3ae073 100644
690--- a/gss-genr.c 690--- a/gss-genr.c
691+++ b/gss-genr.c 691+++ b/gss-genr.c
692@@ -1,7 +1,7 @@ 692@@ -1,7 +1,7 @@
693 /* $OpenBSD: gss-genr.c,v 1.23 2015/01/20 23:14:00 deraadt Exp $ */ 693 /* $OpenBSD: gss-genr.c,v 1.24 2016/09/12 01:22:38 deraadt Exp $ */
694 694
695 /* 695 /*
696- * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. 696- * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved.
@@ -698,7 +698,7 @@ index d617d60..b4eca3f 100644
698 * 698 *
699 * Redistribution and use in source and binary forms, with or without 699 * Redistribution and use in source and binary forms, with or without
700 * modification, are permitted provided that the following conditions 700 * modification, are permitted provided that the following conditions
701@@ -41,12 +41,167 @@ 701@@ -40,12 +40,167 @@
702 #include "buffer.h" 702 #include "buffer.h"
703 #include "log.h" 703 #include "log.h"
704 #include "ssh2.h" 704 #include "ssh2.h"
@@ -866,7 +866,7 @@ index d617d60..b4eca3f 100644
866 /* Check that the OID in a data stream matches that in the context */ 866 /* Check that the OID in a data stream matches that in the context */
867 int 867 int
868 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) 868 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len)
869@@ -199,7 +354,7 @@ ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok, 869@@ -198,7 +353,7 @@ ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok,
870 } 870 }
871 871
872 ctx->major = gss_init_sec_context(&ctx->minor, 872 ctx->major = gss_init_sec_context(&ctx->minor,
@@ -875,7 +875,7 @@ index d617d60..b4eca3f 100644
875 GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG | deleg_flag, 875 GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG | deleg_flag,
876 0, NULL, recv_tok, NULL, send_tok, flags, NULL); 876 0, NULL, recv_tok, NULL, send_tok, flags, NULL);
877 877
878@@ -229,8 +384,42 @@ ssh_gssapi_import_name(Gssctxt *ctx, const char *host) 878@@ -228,8 +383,42 @@ ssh_gssapi_import_name(Gssctxt *ctx, const char *host)
879 } 879 }
880 880
881 OM_uint32 881 OM_uint32
@@ -918,7 +918,7 @@ index d617d60..b4eca3f 100644
918 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, 918 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context,
919 GSS_C_QOP_DEFAULT, buffer, hash))) 919 GSS_C_QOP_DEFAULT, buffer, hash)))
920 ssh_gssapi_error(ctx); 920 ssh_gssapi_error(ctx);
921@@ -238,6 +427,19 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) 921@@ -237,6 +426,19 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash)
922 return (ctx->major); 922 return (ctx->major);
923 } 923 }
924 924
@@ -938,7 +938,7 @@ index d617d60..b4eca3f 100644
938 void 938 void
939 ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, 939 ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service,
940 const char *context) 940 const char *context)
941@@ -251,11 +453,16 @@ ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, 941@@ -250,11 +452,16 @@ ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service,
942 } 942 }
943 943
944 int 944 int
@@ -956,7 +956,7 @@ index d617d60..b4eca3f 100644
956 956
957 /* RFC 4462 says we MUST NOT do SPNEGO */ 957 /* RFC 4462 says we MUST NOT do SPNEGO */
958 if (oid->length == spnego_oid.length && 958 if (oid->length == spnego_oid.length &&
959@@ -265,6 +472,10 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) 959@@ -264,6 +471,10 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host)
960 ssh_gssapi_build_ctx(ctx); 960 ssh_gssapi_build_ctx(ctx);
961 ssh_gssapi_set_oid(*ctx, oid); 961 ssh_gssapi_set_oid(*ctx, oid);
962 major = ssh_gssapi_import_name(*ctx, host); 962 major = ssh_gssapi_import_name(*ctx, host);
@@ -967,7 +967,7 @@ index d617d60..b4eca3f 100644
967 if (!GSS_ERROR(major)) { 967 if (!GSS_ERROR(major)) {
968 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token, 968 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token,
969 NULL); 969 NULL);
970@@ -274,10 +485,66 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) 970@@ -273,10 +484,66 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host)
971 GSS_C_NO_BUFFER); 971 GSS_C_NO_BUFFER);
972 } 972 }
973 973
@@ -1036,7 +1036,7 @@ index d617d60..b4eca3f 100644
1036+ 1036+
1037 #endif /* GSSAPI */ 1037 #endif /* GSSAPI */
1038diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c 1038diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c
1039index 795992d..fd8b371 100644 1039index 795992d9..fd8b3718 100644
1040--- a/gss-serv-krb5.c 1040--- a/gss-serv-krb5.c
1041+++ b/gss-serv-krb5.c 1041+++ b/gss-serv-krb5.c
1042@@ -1,7 +1,7 @@ 1042@@ -1,7 +1,7 @@
@@ -1162,7 +1162,7 @@ index 795992d..fd8b371 100644
1162 1162
1163 #endif /* KRB5 */ 1163 #endif /* KRB5 */
1164diff --git a/gss-serv.c b/gss-serv.c 1164diff --git a/gss-serv.c b/gss-serv.c
1165index 53993d6..2f6baf7 100644 1165index 53993d67..2f6baf70 100644
1166--- a/gss-serv.c 1166--- a/gss-serv.c
1167+++ b/gss-serv.c 1167+++ b/gss-serv.c
1168@@ -1,7 +1,7 @@ 1168@@ -1,7 +1,7 @@
@@ -1434,10 +1434,10 @@ index 53993d6..2f6baf7 100644
1434 1434
1435 #endif 1435 #endif
1436diff --git a/kex.c b/kex.c 1436diff --git a/kex.c b/kex.c
1437index 50c7a0f..c17d652 100644 1437index 6a94bc53..d8708684 100644
1438--- a/kex.c 1438--- a/kex.c
1439+++ b/kex.c 1439+++ b/kex.c
1440@@ -55,6 +55,10 @@ 1440@@ -54,6 +54,10 @@
1441 #include "sshbuf.h" 1441 #include "sshbuf.h"
1442 #include "digest.h" 1442 #include "digest.h"
1443 1443
@@ -1474,7 +1474,7 @@ index 50c7a0f..c17d652 100644
1474 return NULL; 1474 return NULL;
1475 } 1475 }
1476 1476
1477@@ -587,6 +603,9 @@ kex_free(struct kex *kex) 1477@@ -597,6 +613,9 @@ kex_free(struct kex *kex)
1478 sshbuf_free(kex->peer); 1478 sshbuf_free(kex->peer);
1479 sshbuf_free(kex->my); 1479 sshbuf_free(kex->my);
1480 free(kex->session_id); 1480 free(kex->session_id);
@@ -1485,10 +1485,10 @@ index 50c7a0f..c17d652 100644
1485 free(kex->server_version_string); 1485 free(kex->server_version_string);
1486 free(kex->failed_choice); 1486 free(kex->failed_choice);
1487diff --git a/kex.h b/kex.h 1487diff --git a/kex.h b/kex.h
1488index c351955..8ed459a 100644 1488index 3794f212..fd56171d 100644
1489--- a/kex.h 1489--- a/kex.h
1490+++ b/kex.h 1490+++ b/kex.h
1491@@ -98,6 +98,9 @@ enum kex_exchange { 1491@@ -99,6 +99,9 @@ enum kex_exchange {
1492 KEX_DH_GEX_SHA256, 1492 KEX_DH_GEX_SHA256,
1493 KEX_ECDH_SHA2, 1493 KEX_ECDH_SHA2,
1494 KEX_C25519_SHA256, 1494 KEX_C25519_SHA256,
@@ -1498,7 +1498,7 @@ index c351955..8ed459a 100644
1498 KEX_MAX 1498 KEX_MAX
1499 }; 1499 };
1500 1500
1501@@ -146,6 +149,12 @@ struct kex { 1501@@ -147,6 +150,12 @@ struct kex {
1502 u_int flags; 1502 u_int flags;
1503 int hash_alg; 1503 int hash_alg;
1504 int ec_nid; 1504 int ec_nid;
@@ -1511,7 +1511,7 @@ index c351955..8ed459a 100644
1511 char *client_version_string; 1511 char *client_version_string;
1512 char *server_version_string; 1512 char *server_version_string;
1513 char *failed_choice; 1513 char *failed_choice;
1514@@ -196,6 +205,11 @@ int kexecdh_server(struct ssh *); 1514@@ -197,6 +206,11 @@ int kexecdh_server(struct ssh *);
1515 int kexc25519_client(struct ssh *); 1515 int kexc25519_client(struct ssh *);
1516 int kexc25519_server(struct ssh *); 1516 int kexc25519_server(struct ssh *);
1517 1517
@@ -1525,7 +1525,7 @@ index c351955..8ed459a 100644
1525 const BIGNUM *, const BIGNUM *, const BIGNUM *, u_char *, size_t *); 1525 const BIGNUM *, const BIGNUM *, const BIGNUM *, u_char *, size_t *);
1526diff --git a/kexgssc.c b/kexgssc.c 1526diff --git a/kexgssc.c b/kexgssc.c
1527new file mode 100644 1527new file mode 100644
1528index 0000000..10447f2 1528index 00000000..10447f2b
1529--- /dev/null 1529--- /dev/null
1530+++ b/kexgssc.c 1530+++ b/kexgssc.c
1531@@ -0,0 +1,338 @@ 1531@@ -0,0 +1,338 @@
@@ -1869,7 +1869,7 @@ index 0000000..10447f2
1869+#endif /* GSSAPI */ 1869+#endif /* GSSAPI */
1870diff --git a/kexgsss.c b/kexgsss.c 1870diff --git a/kexgsss.c b/kexgsss.c
1871new file mode 100644 1871new file mode 100644
1872index 0000000..38ca082 1872index 00000000..38ca082b
1873--- /dev/null 1873--- /dev/null
1874+++ b/kexgsss.c 1874+++ b/kexgsss.c
1875@@ -0,0 +1,295 @@ 1875@@ -0,0 +1,295 @@
@@ -2169,10 +2169,10 @@ index 0000000..38ca082
2169+} 2169+}
2170+#endif /* GSSAPI */ 2170+#endif /* GSSAPI */
2171diff --git a/monitor.c b/monitor.c 2171diff --git a/monitor.c b/monitor.c
2172index cb57bd0..05bb48a 100644 2172index 43f48470..76d9e346 100644
2173--- a/monitor.c 2173--- a/monitor.c
2174+++ b/monitor.c 2174+++ b/monitor.c
2175@@ -158,6 +158,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *); 2175@@ -157,6 +157,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *);
2176 int mm_answer_gss_accept_ctx(int, Buffer *); 2176 int mm_answer_gss_accept_ctx(int, Buffer *);
2177 int mm_answer_gss_userok(int, Buffer *); 2177 int mm_answer_gss_userok(int, Buffer *);
2178 int mm_answer_gss_checkmic(int, Buffer *); 2178 int mm_answer_gss_checkmic(int, Buffer *);
@@ -2181,10 +2181,10 @@ index cb57bd0..05bb48a 100644
2181 #endif 2181 #endif
2182 2182
2183 #ifdef SSH_AUDIT_EVENTS 2183 #ifdef SSH_AUDIT_EVENTS
2184@@ -235,11 +237,18 @@ struct mon_table mon_dispatch_proto20[] = { 2184@@ -230,11 +232,18 @@ struct mon_table mon_dispatch_proto20[] = {
2185 {MONITOR_REQ_GSSSTEP, MON_ISAUTH, mm_answer_gss_accept_ctx}, 2185 {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx},
2186 {MONITOR_REQ_GSSUSEROK, MON_AUTH, mm_answer_gss_userok}, 2186 {MONITOR_REQ_GSSUSEROK, MON_ONCE|MON_AUTHDECIDE, mm_answer_gss_userok},
2187 {MONITOR_REQ_GSSCHECKMIC, MON_ISAUTH, mm_answer_gss_checkmic}, 2187 {MONITOR_REQ_GSSCHECKMIC, MON_ONCE, mm_answer_gss_checkmic},
2188+ {MONITOR_REQ_GSSSIGN, MON_ONCE, mm_answer_gss_sign}, 2188+ {MONITOR_REQ_GSSSIGN, MON_ONCE, mm_answer_gss_sign},
2189 #endif 2189 #endif
2190 {0, 0, NULL} 2190 {0, 0, NULL}
@@ -2200,29 +2200,29 @@ index cb57bd0..05bb48a 100644
2200 #ifdef WITH_OPENSSL 2200 #ifdef WITH_OPENSSL
2201 {MONITOR_REQ_MODULI, 0, mm_answer_moduli}, 2201 {MONITOR_REQ_MODULI, 0, mm_answer_moduli},
2202 #endif 2202 #endif
2203@@ -354,6 +363,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) 2203@@ -301,6 +310,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
2204 /* Permit requests for moduli and signatures */ 2204 /* Permit requests for moduli and signatures */
2205 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); 2205 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);
2206 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); 2206 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);
2207+#ifdef GSSAPI 2207+#ifdef GSSAPI
2208+ /* and for the GSSAPI key exchange */ 2208+ /* and for the GSSAPI key exchange */
2209+ monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); 2209+ monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);
2210+#endif 2210+#endif
2211 } else {
2212 mon_dispatch = mon_dispatch_proto15;
2213 2211
2214@@ -462,6 +475,10 @@ monitor_child_postauth(struct monitor *pmonitor) 2212 /* The first few requests do not require asynchronous access */
2215 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); 2213 while (!authenticated) {
2216 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); 2214@@ -400,6 +413,10 @@ monitor_child_postauth(struct monitor *pmonitor)
2217 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); 2215 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);
2216 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);
2217 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);
2218+#ifdef GSSAPI 2218+#ifdef GSSAPI
2219+ /* and for the GSSAPI key exchange */ 2219+ /* and for the GSSAPI key exchange */
2220+ monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); 2220+ monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);
2221+#endif 2221+#endif
2222 } else { 2222
2223 mon_dispatch = mon_dispatch_postauth15; 2223 if (!no_pty_flag) {
2224 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); 2224 monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1);
2225@@ -1876,6 +1893,13 @@ monitor_apply_keystate(struct monitor *pmonitor) 2225@@ -1601,6 +1618,13 @@ monitor_apply_keystate(struct monitor *pmonitor)
2226 # endif 2226 # endif
2227 #endif /* WITH_OPENSSL */ 2227 #endif /* WITH_OPENSSL */
2228 kex->kex[KEX_C25519_SHA256] = kexc25519_server; 2228 kex->kex[KEX_C25519_SHA256] = kexc25519_server;
@@ -2236,27 +2236,29 @@ index cb57bd0..05bb48a 100644
2236 kex->load_host_public_key=&get_hostkey_public_by_type; 2236 kex->load_host_public_key=&get_hostkey_public_by_type;
2237 kex->load_host_private_key=&get_hostkey_private_by_type; 2237 kex->load_host_private_key=&get_hostkey_private_by_type;
2238 kex->host_key_index=&get_hostkey_index; 2238 kex->host_key_index=&get_hostkey_index;
2239@@ -1975,6 +1999,9 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m) 2239@@ -1680,8 +1704,8 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m)
2240 OM_uint32 major; 2240 OM_uint32 major;
2241 u_int len; 2241 u_int len;
2242 2242
2243- if (!options.gss_authentication)
2244- fatal("%s: GSSAPI authentication not enabled", __func__);
2243+ if (!options.gss_authentication && !options.gss_keyex) 2245+ if (!options.gss_authentication && !options.gss_keyex)
2244+ fatal("In GSSAPI monitor when GSSAPI is disabled"); 2246+ fatal("%s: GSSAPI not enabled", __func__);
2245+ 2247
2246 goid.elements = buffer_get_string(m, &len); 2248 goid.elements = buffer_get_string(m, &len);
2247 goid.length = len; 2249 goid.length = len;
2248 2250@@ -1710,8 +1734,8 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2249@@ -2002,6 +2029,9 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2250 OM_uint32 flags = 0; /* GSI needs this */ 2251 OM_uint32 flags = 0; /* GSI needs this */
2251 u_int len; 2252 u_int len;
2252 2253
2254- if (!options.gss_authentication)
2255- fatal("%s: GSSAPI authentication not enabled", __func__);
2253+ if (!options.gss_authentication && !options.gss_keyex) 2256+ if (!options.gss_authentication && !options.gss_keyex)
2254+ fatal("In GSSAPI monitor when GSSAPI is disabled"); 2257+ fatal("%s: GSSAPI not enabled", __func__);
2255+ 2258
2256 in.value = buffer_get_string(m, &len); 2259 in.value = buffer_get_string(m, &len);
2257 in.length = len; 2260 in.length = len;
2258 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); 2261@@ -1730,6 +1754,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2259@@ -2019,6 +2049,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2260 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); 2262 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0);
2261 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); 2263 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);
2262 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); 2264 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1);
@@ -2264,30 +2266,33 @@ index cb57bd0..05bb48a 100644
2264 } 2266 }
2265 return (0); 2267 return (0);
2266 } 2268 }
2267@@ -2030,6 +2061,9 @@ mm_answer_gss_checkmic(int sock, Buffer *m) 2269@@ -1741,8 +1766,8 @@ mm_answer_gss_checkmic(int sock, Buffer *m)
2268 OM_uint32 ret; 2270 OM_uint32 ret;
2269 u_int len; 2271 u_int len;
2270 2272
2273- if (!options.gss_authentication)
2274- fatal("%s: GSSAPI authentication not enabled", __func__);
2271+ if (!options.gss_authentication && !options.gss_keyex) 2275+ if (!options.gss_authentication && !options.gss_keyex)
2272+ fatal("In GSSAPI monitor when GSSAPI is disabled"); 2276+ fatal("%s: GSSAPI not enabled", __func__);
2273+ 2277
2274 gssbuf.value = buffer_get_string(m, &len); 2278 gssbuf.value = buffer_get_string(m, &len);
2275 gssbuf.length = len; 2279 gssbuf.length = len;
2276 mic.value = buffer_get_string(m, &len); 2280@@ -1770,10 +1795,11 @@ mm_answer_gss_userok(int sock, Buffer *m)
2277@@ -2056,7 +2090,11 @@ mm_answer_gss_userok(int sock, Buffer *m)
2278 { 2281 {
2279 int authenticated; 2282 int authenticated;
2280 2283
2281- authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user); 2284- if (!options.gss_authentication)
2285- fatal("%s: GSSAPI authentication not enabled", __func__);
2282+ if (!options.gss_authentication && !options.gss_keyex) 2286+ if (!options.gss_authentication && !options.gss_keyex)
2283+ fatal("In GSSAPI monitor when GSSAPI is disabled"); 2287+ fatal("%s: GSSAPI not enabled", __func__);
2284+ 2288
2289- authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user);
2285+ authenticated = authctxt->valid && 2290+ authenticated = authctxt->valid &&
2286+ ssh_gssapi_userok(authctxt->user, authctxt->pw); 2291+ ssh_gssapi_userok(authctxt->user, authctxt->pw);
2287 2292
2288 buffer_clear(m); 2293 buffer_clear(m);
2289 buffer_put_int(m, authenticated); 2294 buffer_put_int(m, authenticated);
2290@@ -2069,5 +2107,73 @@ mm_answer_gss_userok(int sock, Buffer *m) 2295@@ -1786,5 +1812,76 @@ mm_answer_gss_userok(int sock, Buffer *m)
2291 /* Monitor loop will terminate if authenticated */ 2296 /* Monitor loop will terminate if authenticated */
2292 return (authenticated); 2297 return (authenticated);
2293 } 2298 }
@@ -2301,7 +2306,7 @@ index cb57bd0..05bb48a 100644
2301+ u_int len; 2306+ u_int len;
2302+ 2307+
2303+ if (!options.gss_authentication && !options.gss_keyex) 2308+ if (!options.gss_authentication && !options.gss_keyex)
2304+ fatal("In GSSAPI monitor when GSSAPI is disabled"); 2309+ fatal("%s: GSSAPI not enabled", __func__);
2305+ 2310+
2306+ data.value = buffer_get_string(m, &len); 2311+ data.value = buffer_get_string(m, &len);
2307+ data.length = len; 2312+ data.length = len;
@@ -2341,6 +2346,9 @@ index cb57bd0..05bb48a 100644
2341+ ssh_gssapi_ccache store; 2346+ ssh_gssapi_ccache store;
2342+ int ok; 2347+ int ok;
2343+ 2348+
2349+ if (!options.gss_authentication && !options.gss_keyex)
2350+ fatal("%s: GSSAPI not enabled", __func__);
2351+
2344+ store.filename = buffer_get_string(m, NULL); 2352+ store.filename = buffer_get_string(m, NULL);
2345+ store.envvar = buffer_get_string(m, NULL); 2353+ store.envvar = buffer_get_string(m, NULL);
2346+ store.envval = buffer_get_string(m, NULL); 2354+ store.envval = buffer_get_string(m, NULL);
@@ -2362,7 +2370,7 @@ index cb57bd0..05bb48a 100644
2362 #endif /* GSSAPI */ 2370 #endif /* GSSAPI */
2363 2371
2364diff --git a/monitor.h b/monitor.h 2372diff --git a/monitor.h b/monitor.h
2365index 93b8b66..bc50ade 100644 2373index d68f6745..ec41404c 100644
2366--- a/monitor.h 2374--- a/monitor.h
2367+++ b/monitor.h 2375+++ b/monitor.h
2368@@ -65,6 +65,9 @@ enum monitor_reqtype { 2376@@ -65,6 +65,9 @@ enum monitor_reqtype {
@@ -2374,12 +2382,12 @@ index 93b8b66..bc50ade 100644
2374+ 2382+
2375 }; 2383 };
2376 2384
2377 struct mm_master; 2385 struct monitor {
2378diff --git a/monitor_wrap.c b/monitor_wrap.c 2386diff --git a/monitor_wrap.c b/monitor_wrap.c
2379index 99dc13b..5a9f1b5 100644 2387index 64ff9288..d5cb640a 100644
2380--- a/monitor_wrap.c 2388--- a/monitor_wrap.c
2381+++ b/monitor_wrap.c 2389+++ b/monitor_wrap.c
2382@@ -1073,7 +1073,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) 2390@@ -924,7 +924,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic)
2383 } 2391 }
2384 2392
2385 int 2393 int
@@ -2388,7 +2396,7 @@ index 99dc13b..5a9f1b5 100644
2388 { 2396 {
2389 Buffer m; 2397 Buffer m;
2390 int authenticated = 0; 2398 int authenticated = 0;
2391@@ -1090,5 +1090,50 @@ mm_ssh_gssapi_userok(char *user) 2399@@ -941,5 +941,50 @@ mm_ssh_gssapi_userok(char *user)
2392 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); 2400 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not ");
2393 return (authenticated); 2401 return (authenticated);
2394 } 2402 }
@@ -2440,10 +2448,10 @@ index 99dc13b..5a9f1b5 100644
2440 #endif /* GSSAPI */ 2448 #endif /* GSSAPI */
2441 2449
2442diff --git a/monitor_wrap.h b/monitor_wrap.h 2450diff --git a/monitor_wrap.h b/monitor_wrap.h
2443index 9fd02b3..b5414c2 100644 2451index db5902f5..8f9dd896 100644
2444--- a/monitor_wrap.h 2452--- a/monitor_wrap.h
2445+++ b/monitor_wrap.h 2453+++ b/monitor_wrap.h
2446@@ -60,8 +60,10 @@ BIGNUM *mm_auth_rsa_generate_challenge(Key *); 2454@@ -55,8 +55,10 @@ int mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
2447 OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); 2455 OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID);
2448 OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *, 2456 OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *,
2449 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); 2457 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *);
@@ -2456,7 +2464,7 @@ index 9fd02b3..b5414c2 100644
2456 2464
2457 #ifdef USE_PAM 2465 #ifdef USE_PAM
2458diff --git a/readconf.c b/readconf.c 2466diff --git a/readconf.c b/readconf.c
2459index c177202..e019195 100644 2467index fa3fab8f..7902ef26 100644
2460--- a/readconf.c 2468--- a/readconf.c
2461+++ b/readconf.c 2469+++ b/readconf.c
2462@@ -160,6 +160,8 @@ typedef enum { 2470@@ -160,6 +160,8 @@ typedef enum {
@@ -2488,7 +2496,7 @@ index c177202..e019195 100644
2488 #endif 2496 #endif
2489 { "fallbacktorsh", oDeprecated }, 2497 { "fallbacktorsh", oDeprecated },
2490 { "usersh", oDeprecated }, 2498 { "usersh", oDeprecated },
2491@@ -962,10 +973,30 @@ parse_time: 2499@@ -961,10 +972,30 @@ parse_time:
2492 intptr = &options->gss_authentication; 2500 intptr = &options->gss_authentication;
2493 goto parse_flag; 2501 goto parse_flag;
2494 2502
@@ -2519,7 +2527,7 @@ index c177202..e019195 100644
2519 case oBatchMode: 2527 case oBatchMode:
2520 intptr = &options->batch_mode; 2528 intptr = &options->batch_mode;
2521 goto parse_flag; 2529 goto parse_flag;
2522@@ -1777,7 +1808,12 @@ initialize_options(Options * options) 2530@@ -1776,7 +1807,12 @@ initialize_options(Options * options)
2523 options->pubkey_authentication = -1; 2531 options->pubkey_authentication = -1;
2524 options->challenge_response_authentication = -1; 2532 options->challenge_response_authentication = -1;
2525 options->gss_authentication = -1; 2533 options->gss_authentication = -1;
@@ -2532,7 +2540,7 @@ index c177202..e019195 100644
2532 options->password_authentication = -1; 2540 options->password_authentication = -1;
2533 options->kbd_interactive_authentication = -1; 2541 options->kbd_interactive_authentication = -1;
2534 options->kbd_interactive_devices = NULL; 2542 options->kbd_interactive_devices = NULL;
2535@@ -1921,8 +1957,14 @@ fill_default_options(Options * options) 2543@@ -1920,8 +1956,14 @@ fill_default_options(Options * options)
2536 options->challenge_response_authentication = 1; 2544 options->challenge_response_authentication = 1;
2537 if (options->gss_authentication == -1) 2545 if (options->gss_authentication == -1)
2538 options->gss_authentication = 0; 2546 options->gss_authentication = 0;
@@ -2548,7 +2556,7 @@ index c177202..e019195 100644
2548 options->password_authentication = 1; 2556 options->password_authentication = 1;
2549 if (options->kbd_interactive_authentication == -1) 2557 if (options->kbd_interactive_authentication == -1)
2550diff --git a/readconf.h b/readconf.h 2558diff --git a/readconf.h b/readconf.h
2551index cef55f7..fd3d7c7 100644 2559index cef55f71..fd3d7c75 100644
2552--- a/readconf.h 2560--- a/readconf.h
2553+++ b/readconf.h 2561+++ b/readconf.h
2554@@ -45,7 +45,12 @@ typedef struct { 2562@@ -45,7 +45,12 @@ typedef struct {
@@ -2565,10 +2573,10 @@ index cef55f7..fd3d7c7 100644
2565 * authentication. */ 2573 * authentication. */
2566 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ 2574 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */
2567diff --git a/servconf.c b/servconf.c 2575diff --git a/servconf.c b/servconf.c
2568index 873b0d0..9b06281 100644 2576index 795ddbab..14c81fa9 100644
2569--- a/servconf.c 2577--- a/servconf.c
2570+++ b/servconf.c 2578+++ b/servconf.c
2571@@ -117,8 +117,10 @@ initialize_server_options(ServerOptions *options) 2579@@ -113,8 +113,10 @@ initialize_server_options(ServerOptions *options)
2572 options->kerberos_ticket_cleanup = -1; 2580 options->kerberos_ticket_cleanup = -1;
2573 options->kerberos_get_afs_token = -1; 2581 options->kerberos_get_afs_token = -1;
2574 options->gss_authentication=-1; 2582 options->gss_authentication=-1;
@@ -2579,7 +2587,7 @@ index 873b0d0..9b06281 100644
2579 options->password_authentication = -1; 2587 options->password_authentication = -1;
2580 options->kbd_interactive_authentication = -1; 2588 options->kbd_interactive_authentication = -1;
2581 options->challenge_response_authentication = -1; 2589 options->challenge_response_authentication = -1;
2582@@ -287,10 +289,14 @@ fill_default_server_options(ServerOptions *options) 2590@@ -267,10 +269,14 @@ fill_default_server_options(ServerOptions *options)
2583 options->kerberos_get_afs_token = 0; 2591 options->kerberos_get_afs_token = 0;
2584 if (options->gss_authentication == -1) 2592 if (options->gss_authentication == -1)
2585 options->gss_authentication = 0; 2593 options->gss_authentication = 0;
@@ -2595,7 +2603,7 @@ index 873b0d0..9b06281 100644
2595 if (options->password_authentication == -1) 2603 if (options->password_authentication == -1)
2596 options->password_authentication = 1; 2604 options->password_authentication = 1;
2597 if (options->kbd_interactive_authentication == -1) 2605 if (options->kbd_interactive_authentication == -1)
2598@@ -427,6 +433,7 @@ typedef enum { 2606@@ -407,6 +413,7 @@ typedef enum {
2599 sHostKeyAlgorithms, 2607 sHostKeyAlgorithms,
2600 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, 2608 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile,
2601 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, 2609 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
@@ -2603,7 +2611,7 @@ index 873b0d0..9b06281 100644
2603 sAcceptEnv, sPermitTunnel, 2611 sAcceptEnv, sPermitTunnel,
2604 sMatch, sPermitOpen, sForceCommand, sChrootDirectory, 2612 sMatch, sPermitOpen, sForceCommand, sChrootDirectory,
2605 sUsePrivilegeSeparation, sAllowAgentForwarding, 2613 sUsePrivilegeSeparation, sAllowAgentForwarding,
2606@@ -500,12 +507,20 @@ static struct { 2614@@ -480,12 +487,20 @@ static struct {
2607 #ifdef GSSAPI 2615 #ifdef GSSAPI
2608 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, 2616 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL },
2609 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, 2617 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL },
@@ -2624,7 +2632,7 @@ index 873b0d0..9b06281 100644
2624 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, 2632 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL },
2625 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, 2633 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL },
2626 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, 2634 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL },
2627@@ -1251,6 +1266,10 @@ process_server_config_line(ServerOptions *options, char *line, 2635@@ -1207,6 +1222,10 @@ process_server_config_line(ServerOptions *options, char *line,
2628 intptr = &options->gss_authentication; 2636 intptr = &options->gss_authentication;
2629 goto parse_flag; 2637 goto parse_flag;
2630 2638
@@ -2635,7 +2643,7 @@ index 873b0d0..9b06281 100644
2635 case sGssCleanupCreds: 2643 case sGssCleanupCreds:
2636 intptr = &options->gss_cleanup_creds; 2644 intptr = &options->gss_cleanup_creds;
2637 goto parse_flag; 2645 goto parse_flag;
2638@@ -1259,6 +1278,10 @@ process_server_config_line(ServerOptions *options, char *line, 2646@@ -1215,6 +1234,10 @@ process_server_config_line(ServerOptions *options, char *line,
2639 intptr = &options->gss_strict_acceptor; 2647 intptr = &options->gss_strict_acceptor;
2640 goto parse_flag; 2648 goto parse_flag;
2641 2649
@@ -2646,7 +2654,7 @@ index 873b0d0..9b06281 100644
2646 case sPasswordAuthentication: 2654 case sPasswordAuthentication:
2647 intptr = &options->password_authentication; 2655 intptr = &options->password_authentication;
2648 goto parse_flag; 2656 goto parse_flag;
2649@@ -2308,7 +2331,10 @@ dump_config(ServerOptions *o) 2657@@ -2248,7 +2271,10 @@ dump_config(ServerOptions *o)
2650 #endif 2658 #endif
2651 #ifdef GSSAPI 2659 #ifdef GSSAPI
2652 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); 2660 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication);
@@ -2658,10 +2666,10 @@ index 873b0d0..9b06281 100644
2658 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); 2666 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication);
2659 dump_cfg_fmtint(sKbdInteractiveAuthentication, 2667 dump_cfg_fmtint(sKbdInteractiveAuthentication,
2660diff --git a/servconf.h b/servconf.h 2668diff --git a/servconf.h b/servconf.h
2661index f4137af..778ba17 100644 2669index 5853a974..90dfa4c2 100644
2662--- a/servconf.h 2670--- a/servconf.h
2663+++ b/servconf.h 2671+++ b/servconf.h
2664@@ -118,8 +118,10 @@ typedef struct { 2672@@ -112,8 +112,10 @@ typedef struct {
2665 int kerberos_get_afs_token; /* If true, try to get AFS token if 2673 int kerberos_get_afs_token; /* If true, try to get AFS token if
2666 * authenticated with Kerberos. */ 2674 * authenticated with Kerberos. */
2667 int gss_authentication; /* If true, permit GSSAPI authentication */ 2675 int gss_authentication; /* If true, permit GSSAPI authentication */
@@ -2673,7 +2681,7 @@ index f4137af..778ba17 100644
2673 * authentication. */ 2681 * authentication. */
2674 int kbd_interactive_authentication; /* If true, permit */ 2682 int kbd_interactive_authentication; /* If true, permit */
2675diff --git a/ssh-gss.h b/ssh-gss.h 2683diff --git a/ssh-gss.h b/ssh-gss.h
2676index a99d7f0..914701b 100644 2684index a99d7f08..914701bc 100644
2677--- a/ssh-gss.h 2685--- a/ssh-gss.h
2678+++ b/ssh-gss.h 2686+++ b/ssh-gss.h
2679@@ -1,6 +1,6 @@ 2687@@ -1,6 +1,6 @@
@@ -2776,7 +2784,7 @@ index a99d7f0..914701b 100644
2776 2784
2777 #endif /* _SSH_GSS_H */ 2785 #endif /* _SSH_GSS_H */
2778diff --git a/ssh_config b/ssh_config 2786diff --git a/ssh_config b/ssh_config
2779index 90fb63f..4e879cd 100644 2787index 90fb63f0..4e879cd2 100644
2780--- a/ssh_config 2788--- a/ssh_config
2781+++ b/ssh_config 2789+++ b/ssh_config
2782@@ -26,6 +26,8 @@ 2790@@ -26,6 +26,8 @@
@@ -2789,18 +2797,18 @@ index 90fb63f..4e879cd 100644
2789 # CheckHostIP yes 2797 # CheckHostIP yes
2790 # AddressFamily any 2798 # AddressFamily any
2791diff --git a/ssh_config.5 b/ssh_config.5 2799diff --git a/ssh_config.5 b/ssh_config.5
2792index 7630e7b..707d0e1 100644 2800index 591365f3..a7703fc7 100644
2793--- a/ssh_config.5 2801--- a/ssh_config.5
2794+++ b/ssh_config.5 2802+++ b/ssh_config.5
2795@@ -826,10 +826,42 @@ The default is 2803@@ -748,10 +748,42 @@ The default is
2796 Specifies whether user authentication based on GSSAPI is allowed. 2804 Specifies whether user authentication based on GSSAPI is allowed.
2797 The default is 2805 The default is
2798 .Dq no . 2806 .Cm no .
2799+.It Cm GSSAPIKeyExchange 2807+.It Cm GSSAPIKeyExchange
2800+Specifies whether key exchange based on GSSAPI may be used. When using 2808+Specifies whether key exchange based on GSSAPI may be used. When using
2801+GSSAPI key exchange the server need not have a host key. 2809+GSSAPI key exchange the server need not have a host key.
2802+The default is 2810+The default is
2803+.Dq no . 2811+.Cm no .
2804+.It Cm GSSAPIClientIdentity 2812+.It Cm GSSAPIClientIdentity
2805+If set, specifies the GSSAPI client identity that ssh should use when 2813+If set, specifies the GSSAPI client identity that ssh should use when
2806+connecting to the server. The default is unset, which means that the default 2814+connecting to the server. The default is unset, which means that the default
@@ -2813,30 +2821,30 @@ index 7630e7b..707d0e1 100644
2813 .It Cm GSSAPIDelegateCredentials 2821 .It Cm GSSAPIDelegateCredentials
2814 Forward (delegate) credentials to the server. 2822 Forward (delegate) credentials to the server.
2815 The default is 2823 The default is
2816 .Dq no . 2824 .Cm no .
2817+.It Cm GSSAPIRenewalForcesRekey 2825+.It Cm GSSAPIRenewalForcesRekey
2818+If set to 2826+If set to
2819+.Dq yes 2827+.Cm yes
2820+then renewal of the client's GSSAPI credentials will force the rekeying of the 2828+then renewal of the client's GSSAPI credentials will force the rekeying of the
2821+ssh connection. With a compatible server, this can delegate the renewed 2829+ssh connection. With a compatible server, this can delegate the renewed
2822+credentials to a session on the server. 2830+credentials to a session on the server.
2823+The default is 2831+The default is
2824+.Dq no . 2832+.Cm no .
2825+.It Cm GSSAPITrustDns 2833+.It Cm GSSAPITrustDns
2826+Set to 2834+Set to
2827+.Dq yes 2835+.Cm yes
2828+to indicate that the DNS is trusted to securely canonicalize 2836+to indicate that the DNS is trusted to securely canonicalize
2829+the name of the host being connected to. If 2837+the name of the host being connected to. If
2830+.Dq no , 2838+.Cm no ,
2831+the hostname entered on the 2839+the hostname entered on the
2832+command line will be passed untouched to the GSSAPI library. 2840+command line will be passed untouched to the GSSAPI library.
2833+The default is 2841+The default is
2834+.Dq no . 2842+.Cm no .
2835 .It Cm HashKnownHosts 2843 .It Cm HashKnownHosts
2836 Indicates that 2844 Indicates that
2837 .Xr ssh 1 2845 .Xr ssh 1
2838diff --git a/sshconnect2.c b/sshconnect2.c 2846diff --git a/sshconnect2.c b/sshconnect2.c
2839index fae8b0f..34b9d30 100644 2847index 103a2b36..d534e619 100644
2840--- a/sshconnect2.c 2848--- a/sshconnect2.c
2841+++ b/sshconnect2.c 2849+++ b/sshconnect2.c
2842@@ -162,6 +162,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) 2850@@ -162,6 +162,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
@@ -2923,7 +2931,7 @@ index fae8b0f..34b9d30 100644
2923 #endif 2931 #endif
2924 2932
2925 void userauth(Authctxt *, char *); 2933 void userauth(Authctxt *, char *);
2926@@ -326,6 +378,11 @@ static char *authmethods_get(void); 2934@@ -327,6 +379,11 @@ static char *authmethods_get(void);
2927 2935
2928 Authmethod authmethods[] = { 2936 Authmethod authmethods[] = {
2929 #ifdef GSSAPI 2937 #ifdef GSSAPI
@@ -2935,7 +2943,7 @@ index fae8b0f..34b9d30 100644
2935 {"gssapi-with-mic", 2943 {"gssapi-with-mic",
2936 userauth_gssapi, 2944 userauth_gssapi,
2937 NULL, 2945 NULL,
2938@@ -650,25 +707,40 @@ userauth_gssapi(Authctxt *authctxt) 2946@@ -652,25 +709,40 @@ userauth_gssapi(Authctxt *authctxt)
2939 static u_int mech = 0; 2947 static u_int mech = 0;
2940 OM_uint32 min; 2948 OM_uint32 min;
2941 int ok = 0; 2949 int ok = 0;
@@ -2978,7 +2986,7 @@ index fae8b0f..34b9d30 100644
2978 if (!ok) 2986 if (!ok)
2979 return 0; 2987 return 0;
2980 2988
2981@@ -759,8 +831,8 @@ input_gssapi_response(int type, u_int32_t plen, void *ctxt) 2989@@ -761,8 +833,8 @@ input_gssapi_response(int type, u_int32_t plen, void *ctxt)
2982 { 2990 {
2983 Authctxt *authctxt = ctxt; 2991 Authctxt *authctxt = ctxt;
2984 Gssctxt *gssctxt; 2992 Gssctxt *gssctxt;
@@ -2989,7 +2997,7 @@ index fae8b0f..34b9d30 100644
2989 2997
2990 if (authctxt == NULL) 2998 if (authctxt == NULL)
2991 fatal("input_gssapi_response: no authentication context"); 2999 fatal("input_gssapi_response: no authentication context");
2992@@ -873,6 +945,48 @@ input_gssapi_error(int type, u_int32_t plen, void *ctxt) 3000@@ -875,6 +947,48 @@ input_gssapi_error(int type, u_int32_t plen, void *ctxt)
2993 free(lang); 3001 free(lang);
2994 return 0; 3002 return 0;
2995 } 3003 }
@@ -3039,10 +3047,10 @@ index fae8b0f..34b9d30 100644
3039 3047
3040 int 3048 int
3041diff --git a/sshd.c b/sshd.c 3049diff --git a/sshd.c b/sshd.c
3042index 799c771..ebb88c7 100644 3050index 1dc4d182..ec2cf976 100644
3043--- a/sshd.c 3051--- a/sshd.c
3044+++ b/sshd.c 3052+++ b/sshd.c
3045@@ -125,6 +125,10 @@ 3053@@ -123,6 +123,10 @@
3046 #include "version.h" 3054 #include "version.h"
3047 #include "ssherr.h" 3055 #include "ssherr.h"
3048 3056
@@ -3050,24 +3058,24 @@ index 799c771..ebb88c7 100644
3050+#include <Security/AuthSession.h> 3058+#include <Security/AuthSession.h>
3051+#endif 3059+#endif
3052+ 3060+
3053 #ifndef O_NOCTTY 3061 /* Re-exec fds */
3054 #define O_NOCTTY 0 3062 #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1)
3055 #endif 3063 #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2)
3056@@ -1892,10 +1896,13 @@ main(int ac, char **av) 3064@@ -1705,10 +1709,13 @@ main(int ac, char **av)
3057 logit("Disabling protocol version 1. Could not load host key"); 3065 key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp);
3058 options.protocol &= ~SSH_PROTO_1; 3066 free(fp);
3059 } 3067 }
3060+#ifndef GSSAPI 3068+#ifndef GSSAPI
3061+ /* The GSSAPI key exchange can run without a host key */ 3069+ /* The GSSAPI key exchange can run without a host key */
3062 if ((options.protocol & SSH_PROTO_2) && !sensitive_data.have_ssh2_key) { 3070 if (!sensitive_data.have_ssh2_key) {
3063 logit("Disabling protocol version 2. Could not load host key");
3064 options.protocol &= ~SSH_PROTO_2;
3065 }
3066+#endif
3067 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) {
3068 logit("sshd: no hostkeys available -- exiting."); 3071 logit("sshd: no hostkeys available -- exiting.");
3069 exit(1); 3072 exit(1);
3070@@ -2207,6 +2214,60 @@ main(int ac, char **av) 3073 }
3074+#endif
3075
3076 /*
3077 * Load certificates. They are stored in an array at identical
3078@@ -1978,6 +1985,60 @@ main(int ac, char **av)
3071 remote_ip, remote_port, laddr, ssh_local_port(ssh)); 3079 remote_ip, remote_port, laddr, ssh_local_port(ssh));
3072 free(laddr); 3080 free(laddr);
3073 3081
@@ -3128,7 +3136,7 @@ index 799c771..ebb88c7 100644
3128 /* 3136 /*
3129 * We don't want to listen forever unless the other side 3137 * We don't want to listen forever unless the other side
3130 * successfully authenticates itself. So we set up an alarm which is 3138 * successfully authenticates itself. So we set up an alarm which is
3131@@ -2631,6 +2692,48 @@ do_ssh2_kex(void) 3139@@ -2159,6 +2220,48 @@ do_ssh2_kex(void)
3132 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( 3140 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal(
3133 list_hostkey_types()); 3141 list_hostkey_types());
3134 3142
@@ -3177,7 +3185,7 @@ index 799c771..ebb88c7 100644
3177 /* start key exchange */ 3185 /* start key exchange */
3178 if ((r = kex_setup(active_state, myproposal)) != 0) 3186 if ((r = kex_setup(active_state, myproposal)) != 0)
3179 fatal("kex_setup: %s", ssh_err(r)); 3187 fatal("kex_setup: %s", ssh_err(r));
3180@@ -2648,6 +2751,13 @@ do_ssh2_kex(void) 3188@@ -2176,6 +2279,13 @@ do_ssh2_kex(void)
3181 # endif 3189 # endif
3182 #endif 3190 #endif
3183 kex->kex[KEX_C25519_SHA256] = kexc25519_server; 3191 kex->kex[KEX_C25519_SHA256] = kexc25519_server;
@@ -3192,10 +3200,10 @@ index 799c771..ebb88c7 100644
3192 kex->client_version_string=client_version_string; 3200 kex->client_version_string=client_version_string;
3193 kex->server_version_string=server_version_string; 3201 kex->server_version_string=server_version_string;
3194diff --git a/sshd_config b/sshd_config 3202diff --git a/sshd_config b/sshd_config
3195index 75ae8e7..3fe3e01 100644 3203index 9f09e4a6..00e5a728 100644
3196--- a/sshd_config 3204--- a/sshd_config
3197+++ b/sshd_config 3205+++ b/sshd_config
3198@@ -83,6 +83,8 @@ AuthorizedKeysFile .ssh/authorized_keys 3206@@ -70,6 +70,8 @@ AuthorizedKeysFile .ssh/authorized_keys
3199 # GSSAPI options 3207 # GSSAPI options
3200 #GSSAPIAuthentication no 3208 #GSSAPIAuthentication no
3201 #GSSAPICleanupCredentials yes 3209 #GSSAPICleanupCredentials yes
@@ -3205,38 +3213,38 @@ index 75ae8e7..3fe3e01 100644
3205 # Set this to 'yes' to enable PAM authentication, account processing, 3213 # Set this to 'yes' to enable PAM authentication, account processing,
3206 # and session processing. If this is enabled, PAM authentication will 3214 # and session processing. If this is enabled, PAM authentication will
3207diff --git a/sshd_config.5 b/sshd_config.5 3215diff --git a/sshd_config.5 b/sshd_config.5
3208index 1bc26ec..3b4cba9 100644 3216index 32b29d24..dd765b39 100644
3209--- a/sshd_config.5 3217--- a/sshd_config.5
3210+++ b/sshd_config.5 3218+++ b/sshd_config.5
3211@@ -632,6 +632,11 @@ The default is 3219@@ -623,6 +623,11 @@ The default is
3212 Specifies whether user authentication based on GSSAPI is allowed. 3220 Specifies whether user authentication based on GSSAPI is allowed.
3213 The default is 3221 The default is
3214 .Dq no . 3222 .Cm no .
3215+.It Cm GSSAPIKeyExchange 3223+.It Cm GSSAPIKeyExchange
3216+Specifies whether key exchange based on GSSAPI is allowed. GSSAPI key exchange 3224+Specifies whether key exchange based on GSSAPI is allowed. GSSAPI key exchange
3217+doesn't rely on ssh keys to verify host identity. 3225+doesn't rely on ssh keys to verify host identity.
3218+The default is 3226+The default is
3219+.Dq no . 3227+.Cm no .
3220 .It Cm GSSAPICleanupCredentials 3228 .It Cm GSSAPICleanupCredentials
3221 Specifies whether to automatically destroy the user's credentials cache 3229 Specifies whether to automatically destroy the user's credentials cache
3222 on logout. 3230 on logout.
3223@@ -652,6 +657,11 @@ machine's default store. 3231@@ -642,6 +647,11 @@ machine's default store.
3224 This facility is provided to assist with operation on multi homed machines. 3232 This facility is provided to assist with operation on multi homed machines.
3225 The default is 3233 The default is
3226 .Dq yes . 3234 .Cm yes .
3227+.It Cm GSSAPIStoreCredentialsOnRekey 3235+.It Cm GSSAPIStoreCredentialsOnRekey
3228+Controls whether the user's GSSAPI credentials should be updated following a 3236+Controls whether the user's GSSAPI credentials should be updated following a
3229+successful connection rekeying. This option can be used to accepted renewed 3237+successful connection rekeying. This option can be used to accepted renewed
3230+or updated credentials from a compatible client. The default is 3238+or updated credentials from a compatible client. The default is
3231+.Dq no . 3239+.Cm no .
3232 .It Cm HostbasedAcceptedKeyTypes 3240 .It Cm HostbasedAcceptedKeyTypes
3233 Specifies the key types that will be accepted for hostbased authentication 3241 Specifies the key types that will be accepted for hostbased authentication
3234 as a comma-separated pattern list. 3242 as a comma-separated pattern list.
3235diff --git a/sshkey.c b/sshkey.c 3243diff --git a/sshkey.c b/sshkey.c
3236index c9f04cd..558bbbe 100644 3244index c01da6c3..377d72fa 100644
3237--- a/sshkey.c 3245--- a/sshkey.c
3238+++ b/sshkey.c 3246+++ b/sshkey.c
3239@@ -115,6 +115,7 @@ static const struct keytype keytypes[] = { 3247@@ -114,6 +114,7 @@ static const struct keytype keytypes[] = {
3240 # endif /* OPENSSL_HAS_NISTP521 */ 3248 # endif /* OPENSSL_HAS_NISTP521 */
3241 # endif /* OPENSSL_HAS_ECC */ 3249 # endif /* OPENSSL_HAS_ECC */
3242 #endif /* WITH_OPENSSL */ 3250 #endif /* WITH_OPENSSL */
@@ -3244,7 +3252,7 @@ index c9f04cd..558bbbe 100644
3244 { NULL, NULL, -1, -1, 0, 0 } 3252 { NULL, NULL, -1, -1, 0, 0 }
3245 }; 3253 };
3246 3254
3247@@ -203,7 +204,7 @@ key_alg_list(int certs_only, int plain_only) 3255@@ -202,7 +203,7 @@ sshkey_alg_list(int certs_only, int plain_only, char sep)
3248 const struct keytype *kt; 3256 const struct keytype *kt;
3249 3257
3250 for (kt = keytypes; kt->type != -1; kt++) { 3258 for (kt = keytypes; kt->type != -1; kt++) {
@@ -3254,7 +3262,7 @@ index c9f04cd..558bbbe 100644
3254 if ((certs_only && !kt->cert) || (plain_only && kt->cert)) 3262 if ((certs_only && !kt->cert) || (plain_only && kt->cert))
3255 continue; 3263 continue;
3256diff --git a/sshkey.h b/sshkey.h 3264diff --git a/sshkey.h b/sshkey.h
3257index 8c3d866..e0caa37 100644 3265index f3936384..7eb2a139 100644
3258--- a/sshkey.h 3266--- a/sshkey.h
3259+++ b/sshkey.h 3267+++ b/sshkey.h
3260@@ -62,6 +62,7 @@ enum sshkey_types { 3268@@ -62,6 +62,7 @@ enum sshkey_types {
diff --git a/debian/patches/helpful-wait-terminate.patch b/debian/patches/helpful-wait-terminate.patch
deleted file mode 100644
index a990ca1ea..000000000
--- a/debian/patches/helpful-wait-terminate.patch
+++ /dev/null
@@ -1,26 +0,0 @@
1From 173d65e72989cba82502604da3f1336766c0cf0f Mon Sep 17 00:00:00 2001
2From: Matthew Vernon <matthew@debian.org>
3Date: Sun, 9 Feb 2014 16:09:56 +0000
4Subject: Mention ~& when waiting for forwarded connections to terminate
5
6Bug-Debian: http://bugs.debian.org/50308
7Last-Update: 2010-02-27
8
9Patch-Name: helpful-wait-terminate.patch
10---
11 serverloop.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/serverloop.c b/serverloop.c
15index 3563e5d..c4e1d1d 100644
16--- a/serverloop.c
17+++ b/serverloop.c
18@@ -687,7 +687,7 @@ server_loop(pid_t pid, int fdin_arg, int fdout_arg, int fderr_arg)
19 if (!channel_still_open())
20 break;
21 if (!waiting_termination) {
22- const char *s = "Waiting for forwarded connections to terminate...\r\n";
23+ const char *s = "Waiting for forwarded connections to terminate... (press ~& to background)\r\n";
24 char *cp;
25 waiting_termination = 1;
26 buffer_append(&stderr_buffer, s, strlen(s));
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch
index 14ab7d34f..11378586d 100644
--- a/debian/patches/keepalive-extensions.patch
+++ b/debian/patches/keepalive-extensions.patch
@@ -1,4 +1,4 @@
1From 67c34f23edbcd0f39ebc2aadae9d33950bd1f98a Mon Sep 17 00:00:00 2001 1From 8f60ff6d23d4a1f8c347cf4b95267e00116f74fa Mon Sep 17 00:00:00 2001
2From: Richard Kettlewell <rjk@greenend.org.uk> 2From: Richard Kettlewell <rjk@greenend.org.uk>
3Date: Sun, 9 Feb 2014 16:09:52 +0000 3Date: Sun, 9 Feb 2014 16:09:52 +0000
4Subject: Various keepalive extensions 4Subject: Various keepalive extensions
@@ -26,7 +26,7 @@ Patch-Name: keepalive-extensions.patch
26 3 files changed, 34 insertions(+), 4 deletions(-) 26 3 files changed, 34 insertions(+), 4 deletions(-)
27 27
28diff --git a/readconf.c b/readconf.c 28diff --git a/readconf.c b/readconf.c
29index c0b7822..3a6c67b 100644 29index c1c3aae0..3efba242 100644
30--- a/readconf.c 30--- a/readconf.c
31+++ b/readconf.c 31+++ b/readconf.c
32@@ -173,6 +173,7 @@ typedef enum { 32@@ -173,6 +173,7 @@ typedef enum {
@@ -46,7 +46,7 @@ index c0b7822..3a6c67b 100644
46 46
47 { NULL, oBadOption } 47 { NULL, oBadOption }
48 }; 48 };
49@@ -1403,6 +1406,8 @@ parse_keytypes: 49@@ -1402,6 +1405,8 @@ parse_keytypes:
50 goto parse_flag; 50 goto parse_flag;
51 51
52 case oServerAliveInterval: 52 case oServerAliveInterval:
@@ -55,7 +55,7 @@ index c0b7822..3a6c67b 100644
55 intptr = &options->server_alive_interval; 55 intptr = &options->server_alive_interval;
56 goto parse_time; 56 goto parse_time;
57 57
58@@ -2048,8 +2053,13 @@ fill_default_options(Options * options) 58@@ -2047,8 +2052,13 @@ fill_default_options(Options * options)
59 options->rekey_interval = 0; 59 options->rekey_interval = 0;
60 if (options->verify_host_key_dns == -1) 60 if (options->verify_host_key_dns == -1)
61 options->verify_host_key_dns = 0; 61 options->verify_host_key_dns = 0;
@@ -72,12 +72,12 @@ index c0b7822..3a6c67b 100644
72 options->server_alive_count_max = 3; 72 options->server_alive_count_max = 3;
73 if (options->control_master == -1) 73 if (options->control_master == -1)
74diff --git a/ssh_config.5 b/ssh_config.5 74diff --git a/ssh_config.5 b/ssh_config.5
75index 707d0e1..efc265a 100644 75index a7703fc7..32fd100d 100644
76--- a/ssh_config.5 76--- a/ssh_config.5
77+++ b/ssh_config.5 77+++ b/ssh_config.5
78@@ -268,8 +268,12 @@ The default is 78@@ -250,8 +250,12 @@ Valid arguments are
79 If set to 79 If set to
80 .Dq yes , 80 .Cm yes ,
81 passphrase/password querying will be disabled. 81 passphrase/password querying will be disabled.
82+In addition, the 82+In addition, the
83+.Cm ServerAliveInterval 83+.Cm ServerAliveInterval
@@ -87,9 +87,9 @@ index 707d0e1..efc265a 100644
87+is present to supply the password, 87+is present to supply the password,
88+and where it is desirable to detect a broken network swiftly. 88+and where it is desirable to detect a broken network swiftly.
89 The argument must be 89 The argument must be
90 .Dq yes 90 .Cm yes
91 or 91 or
92@@ -1624,7 +1628,14 @@ from the server, 92@@ -1485,7 +1489,14 @@ from the server,
93 will send a message through the encrypted 93 will send a message through the encrypted
94 channel to request a response from the server. 94 channel to request a response from the server.
95 The default 95 The default
@@ -105,7 +105,7 @@ index 707d0e1..efc265a 100644
105 .It Cm StreamLocalBindMask 105 .It Cm StreamLocalBindMask
106 Sets the octal file creation mode mask 106 Sets the octal file creation mode mask
107 .Pq umask 107 .Pq umask
108@@ -1690,6 +1701,12 @@ Specifies whether the system should send TCP keepalive messages to the 108@@ -1544,6 +1555,12 @@ Specifies whether the system should send TCP keepalive messages to the
109 other side. 109 other side.
110 If they are sent, death of the connection or crash of one 110 If they are sent, death of the connection or crash of one
111 of the machines will be properly noticed. 111 of the machines will be properly noticed.
@@ -119,13 +119,13 @@ index 707d0e1..efc265a 100644
119 connections will die if the route is down temporarily, and some people 119 connections will die if the route is down temporarily, and some people
120 find it annoying. 120 find it annoying.
121diff --git a/sshd_config.5 b/sshd_config.5 121diff --git a/sshd_config.5 b/sshd_config.5
122index 3b4cba9..e05cdbe 100644 122index dd765b39..283ba889 100644
123--- a/sshd_config.5 123--- a/sshd_config.5
124+++ b/sshd_config.5 124+++ b/sshd_config.5
125@@ -1530,6 +1530,9 @@ This avoids infinitely hanging sessions. 125@@ -1427,6 +1427,9 @@ This avoids infinitely hanging sessions.
126 .Pp 126 .Pp
127 To disable TCP keepalive messages, the value should be set to 127 To disable TCP keepalive messages, the value should be set to
128 .Dq no . 128 .Cm no .
129+.Pp 129+.Pp
130+This option was formerly called 130+This option was formerly called
131+.Cm KeepAlive . 131+.Cm KeepAlive .
diff --git a/debian/patches/mention-ssh-keygen-on-keychange.patch b/debian/patches/mention-ssh-keygen-on-keychange.patch
index 12dbaf853..943fc901d 100644
--- a/debian/patches/mention-ssh-keygen-on-keychange.patch
+++ b/debian/patches/mention-ssh-keygen-on-keychange.patch
@@ -1,4 +1,4 @@
1From 6a1979d97fbde734a745b5123130fed669bfb145 Mon Sep 17 00:00:00 2001 1From e39bf0e814394fb5a14094b651f3bf9ddec0a782 Mon Sep 17 00:00:00 2001
2From: Scott Moser <smoser@ubuntu.com> 2From: Scott Moser <smoser@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:03 +0000 3Date: Sun, 9 Feb 2014 16:10:03 +0000
4Subject: Mention ssh-keygen in ssh fingerprint changed warning 4Subject: Mention ssh-keygen in ssh fingerprint changed warning
@@ -13,10 +13,10 @@ Patch-Name: mention-ssh-keygen-on-keychange.patch
13 1 file changed, 7 insertions(+), 1 deletion(-) 13 1 file changed, 7 insertions(+), 1 deletion(-)
14 14
15diff --git a/sshconnect.c b/sshconnect.c 15diff --git a/sshconnect.c b/sshconnect.c
16index 8b8e760..fd67727 100644 16index 698a0711..1cc556e8 100644
17--- a/sshconnect.c 17--- a/sshconnect.c
18+++ b/sshconnect.c 18+++ b/sshconnect.c
19@@ -1081,9 +1081,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, 19@@ -1080,9 +1080,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
20 error("%s. This could either mean that", key_msg); 20 error("%s. This could either mean that", key_msg);
21 error("DNS SPOOFING is happening or the IP address for the host"); 21 error("DNS SPOOFING is happening or the IP address for the host");
22 error("and its host key have changed at the same time."); 22 error("and its host key have changed at the same time.");
@@ -31,7 +31,7 @@ index 8b8e760..fd67727 100644
31 } 31 }
32 /* The host key has changed. */ 32 /* The host key has changed. */
33 warn_changed_key(host_key); 33 warn_changed_key(host_key);
34@@ -1091,6 +1095,8 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, 34@@ -1090,6 +1094,8 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
35 user_hostfiles[0]); 35 user_hostfiles[0]);
36 error("Offending %s key in %s:%lu", key_type(host_found->key), 36 error("Offending %s key in %s:%lu", key_type(host_found->key),
37 host_found->file, host_found->line); 37 host_found->file, host_found->line);
diff --git a/debian/patches/no-openssl-version-status.patch b/debian/patches/no-openssl-version-status.patch
index 8503c5854..682455fe9 100644
--- a/debian/patches/no-openssl-version-status.patch
+++ b/debian/patches/no-openssl-version-status.patch
@@ -1,4 +1,4 @@
1From e7d4050d9077603c20a93bdfd6b99cd419d69f1c Mon Sep 17 00:00:00 2001 1From 27710ce6deb6e9a820235ac44dd82333ab330047 Mon Sep 17 00:00:00 2001
2From: Kurt Roeckx <kurt@roeckx.be> 2From: Kurt Roeckx <kurt@roeckx.be>
3Date: Sun, 9 Feb 2014 16:10:14 +0000 3Date: Sun, 9 Feb 2014 16:10:14 +0000
4Subject: Don't check the status field of the OpenSSL version 4Subject: Don't check the status field of the OpenSSL version
@@ -23,10 +23,10 @@ Patch-Name: no-openssl-version-status.patch
23 2 files changed, 4 insertions(+), 3 deletions(-) 23 2 files changed, 4 insertions(+), 3 deletions(-)
24 24
25diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c 25diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c
26index 63a660c..3f62403 100644 26index 259fccbe..aaa953f2 100644
27--- a/openbsd-compat/openssl-compat.c 27--- a/openbsd-compat/openssl-compat.c
28+++ b/openbsd-compat/openssl-compat.c 28+++ b/openbsd-compat/openssl-compat.c
29@@ -36,7 +36,7 @@ 29@@ -34,7 +34,7 @@
30 /* 30 /*
31 * OpenSSL version numbers: MNNFFPPS: major minor fix patch status 31 * OpenSSL version numbers: MNNFFPPS: major minor fix patch status
32 * We match major, minor, fix and status (not patch) for <1.0.0. 32 * We match major, minor, fix and status (not patch) for <1.0.0.
@@ -35,9 +35,9 @@ index 63a660c..3f62403 100644
35 * allow 1.0.1 to work with 1.0.0). Going backwards is only allowed 35 * allow 1.0.1 to work with 1.0.0). Going backwards is only allowed
36 * within a patch series. 36 * within a patch series.
37 */ 37 */
38@@ -57,10 +57,10 @@ ssh_compatible_openssl(long headerver, long libver) 38@@ -55,10 +55,10 @@ ssh_compatible_openssl(long headerver, long libver)
39 } 39 }
40 40
41 /* 41 /*
42- * For versions >= 1.0.0, major,minor,status must match and library 42- * For versions >= 1.0.0, major,minor,status must match and library
43+ * For versions >= 1.0.0, major,minor must match and library 43+ * For versions >= 1.0.0, major,minor must match and library
@@ -49,7 +49,7 @@ index 63a660c..3f62403 100644
49 lfix = (libver & 0x000ff000) >> 12; 49 lfix = (libver & 0x000ff000) >> 12;
50 if ( (headerver & mask) == (libver & mask) && lfix >= hfix) 50 if ( (headerver & mask) == (libver & mask) && lfix >= hfix)
51diff --git a/openbsd-compat/regress/opensslvertest.c b/openbsd-compat/regress/opensslvertest.c 51diff --git a/openbsd-compat/regress/opensslvertest.c b/openbsd-compat/regress/opensslvertest.c
52index 5d019b5..5847487 100644 52index 5d019b59..58474873 100644
53--- a/openbsd-compat/regress/opensslvertest.c 53--- a/openbsd-compat/regress/opensslvertest.c
54+++ b/openbsd-compat/regress/opensslvertest.c 54+++ b/openbsd-compat/regress/opensslvertest.c
55@@ -35,6 +35,7 @@ struct version_test { 55@@ -35,6 +35,7 @@ struct version_test {
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch
index 771e77216..5a6428a16 100644
--- a/debian/patches/openbsd-docs.patch
+++ b/debian/patches/openbsd-docs.patch
@@ -1,4 +1,4 @@
1From ab7ae820a882c8a51b06ec0b3522813b4e90eeff Mon Sep 17 00:00:00 2001 1From 57a5ec3553730b373c96e8457815c42733304427 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:09 +0000 3Date: Sun, 9 Feb 2014 16:10:09 +0000
4Subject: Adjust various OpenBSD-specific references in manual pages 4Subject: Adjust various OpenBSD-specific references in manual pages
@@ -22,7 +22,7 @@ Patch-Name: openbsd-docs.patch
22 5 files changed, 13 insertions(+), 15 deletions(-) 22 5 files changed, 13 insertions(+), 15 deletions(-)
23 23
24diff --git a/moduli.5 b/moduli.5 24diff --git a/moduli.5 b/moduli.5
25index ef0de08..149846c 100644 25index ef0de085..149846c8 100644
26--- a/moduli.5 26--- a/moduli.5
27+++ b/moduli.5 27+++ b/moduli.5
28@@ -21,7 +21,7 @@ 28@@ -21,7 +21,7 @@
@@ -44,7 +44,7 @@ index ef0de08..149846c 100644
44 .Sh SEE ALSO 44 .Sh SEE ALSO
45 .Xr ssh-keygen 1 , 45 .Xr ssh-keygen 1 ,
46diff --git a/ssh-keygen.1 b/ssh-keygen.1 46diff --git a/ssh-keygen.1 b/ssh-keygen.1
47index ce2213c..01711df 100644 47index ce2213c7..01711dff 100644
48--- a/ssh-keygen.1 48--- a/ssh-keygen.1
49+++ b/ssh-keygen.1 49+++ b/ssh-keygen.1
50@@ -178,9 +178,7 @@ key in 50@@ -178,9 +178,7 @@ key in
@@ -88,7 +88,7 @@ index ce2213c..01711df 100644
88 The file format is described in 88 The file format is described in
89 .Xr moduli 5 . 89 .Xr moduli 5 .
90diff --git a/ssh.1 b/ssh.1 90diff --git a/ssh.1 b/ssh.1
91index feef81a..b1f128c 100644 91index feef81a5..b1f128c2 100644
92--- a/ssh.1 92--- a/ssh.1
93+++ b/ssh.1 93+++ b/ssh.1
94@@ -877,6 +877,10 @@ implements public key authentication protocol automatically, 94@@ -877,6 +877,10 @@ implements public key authentication protocol automatically,
@@ -103,10 +103,10 @@ index feef81a..b1f128c 100644
103 .Pp 103 .Pp
104 The file 104 The file
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index 589841f..58eefe9 100644 106index c6784602..e6915141 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -67,7 +67,7 @@ over an insecure network. 109@@ -65,7 +65,7 @@ over an insecure network.
110 .Nm 110 .Nm
111 listens for connections from clients. 111 listens for connections from clients.
112 It is normally started at boot from 112 It is normally started at boot from
@@ -115,7 +115,7 @@ index 589841f..58eefe9 100644
115 It forks a new 115 It forks a new
116 daemon for each incoming connection. 116 daemon for each incoming connection.
117 The forked daemons handle 117 The forked daemons handle
118@@ -891,7 +891,7 @@ This file is for host-based authentication (see 118@@ -836,7 +836,7 @@ This file is for host-based authentication (see
119 .Xr ssh 1 ) . 119 .Xr ssh 1 ) .
120 It should only be writable by root. 120 It should only be writable by root.
121 .Pp 121 .Pp
@@ -124,7 +124,7 @@ index 589841f..58eefe9 100644
124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange" 124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange"
125 key exchange method. 125 key exchange method.
126 The file format is described in 126 The file format is described in
127@@ -993,7 +993,6 @@ The content of this file is not sensitive; it can be world-readable. 127@@ -936,7 +936,6 @@ The content of this file is not sensitive; it can be world-readable.
128 .Xr ssh-keyscan 1 , 128 .Xr ssh-keyscan 1 ,
129 .Xr chroot 2 , 129 .Xr chroot 2 ,
130 .Xr hosts_access 5 , 130 .Xr hosts_access 5 ,
@@ -133,10 +133,10 @@ index 589841f..58eefe9 100644
133 .Xr sshd_config 5 , 133 .Xr sshd_config 5 ,
134 .Xr inetd 8 , 134 .Xr inetd 8 ,
135diff --git a/sshd_config.5 b/sshd_config.5 135diff --git a/sshd_config.5 b/sshd_config.5
136index ac9b1f0..b2b349e 100644 136index 4ea0a9c3..e45a8937 100644
137--- a/sshd_config.5 137--- a/sshd_config.5
138+++ b/sshd_config.5 138+++ b/sshd_config.5
139@@ -382,8 +382,7 @@ then no banner is displayed. 139@@ -372,8 +372,7 @@ then no banner is displayed.
140 By default, no banner is displayed. 140 By default, no banner is displayed.
141 .It Cm ChallengeResponseAuthentication 141 .It Cm ChallengeResponseAuthentication
142 Specifies whether challenge-response authentication is allowed (e.g. via 142 Specifies whether challenge-response authentication is allowed (e.g. via
@@ -144,5 +144,5 @@ index ac9b1f0..b2b349e 100644
144-.Xr login.conf 5 ) 144-.Xr login.conf 5 )
145+PAM). 145+PAM).
146 The default is 146 The default is
147 .Dq yes . 147 .Cm yes .
148 .It Cm ChrootDirectory 148 .It Cm ChrootDirectory
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch
index efc629b71..7b14bcc09 100644
--- a/debian/patches/package-versioning.patch
+++ b/debian/patches/package-versioning.patch
@@ -1,4 +1,4 @@
1From c8105413361d3c97b6a2f72c9f1c85da830bed2c Mon Sep 17 00:00:00 2001 1From cdce59c8c54d6d19ca0aa86cb4a62f6df94c7245 Mon Sep 17 00:00:00 2001
2From: Matthew Vernon <matthew@debian.org> 2From: Matthew Vernon <matthew@debian.org>
3Date: Sun, 9 Feb 2014 16:10:05 +0000 3Date: Sun, 9 Feb 2014 16:10:05 +0000
4Subject: Include the Debian version in our identification 4Subject: Include the Debian version in our identification
@@ -19,10 +19,10 @@ Patch-Name: package-versioning.patch
19 3 files changed, 9 insertions(+), 4 deletions(-) 19 3 files changed, 9 insertions(+), 4 deletions(-)
20 20
21diff --git a/sshconnect.c b/sshconnect.c 21diff --git a/sshconnect.c b/sshconnect.c
22index fd67727..07dfc9d 100644 22index 1cc556e8..c64c51bb 100644
23--- a/sshconnect.c 23--- a/sshconnect.c
24+++ b/sshconnect.c 24+++ b/sshconnect.c
25@@ -527,10 +527,10 @@ send_client_banner(int connection_out, int minor1) 25@@ -526,10 +526,10 @@ send_client_banner(int connection_out, int minor1)
26 /* Send our own protocol version identification. */ 26 /* Send our own protocol version identification. */
27 if (compat20) { 27 if (compat20) {
28 xasprintf(&client_version_string, "SSH-%d.%d-%.100s\r\n", 28 xasprintf(&client_version_string, "SSH-%d.%d-%.100s\r\n",
@@ -36,24 +36,24 @@ index fd67727..07dfc9d 100644
36 if (atomicio(vwrite, connection_out, client_version_string, 36 if (atomicio(vwrite, connection_out, client_version_string,
37 strlen(client_version_string)) != strlen(client_version_string)) 37 strlen(client_version_string)) != strlen(client_version_string))
38diff --git a/sshd.c b/sshd.c 38diff --git a/sshd.c b/sshd.c
39index 76306da..e873557 100644 39index 5a3f796d..39e4699c 100644
40--- a/sshd.c 40--- a/sshd.c
41+++ b/sshd.c 41+++ b/sshd.c
42@@ -443,7 +443,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) 42@@ -378,7 +378,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out)
43 } 43 char remote_version[256]; /* Must be at least as big as buf. */
44 44
45 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s", 45 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s",
46- major, minor, SSH_VERSION, 46- PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION,
47+ major, minor, SSH_RELEASE, 47+ PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE,
48 *options.version_addendum == '\0' ? "" : " ", 48 *options.version_addendum == '\0' ? "" : " ",
49 options.version_addendum, newline); 49 options.version_addendum, newline);
50 50
51diff --git a/version.h b/version.h 51diff --git a/version.h b/version.h
52index 617ab62..fb81655 100644 52index 269ebcda..850a2f7d 100644
53--- a/version.h 53--- a/version.h
54+++ b/version.h 54+++ b/version.h
55@@ -3,4 +3,9 @@ 55@@ -3,4 +3,9 @@
56 #define SSH_VERSION "OpenSSH_7.3" 56 #define SSH_VERSION "OpenSSH_7.4"
57 57
58 #define SSH_PORTABLE "p1" 58 #define SSH_PORTABLE "p1"
59-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE 59-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/debian/patches/quieter-signals.patch b/debian/patches/quieter-signals.patch
index 36c366d95..49f1daf1c 100644
--- a/debian/patches/quieter-signals.patch
+++ b/debian/patches/quieter-signals.patch
@@ -1,4 +1,4 @@
1From 8eeec10866f78acd021824225e9d62e4a18fc2c3 Mon Sep 17 00:00:00 2001 1From 7083ae25ccce8bbdad40e7c7500f69f2c0cbce34 Mon Sep 17 00:00:00 2001
2From: Peter Samuelson <peter@p12n.org> 2From: Peter Samuelson <peter@p12n.org>
3Date: Sun, 9 Feb 2014 16:09:55 +0000 3Date: Sun, 9 Feb 2014 16:09:55 +0000
4Subject: Reduce severity of "Killed by signal %d" 4Subject: Reduce severity of "Killed by signal %d"
@@ -22,10 +22,10 @@ Patch-Name: quieter-signals.patch
22 1 file changed, 4 insertions(+), 2 deletions(-) 22 1 file changed, 4 insertions(+), 2 deletions(-)
23 23
24diff --git a/clientloop.c b/clientloop.c 24diff --git a/clientloop.c b/clientloop.c
25index 421241f..e5cc3f8 100644 25index 99c68b69..5876cc9a 100644
26--- a/clientloop.c 26--- a/clientloop.c
27+++ b/clientloop.c 27+++ b/clientloop.c
28@@ -1757,8 +1757,10 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) 28@@ -1755,8 +1755,10 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
29 exit_status = 0; 29 exit_status = 0;
30 } 30 }
31 31
diff --git a/debian/patches/restore-tcp-wrappers.patch b/debian/patches/restore-tcp-wrappers.patch
index bf3a575ad..e41b99d6e 100644
--- a/debian/patches/restore-tcp-wrappers.patch
+++ b/debian/patches/restore-tcp-wrappers.patch
@@ -1,4 +1,4 @@
1From c027de5eb3e6cb1718990841c2a9cbc89fd53151 Mon Sep 17 00:00:00 2001 1From 6a15c9b672c5833f21ed7e0cea3a25dd8de966c4 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Tue, 7 Oct 2014 13:22:41 +0100 3Date: Tue, 7 Oct 2014 13:22:41 +0100
4Subject: Restore TCP wrappers support 4Subject: Restore TCP wrappers support
@@ -28,10 +28,10 @@ Patch-Name: restore-tcp-wrappers.patch
28 3 files changed, 89 insertions(+) 28 3 files changed, 89 insertions(+)
29 29
30diff --git a/configure.ac b/configure.ac 30diff --git a/configure.ac b/configure.ac
31index 894ec3b..f822fb3 100644 31index 5fdc696c..4747ce4a 100644
32--- a/configure.ac 32--- a/configure.ac
33+++ b/configure.ac 33+++ b/configure.ac
34@@ -1510,6 +1510,62 @@ AC_ARG_WITH([skey], 34@@ -1491,6 +1491,62 @@ AC_ARG_WITH([skey],
35 ] 35 ]
36 ) 36 )
37 37
@@ -94,7 +94,7 @@ index 894ec3b..f822fb3 100644
94 # Check whether user wants to use ldns 94 # Check whether user wants to use ldns
95 LDNS_MSG="no" 95 LDNS_MSG="no"
96 AC_ARG_WITH(ldns, 96 AC_ARG_WITH(ldns,
97@@ -5059,6 +5115,7 @@ echo " KerberosV support: $KRB5_MSG" 97@@ -5105,6 +5161,7 @@ echo " KerberosV support: $KRB5_MSG"
98 echo " SELinux support: $SELINUX_MSG" 98 echo " SELinux support: $SELINUX_MSG"
99 echo " Smartcard support: $SCARD_MSG" 99 echo " Smartcard support: $SCARD_MSG"
100 echo " S/KEY support: $SKEY_MSG" 100 echo " S/KEY support: $SKEY_MSG"
@@ -103,10 +103,10 @@ index 894ec3b..f822fb3 100644
103 echo " libedit support: $LIBEDIT_MSG" 103 echo " libedit support: $LIBEDIT_MSG"
104 echo " Solaris process contract support: $SPC_MSG" 104 echo " Solaris process contract support: $SPC_MSG"
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index 6c521f2..589841f 100644 106index 41fc5051..c6784602 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -880,6 +880,12 @@ the user's home directory becomes accessible. 109@@ -825,6 +825,12 @@ the user's home directory becomes accessible.
110 This file should be writable only by the user, and need not be 110 This file should be writable only by the user, and need not be
111 readable by anyone else. 111 readable by anyone else.
112 .Pp 112 .Pp
@@ -119,7 +119,7 @@ index 6c521f2..589841f 100644
119 .It Pa /etc/hosts.equiv 119 .It Pa /etc/hosts.equiv
120 This file is for host-based authentication (see 120 This file is for host-based authentication (see
121 .Xr ssh 1 ) . 121 .Xr ssh 1 ) .
122@@ -986,6 +992,7 @@ The content of this file is not sensitive; it can be world-readable. 122@@ -929,6 +935,7 @@ The content of this file is not sensitive; it can be world-readable.
123 .Xr ssh-keygen 1 , 123 .Xr ssh-keygen 1 ,
124 .Xr ssh-keyscan 1 , 124 .Xr ssh-keyscan 1 ,
125 .Xr chroot 2 , 125 .Xr chroot 2 ,
@@ -128,10 +128,10 @@ index 6c521f2..589841f 100644
128 .Xr moduli 5 , 128 .Xr moduli 5 ,
129 .Xr sshd_config 5 , 129 .Xr sshd_config 5 ,
130diff --git a/sshd.c b/sshd.c 130diff --git a/sshd.c b/sshd.c
131index ebb88c7..982e545 100644 131index ec2cf976..4f791b92 100644
132--- a/sshd.c 132--- a/sshd.c
133+++ b/sshd.c 133+++ b/sshd.c
134@@ -129,6 +129,13 @@ 134@@ -127,6 +127,13 @@
135 #include <Security/AuthSession.h> 135 #include <Security/AuthSession.h>
136 #endif 136 #endif
137 137
@@ -142,10 +142,10 @@ index ebb88c7..982e545 100644
142+int deny_severity; 142+int deny_severity;
143+#endif /* LIBWRAP */ 143+#endif /* LIBWRAP */
144+ 144+
145 #ifndef O_NOCTTY 145 /* Re-exec fds */
146 #define O_NOCTTY 0 146 #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1)
147 #endif 147 #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2)
148@@ -2207,6 +2214,24 @@ main(int ac, char **av) 148@@ -1978,6 +1985,24 @@ main(int ac, char **av)
149 #ifdef SSH_AUDIT_EVENTS 149 #ifdef SSH_AUDIT_EVENTS
150 audit_connection_from(remote_ip, remote_port); 150 audit_connection_from(remote_ip, remote_port);
151 #endif 151 #endif
diff --git a/debian/patches/scp-quoting.patch b/debian/patches/scp-quoting.patch
index 2efc40e07..8e426db77 100644
--- a/debian/patches/scp-quoting.patch
+++ b/debian/patches/scp-quoting.patch
@@ -1,4 +1,4 @@
1From 119936d7b64829f81cbc84c2e81bf23373c6ed37 Mon Sep 17 00:00:00 2001 1From 43205c71be413d2225ce3ea5cf81d79afd420b81 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> 2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:59 +0000 3Date: Sun, 9 Feb 2014 16:09:59 +0000
4Subject: Adjust scp quoting in verbose mode 4Subject: Adjust scp quoting in verbose mode
@@ -17,10 +17,10 @@ Patch-Name: scp-quoting.patch
17 1 file changed, 10 insertions(+), 2 deletions(-) 17 1 file changed, 10 insertions(+), 2 deletions(-)
18 18
19diff --git a/scp.c b/scp.c 19diff --git a/scp.c b/scp.c
20index 43ca3fa..4a7f73a 100644 20index b4db8519..18c27720 100644
21--- a/scp.c 21--- a/scp.c
22+++ b/scp.c 22+++ b/scp.c
23@@ -192,8 +192,16 @@ do_local_cmd(arglist *a) 23@@ -191,8 +191,16 @@ do_local_cmd(arglist *a)
24 24
25 if (verbose_mode) { 25 if (verbose_mode) {
26 fprintf(stderr, "Executing:"); 26 fprintf(stderr, "Executing:");
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch
index bcb61480d..9ab9394b3 100644
--- a/debian/patches/selinux-role.patch
+++ b/debian/patches/selinux-role.patch
@@ -1,4 +1,4 @@
1From 7a7851c903e5dbb58a85014deb2c88cb718068c9 Mon Sep 17 00:00:00 2001 1From 5e4ebd6472d995738a2c67d618c4bd1ee2c00968 Mon Sep 17 00:00:00 2001
2From: Manoj Srivastava <srivasta@debian.org> 2From: Manoj Srivastava <srivasta@debian.org>
3Date: Sun, 9 Feb 2014 16:09:49 +0000 3Date: Sun, 9 Feb 2014 16:09:49 +0000
4Subject: Handle SELinux authorisation roles 4Subject: Handle SELinux authorisation roles
@@ -14,7 +14,6 @@ Last-Update: 2015-08-19
14Patch-Name: selinux-role.patch 14Patch-Name: selinux-role.patch
15--- 15---
16 auth.h | 1 + 16 auth.h | 1 +
17 auth1.c | 8 +++++++-
18 auth2.c | 10 ++++++++-- 17 auth2.c | 10 ++++++++--
19 monitor.c | 32 +++++++++++++++++++++++++++++--- 18 monitor.c | 32 +++++++++++++++++++++++++++++---
20 monitor.h | 2 ++ 19 monitor.h | 2 ++
@@ -29,10 +28,10 @@ Patch-Name: selinux-role.patch
29 sshd.c | 2 +- 28 sshd.c | 2 +-
30 sshpty.c | 4 ++-- 29 sshpty.c | 4 ++--
31 sshpty.h | 2 +- 30 sshpty.h | 2 +-
32 16 files changed, 104 insertions(+), 31 deletions(-) 31 15 files changed, 97 insertions(+), 30 deletions(-)
33 32
34diff --git a/auth.h b/auth.h 33diff --git a/auth.h b/auth.h
35index 55170af..50baeaa 100644 34index 338a62da..8c658d16 100644
36--- a/auth.h 35--- a/auth.h
37+++ b/auth.h 36+++ b/auth.h
38@@ -62,6 +62,7 @@ struct Authctxt { 37@@ -62,6 +62,7 @@ struct Authctxt {
@@ -43,39 +42,8 @@ index 55170af..50baeaa 100644
43 void *kbdintctxt; 42 void *kbdintctxt;
44 char *info; /* Extra info for next auth_log */ 43 char *info; /* Extra info for next auth_log */
45 #ifdef BSD_AUTH 44 #ifdef BSD_AUTH
46diff --git a/auth1.c b/auth1.c
47index 5073c49..dd00648 100644
48--- a/auth1.c
49+++ b/auth1.c
50@@ -383,7 +383,7 @@ void
51 do_authentication(Authctxt *authctxt)
52 {
53 u_int ulen;
54- char *user, *style = NULL;
55+ char *user, *style = NULL, *role = NULL;
56
57 /* Get the name of the user that we wish to log in as. */
58 packet_read_expect(SSH_CMSG_USER);
59@@ -392,11 +392,17 @@ do_authentication(Authctxt *authctxt)
60 user = packet_get_cstring(&ulen);
61 packet_check_eom();
62
63+ if ((role = strchr(user, '/')) != NULL)
64+ *role++ = '\0';
65+
66 if ((style = strchr(user, ':')) != NULL)
67 *style++ = '\0';
68+ else if (role && (style = strchr(role, ':')) != NULL)
69+ *style++ = '\0';
70
71 authctxt->user = user;
72 authctxt->style = style;
73+ authctxt->role = role;
74
75 /* Verify that the user is a valid user. */
76 if ((authctxt->pw = PRIVSEP(getpwnamallow(user))) != NULL)
77diff --git a/auth2.c b/auth2.c 45diff --git a/auth2.c b/auth2.c
78index ce0d376..461311b 100644 46index ce0d3760..461311bd 100644
79--- a/auth2.c 47--- a/auth2.c
80+++ b/auth2.c 48+++ b/auth2.c
81@@ -216,7 +216,7 @@ input_userauth_request(int type, u_int32_t seq, void *ctxt) 49@@ -216,7 +216,7 @@ input_userauth_request(int type, u_int32_t seq, void *ctxt)
@@ -113,10 +81,10 @@ index ce0d376..461311b 100644
113 if (auth2_setup_methods_lists(authctxt) != 0) 81 if (auth2_setup_methods_lists(authctxt) != 0)
114 packet_disconnect("no authentication methods enabled"); 82 packet_disconnect("no authentication methods enabled");
115diff --git a/monitor.c b/monitor.c 83diff --git a/monitor.c b/monitor.c
116index 05bb48a..e91054e 100644 84index 76d9e346..64286a12 100644
117--- a/monitor.c 85--- a/monitor.c
118+++ b/monitor.c 86+++ b/monitor.c
119@@ -128,6 +128,7 @@ int mm_answer_sign(int, Buffer *); 87@@ -127,6 +127,7 @@ int mm_answer_sign(int, Buffer *);
120 int mm_answer_pwnamallow(int, Buffer *); 88 int mm_answer_pwnamallow(int, Buffer *);
121 int mm_answer_auth2_read_banner(int, Buffer *); 89 int mm_answer_auth2_read_banner(int, Buffer *);
122 int mm_answer_authserv(int, Buffer *); 90 int mm_answer_authserv(int, Buffer *);
@@ -124,7 +92,7 @@ index 05bb48a..e91054e 100644
124 int mm_answer_authpassword(int, Buffer *); 92 int mm_answer_authpassword(int, Buffer *);
125 int mm_answer_bsdauthquery(int, Buffer *); 93 int mm_answer_bsdauthquery(int, Buffer *);
126 int mm_answer_bsdauthrespond(int, Buffer *); 94 int mm_answer_bsdauthrespond(int, Buffer *);
127@@ -209,6 +210,7 @@ struct mon_table mon_dispatch_proto20[] = { 95@@ -204,6 +205,7 @@ struct mon_table mon_dispatch_proto20[] = {
128 {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, 96 {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign},
129 {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, 97 {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow},
130 {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, 98 {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv},
@@ -132,15 +100,15 @@ index 05bb48a..e91054e 100644
132 {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner}, 100 {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner},
133 {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, 101 {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword},
134 #ifdef USE_PAM 102 #ifdef USE_PAM
135@@ -880,6 +882,7 @@ mm_answer_pwnamallow(int sock, Buffer *m) 103@@ -786,6 +788,7 @@ mm_answer_pwnamallow(int sock, Buffer *m)
136 else { 104
137 /* Allow service/style information on the auth context */ 105 /* Allow service/style information on the auth context */
138 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); 106 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1);
139+ monitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1); 107+ monitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1);
140 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); 108 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1);
141 } 109
142 #ifdef USE_PAM 110 #ifdef USE_PAM
143@@ -910,14 +913,37 @@ mm_answer_authserv(int sock, Buffer *m) 111@@ -816,14 +819,37 @@ mm_answer_authserv(int sock, Buffer *m)
144 112
145 authctxt->service = buffer_get_string(m, NULL); 113 authctxt->service = buffer_get_string(m, NULL);
146 authctxt->style = buffer_get_string(m, NULL); 114 authctxt->style = buffer_get_string(m, NULL);
@@ -180,7 +148,7 @@ index 05bb48a..e91054e 100644
180 return (0); 148 return (0);
181 } 149 }
182 150
183@@ -1553,7 +1579,7 @@ mm_answer_pty(int sock, Buffer *m) 151@@ -1458,7 +1484,7 @@ mm_answer_pty(int sock, Buffer *m)
184 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); 152 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty));
185 if (res == 0) 153 if (res == 0)
186 goto error; 154 goto error;
@@ -190,7 +158,7 @@ index 05bb48a..e91054e 100644
190 buffer_put_int(m, 1); 158 buffer_put_int(m, 1);
191 buffer_put_cstring(m, s->tty); 159 buffer_put_cstring(m, s->tty);
192diff --git a/monitor.h b/monitor.h 160diff --git a/monitor.h b/monitor.h
193index bc50ade..2d82b8b 100644 161index ec41404c..4c7955d7 100644
194--- a/monitor.h 162--- a/monitor.h
195+++ b/monitor.h 163+++ b/monitor.h
196@@ -68,6 +68,8 @@ enum monitor_reqtype { 164@@ -68,6 +68,8 @@ enum monitor_reqtype {
@@ -201,12 +169,12 @@ index bc50ade..2d82b8b 100644
201+ 169+
202 }; 170 };
203 171
204 struct mm_master; 172 struct monitor {
205diff --git a/monitor_wrap.c b/monitor_wrap.c 173diff --git a/monitor_wrap.c b/monitor_wrap.c
206index 5a9f1b5..11e3a69 100644 174index d5cb640a..2ff8064a 100644
207--- a/monitor_wrap.c 175--- a/monitor_wrap.c
208+++ b/monitor_wrap.c 176+++ b/monitor_wrap.c
209@@ -328,10 +328,10 @@ mm_auth2_read_banner(void) 177@@ -327,10 +327,10 @@ mm_auth2_read_banner(void)
210 return (banner); 178 return (banner);
211 } 179 }
212 180
@@ -219,7 +187,7 @@ index 5a9f1b5..11e3a69 100644
219 { 187 {
220 Buffer m; 188 Buffer m;
221 189
222@@ -340,12 +340,30 @@ mm_inform_authserv(char *service, char *style) 190@@ -339,12 +339,30 @@ mm_inform_authserv(char *service, char *style)
223 buffer_init(&m); 191 buffer_init(&m);
224 buffer_put_cstring(&m, service); 192 buffer_put_cstring(&m, service);
225 buffer_put_cstring(&m, style ? style : ""); 193 buffer_put_cstring(&m, style ? style : "");
@@ -251,7 +219,7 @@ index 5a9f1b5..11e3a69 100644
251 int 219 int
252 mm_auth_password(Authctxt *authctxt, char *password) 220 mm_auth_password(Authctxt *authctxt, char *password)
253diff --git a/monitor_wrap.h b/monitor_wrap.h 221diff --git a/monitor_wrap.h b/monitor_wrap.h
254index b5414c2..d5b3334 100644 222index 8f9dd896..3e75867c 100644
255--- a/monitor_wrap.h 223--- a/monitor_wrap.h
256+++ b/monitor_wrap.h 224+++ b/monitor_wrap.h
257@@ -41,7 +41,8 @@ void mm_log_handler(LogLevel, const char *, void *); 225@@ -41,7 +41,8 @@ void mm_log_handler(LogLevel, const char *, void *);
@@ -265,10 +233,10 @@ index b5414c2..d5b3334 100644
265 char *mm_auth2_read_banner(void); 233 char *mm_auth2_read_banner(void);
266 int mm_auth_password(struct Authctxt *, char *); 234 int mm_auth_password(struct Authctxt *, char *);
267diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c 235diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c
268index f36999d..f9cdc15 100644 236index e4c5d1b7..e26faf08 100644
269--- a/openbsd-compat/port-linux.c 237--- a/openbsd-compat/port-linux.c
270+++ b/openbsd-compat/port-linux.c 238+++ b/openbsd-compat/port-linux.c
271@@ -29,6 +29,12 @@ 239@@ -27,6 +27,12 @@
272 #include <string.h> 240 #include <string.h>
273 #include <stdio.h> 241 #include <stdio.h>
274 242
@@ -281,7 +249,7 @@ index f36999d..f9cdc15 100644
281 #include "log.h" 249 #include "log.h"
282 #include "xmalloc.h" 250 #include "xmalloc.h"
283 #include "port-linux.h" 251 #include "port-linux.h"
284@@ -58,7 +64,7 @@ ssh_selinux_enabled(void) 252@@ -56,7 +62,7 @@ ssh_selinux_enabled(void)
285 253
286 /* Return the default security context for the given username */ 254 /* Return the default security context for the given username */
287 static security_context_t 255 static security_context_t
@@ -290,7 +258,7 @@ index f36999d..f9cdc15 100644
290 { 258 {
291 security_context_t sc = NULL; 259 security_context_t sc = NULL;
292 char *sename = NULL, *lvl = NULL; 260 char *sename = NULL, *lvl = NULL;
293@@ -73,9 +79,16 @@ ssh_selinux_getctxbyname(char *pwname) 261@@ -71,9 +77,16 @@ ssh_selinux_getctxbyname(char *pwname)
294 #endif 262 #endif
295 263
296 #ifdef HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL 264 #ifdef HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL
@@ -309,7 +277,7 @@ index f36999d..f9cdc15 100644
309 #endif 277 #endif
310 278
311 if (r != 0) { 279 if (r != 0) {
312@@ -105,7 +118,7 @@ ssh_selinux_getctxbyname(char *pwname) 280@@ -103,7 +116,7 @@ ssh_selinux_getctxbyname(char *pwname)
313 281
314 /* Set the execution context to the default for the specified user */ 282 /* Set the execution context to the default for the specified user */
315 void 283 void
@@ -318,7 +286,7 @@ index f36999d..f9cdc15 100644
318 { 286 {
319 security_context_t user_ctx = NULL; 287 security_context_t user_ctx = NULL;
320 288
321@@ -114,7 +127,7 @@ ssh_selinux_setup_exec_context(char *pwname) 289@@ -112,7 +125,7 @@ ssh_selinux_setup_exec_context(char *pwname)
322 290
323 debug3("%s: setting execution context", __func__); 291 debug3("%s: setting execution context", __func__);
324 292
@@ -327,7 +295,7 @@ index f36999d..f9cdc15 100644
327 if (setexeccon(user_ctx) != 0) { 295 if (setexeccon(user_ctx) != 0) {
328 switch (security_getenforce()) { 296 switch (security_getenforce()) {
329 case -1: 297 case -1:
330@@ -136,7 +149,7 @@ ssh_selinux_setup_exec_context(char *pwname) 298@@ -134,7 +147,7 @@ ssh_selinux_setup_exec_context(char *pwname)
331 299
332 /* Set the TTY context for the specified user */ 300 /* Set the TTY context for the specified user */
333 void 301 void
@@ -336,7 +304,7 @@ index f36999d..f9cdc15 100644
336 { 304 {
337 security_context_t new_tty_ctx = NULL; 305 security_context_t new_tty_ctx = NULL;
338 security_context_t user_ctx = NULL; 306 security_context_t user_ctx = NULL;
339@@ -147,7 +160,7 @@ ssh_selinux_setup_pty(char *pwname, const char *tty) 307@@ -145,7 +158,7 @@ ssh_selinux_setup_pty(char *pwname, const char *tty)
340 308
341 debug3("%s: setting TTY context on %s", __func__, tty); 309 debug3("%s: setting TTY context on %s", __func__, tty);
342 310
@@ -346,10 +314,10 @@ index f36999d..f9cdc15 100644
346 /* XXX: should these calls fatal() upon failure in enforcing mode? */ 314 /* XXX: should these calls fatal() upon failure in enforcing mode? */
347 315
348diff --git a/openbsd-compat/port-linux.h b/openbsd-compat/port-linux.h 316diff --git a/openbsd-compat/port-linux.h b/openbsd-compat/port-linux.h
349index e3d1004..80ce13a 100644 317index 3c22a854..c8812942 100644
350--- a/openbsd-compat/port-linux.h 318--- a/openbsd-compat/port-linux.h
351+++ b/openbsd-compat/port-linux.h 319+++ b/openbsd-compat/port-linux.h
352@@ -21,8 +21,8 @@ 320@@ -19,8 +19,8 @@
353 321
354 #ifdef WITH_SELINUX 322 #ifdef WITH_SELINUX
355 int ssh_selinux_enabled(void); 323 int ssh_selinux_enabled(void);
@@ -361,10 +329,10 @@ index e3d1004..80ce13a 100644
361 void ssh_selinux_setfscreatecon(const char *); 329 void ssh_selinux_setfscreatecon(const char *);
362 #endif 330 #endif
363diff --git a/platform.c b/platform.c 331diff --git a/platform.c b/platform.c
364index acf8554..4831706 100644 332index 973a63e4..cd7bf566 100644
365--- a/platform.c 333--- a/platform.c
366+++ b/platform.c 334+++ b/platform.c
367@@ -145,7 +145,7 @@ platform_setusercontext(struct passwd *pw) 335@@ -143,7 +143,7 @@ platform_setusercontext(struct passwd *pw)
368 * called if sshd is running as root. 336 * called if sshd is running as root.
369 */ 337 */
370 void 338 void
@@ -373,7 +341,7 @@ index acf8554..4831706 100644
373 { 341 {
374 #if !defined(HAVE_LOGIN_CAP) && defined(USE_PAM) 342 #if !defined(HAVE_LOGIN_CAP) && defined(USE_PAM)
375 /* 343 /*
376@@ -186,7 +186,7 @@ platform_setusercontext_post_groups(struct passwd *pw) 344@@ -184,7 +184,7 @@ platform_setusercontext_post_groups(struct passwd *pw)
377 } 345 }
378 #endif /* HAVE_SETPCRED */ 346 #endif /* HAVE_SETPCRED */
379 #ifdef WITH_SELINUX 347 #ifdef WITH_SELINUX
@@ -383,10 +351,10 @@ index acf8554..4831706 100644
383 } 351 }
384 352
385diff --git a/platform.h b/platform.h 353diff --git a/platform.h b/platform.h
386index e97ecd9..5b72304 100644 354index ea4f9c58..60d72ffe 100644
387--- a/platform.h 355--- a/platform.h
388+++ b/platform.h 356+++ b/platform.h
389@@ -27,7 +27,7 @@ void platform_post_fork_parent(pid_t child_pid); 357@@ -25,7 +25,7 @@ void platform_post_fork_parent(pid_t child_pid);
390 void platform_post_fork_child(void); 358 void platform_post_fork_child(void);
391 int platform_privileged_uidswap(void); 359 int platform_privileged_uidswap(void);
392 void platform_setusercontext(struct passwd *); 360 void platform_setusercontext(struct passwd *);
@@ -396,10 +364,10 @@ index e97ecd9..5b72304 100644
396 char *platform_krb5_get_principal_name(const char *); 364 char *platform_krb5_get_principal_name(const char *);
397 int platform_sys_dir_uid(uid_t); 365 int platform_sys_dir_uid(uid_t);
398diff --git a/session.c b/session.c 366diff --git a/session.c b/session.c
399index 2235f26..6dfcf84 100644 367index a08aa69d..ea3871eb 100644
400--- a/session.c 368--- a/session.c
401+++ b/session.c 369+++ b/session.c
402@@ -1517,7 +1517,7 @@ safely_chroot(const char *path, uid_t uid) 370@@ -1325,7 +1325,7 @@ safely_chroot(const char *path, uid_t uid)
403 371
404 /* Set login name, uid, gid, and groups. */ 372 /* Set login name, uid, gid, and groups. */
405 void 373 void
@@ -408,7 +376,7 @@ index 2235f26..6dfcf84 100644
408 { 376 {
409 char *chroot_path, *tmp; 377 char *chroot_path, *tmp;
410 378
411@@ -1545,7 +1545,7 @@ do_setusercontext(struct passwd *pw) 379@@ -1353,7 +1353,7 @@ do_setusercontext(struct passwd *pw)
412 endgrent(); 380 endgrent();
413 #endif 381 #endif
414 382
@@ -417,7 +385,7 @@ index 2235f26..6dfcf84 100644
417 385
418 if (!in_chroot && options.chroot_directory != NULL && 386 if (!in_chroot && options.chroot_directory != NULL &&
419 strcasecmp(options.chroot_directory, "none") != 0) { 387 strcasecmp(options.chroot_directory, "none") != 0) {
420@@ -1703,7 +1703,7 @@ do_child(Session *s, const char *command) 388@@ -1489,7 +1489,7 @@ do_child(Session *s, const char *command)
421 389
422 /* Force a password change */ 390 /* Force a password change */
423 if (s->authctxt->force_pwchange) { 391 if (s->authctxt->force_pwchange) {
@@ -426,16 +394,16 @@ index 2235f26..6dfcf84 100644
426 child_close_fds(); 394 child_close_fds();
427 do_pwchange(s); 395 do_pwchange(s);
428 exit(1); 396 exit(1);
429@@ -1730,7 +1730,7 @@ do_child(Session *s, const char *command) 397@@ -1511,7 +1511,7 @@ do_child(Session *s, const char *command)
430 /* When PAM is enabled we rely on it to do the nologin check */ 398 /* When PAM is enabled we rely on it to do the nologin check */
431 if (!options.use_pam) 399 if (!options.use_pam)
432 do_nologin(pw); 400 do_nologin(pw);
433- do_setusercontext(pw); 401- do_setusercontext(pw);
434+ do_setusercontext(pw, s->authctxt->role); 402+ do_setusercontext(pw, s->authctxt->role);
435 /* 403 /*
436 * PAM session modules in do_setusercontext may have 404 * PAM session modules in do_setusercontext may have
437 * generated messages, so if this in an interactive 405 * generated messages, so if this in an interactive
438@@ -2141,7 +2141,7 @@ session_pty_req(Session *s) 406@@ -1903,7 +1903,7 @@ session_pty_req(Session *s)
439 tty_parse_modes(s->ttyfd, &n_bytes); 407 tty_parse_modes(s->ttyfd, &n_bytes);
440 408
441 if (!use_privsep) 409 if (!use_privsep)
@@ -445,10 +413,10 @@ index 2235f26..6dfcf84 100644
445 /* Set window size from the packet. */ 413 /* Set window size from the packet. */
446 pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel); 414 pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel);
447diff --git a/session.h b/session.h 415diff --git a/session.h b/session.h
448index f18eaf3..2b7d939 100644 416index 98e1dafe..0a31dce4 100644
449--- a/session.h 417--- a/session.h
450+++ b/session.h 418+++ b/session.h
451@@ -77,7 +77,7 @@ void session_pty_cleanup2(Session *); 419@@ -76,7 +76,7 @@ void session_pty_cleanup2(Session *);
452 Session *session_new(void); 420 Session *session_new(void);
453 Session *session_by_tty(char *); 421 Session *session_by_tty(char *);
454 void session_close(Session *); 422 void session_close(Session *);
@@ -458,11 +426,11 @@ index f18eaf3..2b7d939 100644
458 const char *value); 426 const char *value);
459 427
460diff --git a/sshd.c b/sshd.c 428diff --git a/sshd.c b/sshd.c
461index 982e545..76306da 100644 429index 4f791b92..5a3f796d 100644
462--- a/sshd.c 430--- a/sshd.c
463+++ b/sshd.c 431+++ b/sshd.c
464@@ -787,7 +787,7 @@ privsep_postauth(Authctxt *authctxt) 432@@ -678,7 +678,7 @@ privsep_postauth(Authctxt *authctxt)
465 explicit_bzero(rnd, sizeof(rnd)); 433 reseed_prngs();
466 434
467 /* Drop privileges */ 435 /* Drop privileges */
468- do_setusercontext(authctxt->pw); 436- do_setusercontext(authctxt->pw);
@@ -471,7 +439,7 @@ index 982e545..76306da 100644
471 skip: 439 skip:
472 /* It is safe now to apply the key state */ 440 /* It is safe now to apply the key state */
473diff --git a/sshpty.c b/sshpty.c 441diff --git a/sshpty.c b/sshpty.c
474index 15da8c6..e89efb7 100644 442index fe2fb5aa..feb22b06 100644
475--- a/sshpty.c 443--- a/sshpty.c
476+++ b/sshpty.c 444+++ b/sshpty.c
477@@ -187,7 +187,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col, 445@@ -187,7 +187,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col,
@@ -493,12 +461,13 @@ index 15da8c6..e89efb7 100644
493 461
494 if (st.st_uid != pw->pw_uid || st.st_gid != gid) { 462 if (st.st_uid != pw->pw_uid || st.st_gid != gid) {
495diff --git a/sshpty.h b/sshpty.h 463diff --git a/sshpty.h b/sshpty.h
496index cfa3224..edf2436 100644 464index 9ec7e9a1..de7e000a 100644
497--- a/sshpty.h 465--- a/sshpty.h
498+++ b/sshpty.h 466+++ b/sshpty.h
499@@ -24,4 +24,4 @@ int pty_allocate(int *, int *, char *, size_t); 467@@ -24,5 +24,5 @@ int pty_allocate(int *, int *, char *, size_t);
500 void pty_release(const char *); 468 void pty_release(const char *);
501 void pty_make_controlling_tty(int *, const char *); 469 void pty_make_controlling_tty(int *, const char *);
502 void pty_change_window_size(int, u_int, u_int, u_int, u_int); 470 void pty_change_window_size(int, u_int, u_int, u_int, u_int);
503-void pty_setowner(struct passwd *, const char *); 471-void pty_setowner(struct passwd *, const char *);
504+void pty_setowner(struct passwd *, const char *, const char *); 472+void pty_setowner(struct passwd *, const char *, const char *);
473 void disconnect_controlling_tty(void);
diff --git a/debian/patches/series b/debian/patches/series
index 8dfd83f16..f7dded322 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,7 +5,6 @@ ssh-vulnkey-compat.patch
5keepalive-extensions.patch 5keepalive-extensions.patch
6syslog-level-silent.patch 6syslog-level-silent.patch
7quieter-signals.patch 7quieter-signals.patch
8helpful-wait-terminate.patch
9user-group-modes.patch 8user-group-modes.patch
10scp-quoting.patch 9scp-quoting.patch
11shell-path.patch 10shell-path.patch
@@ -25,5 +24,3 @@ gnome-ssh-askpass2-icon.patch
25sigstop.patch 24sigstop.patch
26systemd-readiness.patch 25systemd-readiness.patch
27debian-config.patch 26debian-config.patch
28unregister-kexinit.patch
29fix-putty-interop-tests.patch
diff --git a/debian/patches/shell-path.patch b/debian/patches/shell-path.patch
index 506ba3f7a..82203e0d8 100644
--- a/debian/patches/shell-path.patch
+++ b/debian/patches/shell-path.patch
@@ -1,4 +1,4 @@
1From ac283605e244f9dab676b039986f137f86284291 Mon Sep 17 00:00:00 2001 1From f6973171005fc513fa25540a1561ca1128e488e1 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:00 +0000 3Date: Sun, 9 Feb 2014 16:10:00 +0000
4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand 4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand
@@ -16,10 +16,10 @@ Patch-Name: shell-path.patch
16 1 file changed, 2 insertions(+), 2 deletions(-) 16 1 file changed, 2 insertions(+), 2 deletions(-)
17 17
18diff --git a/sshconnect.c b/sshconnect.c 18diff --git a/sshconnect.c b/sshconnect.c
19index 356ec79..8b8e760 100644 19index 96b91ce1..698a0711 100644
20--- a/sshconnect.c 20--- a/sshconnect.c
21+++ b/sshconnect.c 21+++ b/sshconnect.c
22@@ -232,7 +232,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command) 22@@ -231,7 +231,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command)
23 /* Execute the proxy command. Note that we gave up any 23 /* Execute the proxy command. Note that we gave up any
24 extra privileges above. */ 24 extra privileges above. */
25 signal(SIGPIPE, SIG_DFL); 25 signal(SIGPIPE, SIG_DFL);
@@ -28,7 +28,7 @@ index 356ec79..8b8e760 100644
28 perror(argv[0]); 28 perror(argv[0]);
29 exit(1); 29 exit(1);
30 } 30 }
31@@ -1499,7 +1499,7 @@ ssh_local_cmd(const char *args) 31@@ -1498,7 +1498,7 @@ ssh_local_cmd(const char *args)
32 if (pid == 0) { 32 if (pid == 0) {
33 signal(SIGPIPE, SIG_DFL); 33 signal(SIGPIPE, SIG_DFL);
34 debug3("Executing %s -c \"%s\"", shell, args); 34 debug3("Executing %s -c \"%s\"", shell, args);
diff --git a/debian/patches/sigstop.patch b/debian/patches/sigstop.patch
index 7ae7f3558..5e07bf023 100644
--- a/debian/patches/sigstop.patch
+++ b/debian/patches/sigstop.patch
@@ -1,4 +1,4 @@
1From 8d765e441787d024e76369496316105fe736d3ba Mon Sep 17 00:00:00 2001 1From 7140d94420542a8af7459d08436af2fc950cd810 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:17 +0000 3Date: Sun, 9 Feb 2014 16:10:17 +0000
4Subject: Support synchronisation with service supervisor using SIGSTOP 4Subject: Support synchronisation with service supervisor using SIGSTOP
@@ -13,10 +13,10 @@ Patch-Name: sigstop.patch
13 1 file changed, 10 insertions(+) 13 1 file changed, 10 insertions(+)
14 14
15diff --git a/sshd.c b/sshd.c 15diff --git a/sshd.c b/sshd.c
16index 71fad9e..837409b 100644 16index 747beec8..414e19ee 100644
17--- a/sshd.c 17--- a/sshd.c
18+++ b/sshd.c 18+++ b/sshd.c
19@@ -2107,6 +2107,16 @@ main(int ac, char **av) 19@@ -1878,6 +1878,16 @@ main(int ac, char **av)
20 } 20 }
21 } 21 }
22 22
diff --git a/debian/patches/ssh-agent-setgid.patch b/debian/patches/ssh-agent-setgid.patch
index 2d1dabfd3..4e087e47d 100644
--- a/debian/patches/ssh-agent-setgid.patch
+++ b/debian/patches/ssh-agent-setgid.patch
@@ -1,4 +1,4 @@
1From 172bb48ec4cb3b65d26d4f3bd8bc0e82ddaf6ca1 Mon Sep 17 00:00:00 2001 1From 42a3ec898a2dc3a752d675f48585109ab8a592f2 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:13 +0000 3Date: Sun, 9 Feb 2014 16:10:13 +0000
4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) 4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1)
@@ -13,10 +13,10 @@ Patch-Name: ssh-agent-setgid.patch
13 1 file changed, 15 insertions(+) 13 1 file changed, 15 insertions(+)
14 14
15diff --git a/ssh-agent.1 b/ssh-agent.1 15diff --git a/ssh-agent.1 b/ssh-agent.1
16index c4b50bb..2fe2201 100644 16index 83b2b41c..7230704a 100644
17--- a/ssh-agent.1 17--- a/ssh-agent.1
18+++ b/ssh-agent.1 18+++ b/ssh-agent.1
19@@ -193,6 +193,21 @@ environment variable holds the agent's process ID. 19@@ -206,6 +206,21 @@ environment variable holds the agent's process ID.
20 .Pp 20 .Pp
21 The agent exits automatically when the command given on the command 21 The agent exits automatically when the command given on the command
22 line terminates. 22 line terminates.
@@ -37,4 +37,4 @@ index c4b50bb..2fe2201 100644
37+so in the program executed by ssh-agent. 37+so in the program executed by ssh-agent.
38 .Sh FILES 38 .Sh FILES
39 .Bl -tag -width Ds 39 .Bl -tag -width Ds
40 .It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.\*(Ltppid\*(Gt 40 .It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch
index 614ed8195..70b13cd47 100644
--- a/debian/patches/ssh-argv0.patch
+++ b/debian/patches/ssh-argv0.patch
@@ -1,4 +1,4 @@
1From ccfb71ca70b73f6d5a2873b31d0140c7cb5f4430 Mon Sep 17 00:00:00 2001 1From 45d82ddb03e248dae4775ce1693654ea69d050ad Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:10 +0000 3Date: Sun, 9 Feb 2014 16:10:10 +0000
4Subject: ssh(1): Refer to ssh-argv0(1) 4Subject: ssh(1): Refer to ssh-argv0(1)
@@ -18,7 +18,7 @@ Patch-Name: ssh-argv0.patch
18 1 file changed, 1 insertion(+) 18 1 file changed, 1 insertion(+)
19 19
20diff --git a/ssh.1 b/ssh.1 20diff --git a/ssh.1 b/ssh.1
21index b1f128c..22e56a7 100644 21index b1f128c2..22e56a7b 100644
22--- a/ssh.1 22--- a/ssh.1
23+++ b/ssh.1 23+++ b/ssh.1
24@@ -1586,6 +1586,7 @@ if an error occurred. 24@@ -1586,6 +1586,7 @@ if an error occurred.
diff --git a/debian/patches/ssh-vulnkey-compat.patch b/debian/patches/ssh-vulnkey-compat.patch
index 0492c84fe..29a876cd8 100644
--- a/debian/patches/ssh-vulnkey-compat.patch
+++ b/debian/patches/ssh-vulnkey-compat.patch
@@ -1,4 +1,4 @@
1From e35c0bb4c3997b8ef885c6afdcc600b403eb878b Mon Sep 17 00:00:00 2001 1From 01e8999cc86a0b2ffed5f98abed624b0e7c2707f Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:50 +0000 3Date: Sun, 9 Feb 2014 16:09:50 +0000
4Subject: Accept obsolete ssh-vulnkey configuration options 4Subject: Accept obsolete ssh-vulnkey configuration options
@@ -17,7 +17,7 @@ Patch-Name: ssh-vulnkey-compat.patch
17 2 files changed, 2 insertions(+) 17 2 files changed, 2 insertions(+)
18 18
19diff --git a/readconf.c b/readconf.c 19diff --git a/readconf.c b/readconf.c
20index e019195..c0b7822 100644 20index 7902ef26..c1c3aae0 100644
21--- a/readconf.c 21--- a/readconf.c
22+++ b/readconf.c 22+++ b/readconf.c
23@@ -194,6 +194,7 @@ static struct { 23@@ -194,6 +194,7 @@ static struct {
@@ -29,14 +29,14 @@ index e019195..c0b7822 100644
29 { "pubkeyauthentication", oPubkeyAuthentication }, 29 { "pubkeyauthentication", oPubkeyAuthentication },
30 { "dsaauthentication", oPubkeyAuthentication }, /* alias */ 30 { "dsaauthentication", oPubkeyAuthentication }, /* alias */
31diff --git a/servconf.c b/servconf.c 31diff --git a/servconf.c b/servconf.c
32index 9b06281..bf9f8f7 100644 32index 14c81fa9..49d3bdc8 100644
33--- a/servconf.c 33--- a/servconf.c
34+++ b/servconf.c 34+++ b/servconf.c
35@@ -541,6 +541,7 @@ static struct { 35@@ -521,6 +521,7 @@ static struct {
36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL }, 36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL },
37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL }, 37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL },
38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL }, 38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL },
39+ { "permitblacklistedkeys", sDeprecated, SSHCFG_GLOBAL }, 39+ { "permitblacklistedkeys", sDeprecated, SSHCFG_GLOBAL },
40 { "permitemptypasswords", sEmptyPasswd, SSHCFG_ALL }, 40 { "permitemptypasswords", sEmptyPasswd, SSHCFG_ALL },
41 { "permituserenvironment", sPermitUserEnvironment, SSHCFG_GLOBAL }, 41 { "permituserenvironment", sPermitUserEnvironment, SSHCFG_GLOBAL },
42 { "uselogin", sUseLogin, SSHCFG_GLOBAL }, 42 { "uselogin", sDeprecated, SSHCFG_GLOBAL },
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch
index 3e46d03c8..9fd4e96d3 100644
--- a/debian/patches/syslog-level-silent.patch
+++ b/debian/patches/syslog-level-silent.patch
@@ -1,4 +1,4 @@
1From 21fb55231ad0422fa0e5f0c2f67093cb5f29dd47 Mon Sep 17 00:00:00 2001 1From 3ffb3874831f9f4a0a2d02c82c3505166593f1c1 Mon Sep 17 00:00:00 2001
2From: Jonathan David Amery <jdamery@ysolde.ucam.org> 2From: Jonathan David Amery <jdamery@ysolde.ucam.org>
3Date: Sun, 9 Feb 2014 16:09:54 +0000 3Date: Sun, 9 Feb 2014 16:09:54 +0000
4Subject: "LogLevel SILENT" compatibility 4Subject: "LogLevel SILENT" compatibility
@@ -21,7 +21,7 @@ Patch-Name: syslog-level-silent.patch
21 2 files changed, 2 insertions(+), 1 deletion(-) 21 2 files changed, 2 insertions(+), 1 deletion(-)
22 22
23diff --git a/log.c b/log.c 23diff --git a/log.c b/log.c
24index 2b59c42..ffc8ffb 100644 24index 2b59c427..ffc8ffbb 100644
25--- a/log.c 25--- a/log.c
26+++ b/log.c 26+++ b/log.c
27@@ -93,6 +93,7 @@ static struct { 27@@ -93,6 +93,7 @@ static struct {
@@ -33,7 +33,7 @@ index 2b59c42..ffc8ffb 100644
33 { "FATAL", SYSLOG_LEVEL_FATAL }, 33 { "FATAL", SYSLOG_LEVEL_FATAL },
34 { "ERROR", SYSLOG_LEVEL_ERROR }, 34 { "ERROR", SYSLOG_LEVEL_ERROR },
35diff --git a/ssh.c b/ssh.c 35diff --git a/ssh.c b/ssh.c
36index 03a23fb..1febb04 100644 36index ee0b16dc..39609e79 100644
37--- a/ssh.c 37--- a/ssh.c
38+++ b/ssh.c 38+++ b/ssh.c
39@@ -1167,7 +1167,7 @@ main(int ac, char **av) 39@@ -1167,7 +1167,7 @@ main(int ac, char **av)
diff --git a/debian/patches/systemd-readiness.patch b/debian/patches/systemd-readiness.patch
index deee48460..a2ecd7e99 100644
--- a/debian/patches/systemd-readiness.patch
+++ b/debian/patches/systemd-readiness.patch
@@ -1,4 +1,4 @@
1From fe97848e044743f0bac019a491ddf0138f84e14a Mon Sep 17 00:00:00 2001 1From 6ea90cd25e0275c4153691a962bcc89007e77261 Mon Sep 17 00:00:00 2001
2From: Michael Biebl <biebl@debian.org> 2From: Michael Biebl <biebl@debian.org>
3Date: Mon, 21 Dec 2015 16:08:47 +0000 3Date: Mon, 21 Dec 2015 16:08:47 +0000
4Subject: Add systemd readiness notification support 4Subject: Add systemd readiness notification support
@@ -14,10 +14,10 @@ Patch-Name: systemd-readiness.patch
14 2 files changed, 33 insertions(+) 14 2 files changed, 33 insertions(+)
15 15
16diff --git a/configure.ac b/configure.ac 16diff --git a/configure.ac b/configure.ac
17index f822fb3..6cafb15 100644 17index 4747ce4a..9f59794b 100644
18--- a/configure.ac 18--- a/configure.ac
19+++ b/configure.ac 19+++ b/configure.ac
20@@ -4319,6 +4319,29 @@ AC_ARG_WITH([kerberos5], 20@@ -4364,6 +4364,29 @@ AC_ARG_WITH([kerberos5],
21 AC_SUBST([GSSLIBS]) 21 AC_SUBST([GSSLIBS])
22 AC_SUBST([K5LIBS]) 22 AC_SUBST([K5LIBS])
23 23
@@ -47,7 +47,7 @@ index f822fb3..6cafb15 100644
47 # Looking for programs, paths and files 47 # Looking for programs, paths and files
48 48
49 PRIVSEP_PATH=/var/empty 49 PRIVSEP_PATH=/var/empty
50@@ -5121,6 +5144,7 @@ echo " libedit support: $LIBEDIT_MSG" 50@@ -5167,6 +5190,7 @@ echo " libedit support: $LIBEDIT_MSG"
51 echo " Solaris process contract support: $SPC_MSG" 51 echo " Solaris process contract support: $SPC_MSG"
52 echo " Solaris project support: $SP_MSG" 52 echo " Solaris project support: $SP_MSG"
53 echo " Solaris privilege support: $SPP_MSG" 53 echo " Solaris privilege support: $SPP_MSG"
@@ -56,7 +56,7 @@ index f822fb3..6cafb15 100644
56 echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG" 56 echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
57 echo " BSD Auth support: $BSD_AUTH_MSG" 57 echo " BSD Auth support: $BSD_AUTH_MSG"
58diff --git a/sshd.c b/sshd.c 58diff --git a/sshd.c b/sshd.c
59index 837409b..868df9e 100644 59index 414e19ee..8b793480 100644
60--- a/sshd.c 60--- a/sshd.c
61+++ b/sshd.c 61+++ b/sshd.c
62@@ -85,6 +85,10 @@ 62@@ -85,6 +85,10 @@
@@ -69,8 +69,8 @@ index 837409b..868df9e 100644
69+ 69+
70 #include "xmalloc.h" 70 #include "xmalloc.h"
71 #include "ssh.h" 71 #include "ssh.h"
72 #include "ssh1.h" 72 #include "ssh2.h"
73@@ -2117,6 +2121,11 @@ main(int ac, char **av) 73@@ -1888,6 +1892,11 @@ main(int ac, char **av)
74 unsetenv("SSH_SIGSTOP"); 74 unsetenv("SSH_SIGSTOP");
75 } 75 }
76 76
diff --git a/debian/patches/unregister-kexinit.patch b/debian/patches/unregister-kexinit.patch
deleted file mode 100644
index 48da43273..000000000
--- a/debian/patches/unregister-kexinit.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From b139635512b1af75e82252c0c71ac66e08b78774 Mon Sep 17 00:00:00 2001
2From: "markus@openbsd.org" <markus@openbsd.org>
3Date: Mon, 10 Oct 2016 19:28:48 +0000
4Subject: upstream commit
5
6Unregister the KEXINIT handler after message has been
7received. Otherwise an unauthenticated peer can repeat the KEXINIT and cause
8allocation of up to 128MB -- until the connection is closed. Reported by
9shilei-c at 360.cn
10
11Upstream-ID: 43649ae12a27ef94290db16d1a98294588b75c05
12
13Origin: https://anongit.mindrot.org/openssh.git/commit/?id=ec165c392ca54317dbe3064a8c200de6531e89ad
14Bug-Debian: https://bugs.debian.org/841884
15Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=1384860
16Last-Update: 2016-10-24
17
18Patch-Name: unregister-kexinit.patch
19---
20 kex.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/kex.c b/kex.c
24index c17d652..7ab72ba 100644
25--- a/kex.c
26+++ b/kex.c
27@@ -488,6 +488,7 @@ kex_input_kexinit(int type, u_int32_t seq, void *ctxt)
28 if (kex == NULL)
29 return SSH_ERR_INVALID_ARGUMENT;
30
31+ ssh_dispatch_set(ssh, SSH2_MSG_KEXINIT, NULL);
32 ptr = sshpkt_ptr(ssh, &dlen);
33 if ((r = sshbuf_put(kex->peer, ptr, dlen)) != 0)
34 return r;
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch
index 3bd2fd91f..e08b6c7b7 100644
--- a/debian/patches/user-group-modes.patch
+++ b/debian/patches/user-group-modes.patch
@@ -1,4 +1,4 @@
1From 563974a78e937c4844e1198b5f6d79b8b2b5c600 Mon Sep 17 00:00:00 2001 1From df060c830ad66289a93be24268f3f70e7021be29 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:09:58 +0000 3Date: Sun, 9 Feb 2014 16:09:58 +0000
4Subject: Allow harmless group-writability 4Subject: Allow harmless group-writability
@@ -28,10 +28,10 @@ Patch-Name: user-group-modes.patch
28 8 files changed, 80 insertions(+), 29 deletions(-) 28 8 files changed, 80 insertions(+), 29 deletions(-)
29 29
30diff --git a/auth-rhosts.c b/auth-rhosts.c 30diff --git a/auth-rhosts.c b/auth-rhosts.c
31index 0ef3447..c17c13c 100644 31index ecf956f0..4dccd5e6 100644
32--- a/auth-rhosts.c 32--- a/auth-rhosts.c
33+++ b/auth-rhosts.c 33+++ b/auth-rhosts.c
34@@ -273,8 +273,7 @@ auth_rhosts2_raw(struct passwd *pw, const char *client_user, const char *hostnam 34@@ -261,8 +261,7 @@ auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname,
35 return 0; 35 return 0;
36 } 36 }
37 if (options.strict_modes && 37 if (options.strict_modes &&
@@ -41,7 +41,7 @@ index 0ef3447..c17c13c 100644
41 logit("Rhosts authentication refused for %.100s: " 41 logit("Rhosts authentication refused for %.100s: "
42 "bad ownership or modes for home directory.", pw->pw_name); 42 "bad ownership or modes for home directory.", pw->pw_name);
43 auth_debug_add("Rhosts authentication refused for %.100s: " 43 auth_debug_add("Rhosts authentication refused for %.100s: "
44@@ -300,8 +299,7 @@ auth_rhosts2_raw(struct passwd *pw, const char *client_user, const char *hostnam 44@@ -288,8 +287,7 @@ auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname,
45 * allowing access to their account by anyone. 45 * allowing access to their account by anyone.
46 */ 46 */
47 if (options.strict_modes && 47 if (options.strict_modes &&
@@ -52,10 +52,10 @@ index 0ef3447..c17c13c 100644
52 pw->pw_name, buf); 52 pw->pw_name, buf);
53 auth_debug_add("Bad file modes for %.200s", buf); 53 auth_debug_add("Bad file modes for %.200s", buf);
54diff --git a/auth.c b/auth.c 54diff --git a/auth.c b/auth.c
55index f56dcc6..3f8b348 100644 55index c6390687..90390724 100644
56--- a/auth.c 56--- a/auth.c
57+++ b/auth.c 57+++ b/auth.c
58@@ -435,8 +435,7 @@ check_key_in_hostfiles(struct passwd *pw, Key *key, const char *host, 58@@ -444,8 +444,7 @@ check_key_in_hostfiles(struct passwd *pw, Key *key, const char *host,
59 user_hostfile = tilde_expand_filename(userfile, pw->pw_uid); 59 user_hostfile = tilde_expand_filename(userfile, pw->pw_uid);
60 if (options.strict_modes && 60 if (options.strict_modes &&
61 (stat(user_hostfile, &st) == 0) && 61 (stat(user_hostfile, &st) == 0) &&
@@ -65,7 +65,7 @@ index f56dcc6..3f8b348 100644
65 logit("Authentication refused for %.100s: " 65 logit("Authentication refused for %.100s: "
66 "bad owner or modes for %.200s", 66 "bad owner or modes for %.200s",
67 pw->pw_name, user_hostfile); 67 pw->pw_name, user_hostfile);
68@@ -498,8 +497,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir, 68@@ -507,8 +506,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir,
69 snprintf(err, errlen, "%s is not a regular file", buf); 69 snprintf(err, errlen, "%s is not a regular file", buf);
70 return -1; 70 return -1;
71 } 71 }
@@ -75,7 +75,7 @@ index f56dcc6..3f8b348 100644
75 snprintf(err, errlen, "bad ownership or modes for file %s", 75 snprintf(err, errlen, "bad ownership or modes for file %s",
76 buf); 76 buf);
77 return -1; 77 return -1;
78@@ -514,8 +512,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir, 78@@ -523,8 +521,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir,
79 strlcpy(buf, cp, sizeof(buf)); 79 strlcpy(buf, cp, sizeof(buf));
80 80
81 if (stat(buf, &st) < 0 || 81 if (stat(buf, &st) < 0 ||
@@ -86,7 +86,7 @@ index f56dcc6..3f8b348 100644
86 "bad ownership or modes for directory %s", buf); 86 "bad ownership or modes for directory %s", buf);
87 return -1; 87 return -1;
88diff --git a/misc.c b/misc.c 88diff --git a/misc.c b/misc.c
89index 9421b4d..68efb2b 100644 89index 65c9222a..bf9153a6 100644
90--- a/misc.c 90--- a/misc.c
91+++ b/misc.c 91+++ b/misc.c
92@@ -51,8 +51,9 @@ 92@@ -51,8 +51,9 @@
@@ -181,21 +181,23 @@ index 9421b4d..68efb2b 100644
181 tun_open(int tun, int mode) 181 tun_open(int tun, int mode)
182 { 182 {
183diff --git a/misc.h b/misc.h 183diff --git a/misc.h b/misc.h
184index 7c76a6a..42cd95e 100644 184index c242f901..8b223b55 100644
185--- a/misc.h 185--- a/misc.h
186+++ b/misc.h 186+++ b/misc.h
187@@ -139,4 +139,6 @@ char *read_passphrase(const char *, int); 187@@ -143,6 +143,8 @@ char *read_passphrase(const char *, int);
188 int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); 188 int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2)));
189 int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *); 189 int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *);
190 190
191+int secure_permissions(struct stat *st, uid_t uid); 191+int secure_permissions(struct stat *st, uid_t uid);
192+ 192+
193 #endif /* _MISC_H */ 193 #define MINIMUM(a, b) (((a) < (b)) ? (a) : (b))
194 #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))
195 #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
194diff --git a/platform.c b/platform.c 196diff --git a/platform.c b/platform.c
195index 4831706..2ce4dbf 100644 197index cd7bf566..380ee3a4 100644
196--- a/platform.c 198--- a/platform.c
197+++ b/platform.c 199+++ b/platform.c
198@@ -199,19 +199,3 @@ platform_krb5_get_principal_name(const char *pw_name) 200@@ -197,19 +197,3 @@ platform_krb5_get_principal_name(const char *pw_name)
199 return NULL; 201 return NULL;
200 #endif 202 #endif
201 } 203 }
@@ -216,10 +218,10 @@ index 4831706..2ce4dbf 100644
216- return 0; 218- return 0;
217-} 219-}
218diff --git a/readconf.c b/readconf.c 220diff --git a/readconf.c b/readconf.c
219index 3a6c67b..f6b4c8f 100644 221index 3efba242..c02cdf63 100644
220--- a/readconf.c 222--- a/readconf.c
221+++ b/readconf.c 223+++ b/readconf.c
222@@ -1753,8 +1753,7 @@ read_config_file_depth(const char *filename, struct passwd *pw, 224@@ -1752,8 +1752,7 @@ read_config_file_depth(const char *filename, struct passwd *pw,
223 225
224 if (fstat(fileno(f), &sb) == -1) 226 if (fstat(fileno(f), &sb) == -1)
225 fatal("fstat %s: %s", filename, strerror(errno)); 227 fatal("fstat %s: %s", filename, strerror(errno));
@@ -230,7 +232,7 @@ index 3a6c67b..f6b4c8f 100644
230 } 232 }
231 233
232diff --git a/ssh.1 b/ssh.1 234diff --git a/ssh.1 b/ssh.1
233index 4011c65..feef81a 100644 235index 4011c65a..feef81a5 100644
234--- a/ssh.1 236--- a/ssh.1
235+++ b/ssh.1 237+++ b/ssh.1
236@@ -1484,6 +1484,8 @@ The file format and configuration options are described in 238@@ -1484,6 +1484,8 @@ The file format and configuration options are described in
@@ -243,10 +245,10 @@ index 4011c65..feef81a 100644
243 .It Pa ~/.ssh/environment 245 .It Pa ~/.ssh/environment
244 Contains additional definitions for environment variables; see 246 Contains additional definitions for environment variables; see
245diff --git a/ssh_config.5 b/ssh_config.5 247diff --git a/ssh_config.5 b/ssh_config.5
246index efc265a..5dd26bc 100644 248index 32fd100d..f62ea6b8 100644
247--- a/ssh_config.5 249--- a/ssh_config.5
248+++ b/ssh_config.5 250+++ b/ssh_config.5
249@@ -1903,6 +1903,8 @@ The format of this file is described above. 251@@ -1803,6 +1803,8 @@ The format of this file is described above.
250 This file is used by the SSH client. 252 This file is used by the SSH client.
251 Because of the potential for abuse, this file must have strict permissions: 253 Because of the potential for abuse, this file must have strict permissions:
252 read/write for the user, and not accessible by others. 254 read/write for the user, and not accessible by others.
diff --git a/debian/rules b/debian/rules
index 76e71ecf1..86d15a0d0 100755
--- a/debian/rules
+++ b/debian/rules
@@ -153,12 +153,7 @@ override_dh_auto_build-indep:
153override_dh_auto_test-arch: 153override_dh_auto_test-arch:
154ifeq ($(RUN_TESTS),yes) 154ifeq ($(RUN_TESTS),yes)
155 $(MAKE) -C debian/build-deb regress-prep 155 $(MAKE) -C debian/build-deb regress-prep
156 $(MAKE) -C debian/build-deb $(PARALLEL) \ 156 $(MAKE) -C debian/build-deb $(PARALLEL) regress-binaries
157 regress/unittests/sshbuf/test_sshbuf \
158 regress/unittests/sshkey/test_sshkey \
159 regress/unittests/bitmap/test_bitmap \
160 regress/unittests/hostkeys/test_hostkeys \
161 regress/unittests/kex/test_kex
162 $(MAKE) -C debian/build-deb/regress \ 157 $(MAKE) -C debian/build-deb/regress \
163 .OBJDIR="$(CURDIR)/debian/build-deb/regress" \ 158 .OBJDIR="$(CURDIR)/debian/build-deb/regress" \
164 .CURDIR="$(CURDIR)/regress" \ 159 .CURDIR="$(CURDIR)/regress" \
diff --git a/defines.h b/defines.h
index 1b71d3e01..c89f85a8d 100644
--- a/defines.h
+++ b/defines.h
@@ -25,9 +25,6 @@
25#ifndef _DEFINES_H 25#ifndef _DEFINES_H
26#define _DEFINES_H 26#define _DEFINES_H
27 27
28/* $Id: defines.h,v 1.183 2014/09/02 19:33:26 djm Exp $ */
29
30
31/* Constants */ 28/* Constants */
32 29
33#if defined(HAVE_DECL_SHUT_RD) && HAVE_DECL_SHUT_RD == 0 30#if defined(HAVE_DECL_SHUT_RD) && HAVE_DECL_SHUT_RD == 0
@@ -836,6 +833,13 @@ struct winsize {
836#endif 833#endif
837 834
838/* 835/*
836 * We want functions in openbsd-compat, if enabled, to override system ones.
837 * We no-op out the weak symbol definition rather than remove it to reduce
838 * future sync problems.
839 */
840#define DEF_WEAK(x)
841
842/*
839 * Platforms that have arc4random_uniform() and not arc4random_stir() 843 * Platforms that have arc4random_uniform() and not arc4random_stir()
840 * shouldn't need the latter. 844 * shouldn't need the latter.
841 */ 845 */
diff --git a/dh.c b/dh.c
index 167d3714e..475312427 100644
--- a/dh.c
+++ b/dh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh.c,v 1.60 2016/05/02 10:26:04 djm Exp $ */ 1/* $OpenBSD: dh.c,v 1.62 2016/12/15 21:20:41 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * 4 *
@@ -25,7 +25,6 @@
25 25
26#include "includes.h" 26#include "includes.h"
27 27
28#include <sys/param.h> /* MIN */
29 28
30#include <openssl/bn.h> 29#include <openssl/bn.h>
31#include <openssl/dh.h> 30#include <openssl/dh.h>
@@ -153,7 +152,7 @@ choose_dh(int min, int wantbits, int max)
153 struct dhgroup dhg; 152 struct dhgroup dhg;
154 153
155 if ((f = fopen(_PATH_DH_MODULI, "r")) == NULL) { 154 if ((f = fopen(_PATH_DH_MODULI, "r")) == NULL) {
156 logit("WARNING: could open open %s (%s), using fixed modulus", 155 logit("WARNING: could not open %s (%s), using fixed modulus",
157 _PATH_DH_MODULI, strerror(errno)); 156 _PATH_DH_MODULI, strerror(errno));
158 return (dh_new_group_fallback(max)); 157 return (dh_new_group_fallback(max));
159 } 158 }
@@ -272,7 +271,7 @@ dh_gen_key(DH *dh, int need)
272 * Pollard Rho, Big step/Little Step attacks are O(sqrt(n)), 271 * Pollard Rho, Big step/Little Step attacks are O(sqrt(n)),
273 * so double requested need here. 272 * so double requested need here.
274 */ 273 */
275 dh->length = MIN(need * 2, pbits - 1); 274 dh->length = MINIMUM(need * 2, pbits - 1);
276 if (DH_generate_key(dh) == 0 || 275 if (DH_generate_key(dh) == 0 ||
277 !dh_pub_is_valid(dh, dh->pub_key)) { 276 !dh_pub_is_valid(dh, dh->pub_key)) {
278 BN_clear_free(dh->priv_key); 277 BN_clear_free(dh->priv_key);
diff --git a/entropy.h b/entropy.h
index c3d78dbad..9d5285b29 100644
--- a/entropy.h
+++ b/entropy.h
@@ -22,8 +22,6 @@
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 23 */
24 24
25/* $Id: entropy.h,v 1.6 2011/09/09 01:29:41 dtucker Exp $ */
26
27#ifndef _RANDOMS_H 25#ifndef _RANDOMS_H
28#define _RANDOMS_H 26#define _RANDOMS_H
29 27
diff --git a/gss-genr.c b/gss-genr.c
index b4eca3feb..0b3ae073c 100644
--- a/gss-genr.c
+++ b/gss-genr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gss-genr.c,v 1.23 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: gss-genr.c,v 1.24 2016/09/12 01:22:38 deraadt Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved.
@@ -29,7 +29,6 @@
29#ifdef GSSAPI 29#ifdef GSSAPI
30 30
31#include <sys/types.h> 31#include <sys/types.h>
32#include <sys/param.h>
33 32
34#include <limits.h> 33#include <limits.h>
35#include <stdarg.h> 34#include <stdarg.h>
diff --git a/hostfile.c b/hostfile.c
index 2850a4793..4548fbab3 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.c,v 1.66 2015/05/04 06:10:48 djm Exp $ */ 1/* $OpenBSD: hostfile.c,v 1.67 2016/09/17 18:00:27 tedu Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -123,14 +123,13 @@ host_hash(const char *host, const char *name_from_hostfile, u_int src_len)
123 u_char salt[256], result[256]; 123 u_char salt[256], result[256];
124 char uu_salt[512], uu_result[512]; 124 char uu_salt[512], uu_result[512];
125 static char encoded[1024]; 125 static char encoded[1024];
126 u_int i, len; 126 u_int len;
127 127
128 len = ssh_digest_bytes(SSH_DIGEST_SHA1); 128 len = ssh_digest_bytes(SSH_DIGEST_SHA1);
129 129
130 if (name_from_hostfile == NULL) { 130 if (name_from_hostfile == NULL) {
131 /* Create new salt */ 131 /* Create new salt */
132 for (i = 0; i < len; i++) 132 arc4random_buf(salt, len);
133 salt[i] = arc4random();
134 } else { 133 } else {
135 /* Extract salt from known host entry */ 134 /* Extract salt from known host entry */
136 if (extract_salt(name_from_hostfile, src_len, salt, 135 if (extract_salt(name_from_hostfile, src_len, salt,
diff --git a/kex.c b/kex.c
index 7ab72ba19..d87086844 100644
--- a/kex.c
+++ b/kex.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.c,v 1.118 2016/05/02 10:26:04 djm Exp $ */ 1/* $OpenBSD: kex.c,v 1.127 2016/10/10 19:28:48 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -25,7 +25,6 @@
25 25
26#include "includes.h" 26#include "includes.h"
27 27
28#include <sys/param.h> /* MAX roundup */
29 28
30#include <signal.h> 29#include <signal.h>
31#include <stdarg.h> 30#include <stdarg.h>
@@ -114,6 +113,7 @@ static const struct kexalg kexalgs[] = {
114#endif /* WITH_OPENSSL */ 113#endif /* WITH_OPENSSL */
115#if defined(HAVE_EVP_SHA256) || !defined(WITH_OPENSSL) 114#if defined(HAVE_EVP_SHA256) || !defined(WITH_OPENSSL)
116 { KEX_CURVE25519_SHA256, KEX_C25519_SHA256, 0, SSH_DIGEST_SHA256 }, 115 { KEX_CURVE25519_SHA256, KEX_C25519_SHA256, 0, SSH_DIGEST_SHA256 },
116 { KEX_CURVE25519_SHA256_OLD, KEX_C25519_SHA256, 0, SSH_DIGEST_SHA256 },
117#endif /* HAVE_EVP_SHA256 || !WITH_OPENSSL */ 117#endif /* HAVE_EVP_SHA256 || !WITH_OPENSSL */
118 { NULL, -1, -1, -1}, 118 { NULL, -1, -1, -1},
119}; 119};
@@ -357,14 +357,21 @@ static int
357kex_send_ext_info(struct ssh *ssh) 357kex_send_ext_info(struct ssh *ssh)
358{ 358{
359 int r; 359 int r;
360 char *algs;
360 361
362 if ((algs = sshkey_alg_list(0, 1, ',')) == NULL)
363 return SSH_ERR_ALLOC_FAIL;
361 if ((r = sshpkt_start(ssh, SSH2_MSG_EXT_INFO)) != 0 || 364 if ((r = sshpkt_start(ssh, SSH2_MSG_EXT_INFO)) != 0 ||
362 (r = sshpkt_put_u32(ssh, 1)) != 0 || 365 (r = sshpkt_put_u32(ssh, 1)) != 0 ||
363 (r = sshpkt_put_cstring(ssh, "server-sig-algs")) != 0 || 366 (r = sshpkt_put_cstring(ssh, "server-sig-algs")) != 0 ||
364 (r = sshpkt_put_cstring(ssh, "rsa-sha2-256,rsa-sha2-512")) != 0 || 367 (r = sshpkt_put_cstring(ssh, algs)) != 0 ||
365 (r = sshpkt_send(ssh)) != 0) 368 (r = sshpkt_send(ssh)) != 0)
366 return r; 369 goto out;
367 return 0; 370 /* success */
371 r = 0;
372 out:
373 free(algs);
374 return r;
368} 375}
369 376
370int 377int
@@ -435,6 +442,8 @@ kex_input_newkeys(int type, u_int32_t seq, void *ctxt)
435 ssh_dispatch_set(ssh, SSH2_MSG_NEWKEYS, &kex_protocol_error); 442 ssh_dispatch_set(ssh, SSH2_MSG_NEWKEYS, &kex_protocol_error);
436 if ((r = sshpkt_get_end(ssh)) != 0) 443 if ((r = sshpkt_get_end(ssh)) != 0)
437 return r; 444 return r;
445 if ((r = ssh_set_newkeys(ssh, MODE_IN)) != 0)
446 return r;
438 kex->done = 1; 447 kex->done = 1;
439 sshbuf_reset(kex->peer); 448 sshbuf_reset(kex->peer);
440 /* sshbuf_reset(kex->my); */ 449 /* sshbuf_reset(kex->my); */
@@ -795,10 +804,8 @@ kex_choose_conf(struct ssh *ssh)
795 char *ext; 804 char *ext;
796 805
797 ext = match_list("ext-info-c", peer[PROPOSAL_KEX_ALGS], NULL); 806 ext = match_list("ext-info-c", peer[PROPOSAL_KEX_ALGS], NULL);
798 if (ext) { 807 kex->ext_info_c = (ext != NULL);
799 kex->ext_info_c = 1; 808 free(ext);
800 free(ext);
801 }
802 } 809 }
803 810
804 /* Algorithm Negotiation */ 811 /* Algorithm Negotiation */
@@ -855,14 +862,14 @@ kex_choose_conf(struct ssh *ssh)
855 need = dh_need = 0; 862 need = dh_need = 0;
856 for (mode = 0; mode < MODE_MAX; mode++) { 863 for (mode = 0; mode < MODE_MAX; mode++) {
857 newkeys = kex->newkeys[mode]; 864 newkeys = kex->newkeys[mode];
858 need = MAX(need, newkeys->enc.key_len); 865 need = MAXIMUM(need, newkeys->enc.key_len);
859 need = MAX(need, newkeys->enc.block_size); 866 need = MAXIMUM(need, newkeys->enc.block_size);
860 need = MAX(need, newkeys->enc.iv_len); 867 need = MAXIMUM(need, newkeys->enc.iv_len);
861 need = MAX(need, newkeys->mac.key_len); 868 need = MAXIMUM(need, newkeys->mac.key_len);
862 dh_need = MAX(dh_need, cipher_seclen(newkeys->enc.cipher)); 869 dh_need = MAXIMUM(dh_need, cipher_seclen(newkeys->enc.cipher));
863 dh_need = MAX(dh_need, newkeys->enc.block_size); 870 dh_need = MAXIMUM(dh_need, newkeys->enc.block_size);
864 dh_need = MAX(dh_need, newkeys->enc.iv_len); 871 dh_need = MAXIMUM(dh_need, newkeys->enc.iv_len);
865 dh_need = MAX(dh_need, newkeys->mac.key_len); 872 dh_need = MAXIMUM(dh_need, newkeys->mac.key_len);
866 } 873 }
867 /* XXX need runden? */ 874 /* XXX need runden? */
868 kex->we_need = need; 875 kex->we_need = need;
@@ -893,7 +900,7 @@ derive_key(struct ssh *ssh, int id, u_int need, u_char *hash, u_int hashlen,
893 900
894 if ((mdsz = ssh_digest_bytes(kex->hash_alg)) == 0) 901 if ((mdsz = ssh_digest_bytes(kex->hash_alg)) == 0)
895 return SSH_ERR_INVALID_ARGUMENT; 902 return SSH_ERR_INVALID_ARGUMENT;
896 if ((digest = calloc(1, roundup(need, mdsz))) == NULL) { 903 if ((digest = calloc(1, ROUNDUP(need, mdsz))) == NULL) {
897 r = SSH_ERR_ALLOC_FAIL; 904 r = SSH_ERR_ALLOC_FAIL;
898 goto out; 905 goto out;
899 } 906 }
diff --git a/kex.h b/kex.h
index 8ed459a76..fd56171d2 100644
--- a/kex.h
+++ b/kex.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.h,v 1.78 2016/05/02 10:26:04 djm Exp $ */ 1/* $OpenBSD: kex.h,v 1.81 2016/09/28 21:44:52 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -50,17 +50,18 @@
50 50
51#define KEX_COOKIE_LEN 16 51#define KEX_COOKIE_LEN 16
52 52
53#define KEX_DH1 "diffie-hellman-group1-sha1" 53#define KEX_DH1 "diffie-hellman-group1-sha1"
54#define KEX_DH14_SHA1 "diffie-hellman-group14-sha1" 54#define KEX_DH14_SHA1 "diffie-hellman-group14-sha1"
55#define KEX_DH14_SHA256 "diffie-hellman-group14-sha256" 55#define KEX_DH14_SHA256 "diffie-hellman-group14-sha256"
56#define KEX_DH16_SHA512 "diffie-hellman-group16-sha512" 56#define KEX_DH16_SHA512 "diffie-hellman-group16-sha512"
57#define KEX_DH18_SHA512 "diffie-hellman-group18-sha512" 57#define KEX_DH18_SHA512 "diffie-hellman-group18-sha512"
58#define KEX_DHGEX_SHA1 "diffie-hellman-group-exchange-sha1" 58#define KEX_DHGEX_SHA1 "diffie-hellman-group-exchange-sha1"
59#define KEX_DHGEX_SHA256 "diffie-hellman-group-exchange-sha256" 59#define KEX_DHGEX_SHA256 "diffie-hellman-group-exchange-sha256"
60#define KEX_ECDH_SHA2_NISTP256 "ecdh-sha2-nistp256" 60#define KEX_ECDH_SHA2_NISTP256 "ecdh-sha2-nistp256"
61#define KEX_ECDH_SHA2_NISTP384 "ecdh-sha2-nistp384" 61#define KEX_ECDH_SHA2_NISTP384 "ecdh-sha2-nistp384"
62#define KEX_ECDH_SHA2_NISTP521 "ecdh-sha2-nistp521" 62#define KEX_ECDH_SHA2_NISTP521 "ecdh-sha2-nistp521"
63#define KEX_CURVE25519_SHA256 "curve25519-sha256@libssh.org" 63#define KEX_CURVE25519_SHA256 "curve25519-sha256"
64#define KEX_CURVE25519_SHA256_OLD "curve25519-sha256@libssh.org"
64 65
65#define COMP_NONE 0 66#define COMP_NONE 0
66#define COMP_ZLIB 1 67#define COMP_ZLIB 1
diff --git a/kexgexc.c b/kexgexc.c
index 71ff13352..ad0d1c8c0 100644
--- a/kexgexc.c
+++ b/kexgexc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexc.c,v 1.22 2015/05/26 23:23:40 dtucker Exp $ */ 1/* $OpenBSD: kexgexc.c,v 1.23 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -28,7 +28,6 @@
28 28
29#ifdef WITH_OPENSSL 29#ifdef WITH_OPENSSL
30 30
31#include <sys/param.h>
32#include <sys/types.h> 31#include <sys/types.h>
33 32
34#include <openssl/dh.h> 33#include <openssl/dh.h>
@@ -50,6 +49,7 @@
50#include "dispatch.h" 49#include "dispatch.h"
51#include "ssherr.h" 50#include "ssherr.h"
52#include "sshbuf.h" 51#include "sshbuf.h"
52#include "misc.h"
53 53
54static int input_kex_dh_gex_group(int, u_int32_t, void *); 54static int input_kex_dh_gex_group(int, u_int32_t, void *);
55static int input_kex_dh_gex_reply(int, u_int32_t, void *); 55static int input_kex_dh_gex_reply(int, u_int32_t, void *);
@@ -67,7 +67,7 @@ kexgex_client(struct ssh *ssh)
67 kex->max = DH_GRP_MAX; 67 kex->max = DH_GRP_MAX;
68 kex->nbits = nbits; 68 kex->nbits = nbits;
69 if (datafellows & SSH_BUG_DHGEX_LARGE) 69 if (datafellows & SSH_BUG_DHGEX_LARGE)
70 kex->nbits = MIN(kex->nbits, 4096); 70 kex->nbits = MINIMUM(kex->nbits, 4096);
71 /* New GEX request */ 71 /* New GEX request */
72 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST)) != 0 || 72 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST)) != 0 ||
73 (r = sshpkt_put_u32(ssh, kex->min)) != 0 || 73 (r = sshpkt_put_u32(ssh, kex->min)) != 0 ||
diff --git a/kexgexs.c b/kexgexs.c
index f4400dcbe..449603592 100644
--- a/kexgexs.c
+++ b/kexgexs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexs.c,v 1.29 2016/06/08 02:13:01 dtucker Exp $ */ 1/* $OpenBSD: kexgexs.c,v 1.30 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -28,7 +28,6 @@
28 28
29#ifdef WITH_OPENSSL 29#ifdef WITH_OPENSSL
30 30
31#include <sys/param.h> /* MIN MAX */
32 31
33#include <stdarg.h> 32#include <stdarg.h>
34#include <stdio.h> 33#include <stdio.h>
@@ -53,6 +52,7 @@
53#include "dispatch.h" 52#include "dispatch.h"
54#include "ssherr.h" 53#include "ssherr.h"
55#include "sshbuf.h" 54#include "sshbuf.h"
55#include "misc.h"
56 56
57static int input_kex_dh_gex_request(int, u_int32_t, void *); 57static int input_kex_dh_gex_request(int, u_int32_t, void *);
58static int input_kex_dh_gex_init(int, u_int32_t, void *); 58static int input_kex_dh_gex_init(int, u_int32_t, void *);
@@ -83,10 +83,10 @@ input_kex_dh_gex_request(int type, u_int32_t seq, void *ctxt)
83 kex->nbits = nbits; 83 kex->nbits = nbits;
84 kex->min = min; 84 kex->min = min;
85 kex->max = max; 85 kex->max = max;
86 min = MAX(DH_GRP_MIN, min); 86 min = MAXIMUM(DH_GRP_MIN, min);
87 max = MIN(DH_GRP_MAX, max); 87 max = MINIMUM(DH_GRP_MAX, max);
88 nbits = MAX(DH_GRP_MIN, nbits); 88 nbits = MAXIMUM(DH_GRP_MIN, nbits);
89 nbits = MIN(DH_GRP_MAX, nbits); 89 nbits = MINIMUM(DH_GRP_MAX, nbits);
90 90
91 if (kex->max < kex->min || kex->nbits < kex->min || 91 if (kex->max < kex->min || kex->nbits < kex->min ||
92 kex->max < kex->nbits || kex->max < DH_GRP_MIN) { 92 kex->max < kex->nbits || kex->max < DH_GRP_MIN) {
diff --git a/key.h b/key.h
index 34c992bd3..2e501a9f4 100644
--- a/key.h
+++ b/key.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: key.h,v 1.49 2015/12/04 16:41:28 markus Exp $ */ 1/* $OpenBSD: key.h,v 1.50 2016/09/12 23:31:27 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -74,7 +74,6 @@ int key_certify(Key *, Key *);
74void key_cert_copy(const Key *, Key *); 74void key_cert_copy(const Key *, Key *);
75int key_cert_check_authority(const Key *, int, int, const char *, 75int key_cert_check_authority(const Key *, int, int, const char *,
76 const char **); 76 const char **);
77char *key_alg_list(int, int);
78 77
79#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) 78#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC)
80int key_ec_validate_public(const EC_GROUP *, const EC_POINT *); 79int key_ec_validate_public(const EC_GROUP *, const EC_POINT *);
diff --git a/krl.c b/krl.c
index fff1a3f7c..e271a1934 100644
--- a/krl.c
+++ b/krl.c
@@ -14,11 +14,10 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17/* $OpenBSD: krl.c,v 1.37 2015/12/31 00:33:52 djm Exp $ */ 17/* $OpenBSD: krl.c,v 1.38 2016/09/12 01:22:38 deraadt Exp $ */
18 18
19#include "includes.h" 19#include "includes.h"
20 20
21#include <sys/param.h> /* MIN */
22#include <sys/types.h> 21#include <sys/types.h>
23#include <openbsd-compat/sys-tree.h> 22#include <openbsd-compat/sys-tree.h>
24#include <openbsd-compat/sys-queue.h> 23#include <openbsd-compat/sys-queue.h>
@@ -121,7 +120,7 @@ blob_cmp(struct revoked_blob *a, struct revoked_blob *b)
121 int r; 120 int r;
122 121
123 if (a->len != b->len) { 122 if (a->len != b->len) {
124 if ((r = memcmp(a->blob, b->blob, MIN(a->len, b->len))) != 0) 123 if ((r = memcmp(a->blob, b->blob, MINIMUM(a->len, b->len))) != 0)
125 return r; 124 return r;
126 return a->len > b->len ? 1 : -1; 125 return a->len > b->len ? 1 : -1;
127 } else 126 } else
@@ -458,9 +457,9 @@ choose_next_state(int current_state, u_int64_t contig, int final,
458 * Avoid unsigned overflows. 457 * Avoid unsigned overflows.
459 * The limits are high enough to avoid confusing the calculations. 458 * The limits are high enough to avoid confusing the calculations.
460 */ 459 */
461 contig = MIN(contig, 1ULL<<31); 460 contig = MINIMUM(contig, 1ULL<<31);
462 last_gap = MIN(last_gap, 1ULL<<31); 461 last_gap = MINIMUM(last_gap, 1ULL<<31);
463 next_gap = MIN(next_gap, 1ULL<<31); 462 next_gap = MINIMUM(next_gap, 1ULL<<31);
464 463
465 /* 464 /*
466 * Calculate the cost to switch from the current state to candidates. 465 * Calculate the cost to switch from the current state to candidates.
@@ -486,8 +485,8 @@ choose_next_state(int current_state, u_int64_t contig, int final,
486 /* Estimate base cost in bits of each section type */ 485 /* Estimate base cost in bits of each section type */
487 cost_list += 64 * contig + (final ? 0 : 8+64); 486 cost_list += 64 * contig + (final ? 0 : 8+64);
488 cost_range += (2 * 64) + (final ? 0 : 8+64); 487 cost_range += (2 * 64) + (final ? 0 : 8+64);
489 cost_bitmap += last_gap + contig + (final ? 0 : MIN(next_gap, 8+64)); 488 cost_bitmap += last_gap + contig + (final ? 0 : MINIMUM(next_gap, 8+64));
490 cost_bitmap_restart += contig + (final ? 0 : MIN(next_gap, 8+64)); 489 cost_bitmap_restart += contig + (final ? 0 : MINIMUM(next_gap, 8+64));
491 490
492 /* Convert to byte costs for actual comparison */ 491 /* Convert to byte costs for actual comparison */
493 cost_list = (cost_list + 7) / 8; 492 cost_list = (cost_list + 7) / 8;
diff --git a/mac.c b/mac.c
index 6b12cd197..5ba7fae19 100644
--- a/mac.c
+++ b/mac.c
@@ -64,8 +64,10 @@ static const struct macalg macs[] = {
64#endif 64#endif
65 { "hmac-md5", SSH_DIGEST, SSH_DIGEST_MD5, 0, 0, 0, 0 }, 65 { "hmac-md5", SSH_DIGEST, SSH_DIGEST_MD5, 0, 0, 0, 0 },
66 { "hmac-md5-96", SSH_DIGEST, SSH_DIGEST_MD5, 96, 0, 0, 0 }, 66 { "hmac-md5-96", SSH_DIGEST, SSH_DIGEST_MD5, 96, 0, 0, 0 },
67#ifdef HAVE_EVP_RIPEMD160
67 { "hmac-ripemd160", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 0 }, 68 { "hmac-ripemd160", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 0 },
68 { "hmac-ripemd160@openssh.com", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 0 }, 69 { "hmac-ripemd160@openssh.com", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 0 },
70#endif
69 { "umac-64@openssh.com", SSH_UMAC, 0, 0, 128, 64, 0 }, 71 { "umac-64@openssh.com", SSH_UMAC, 0, 0, 128, 64, 0 },
70 { "umac-128@openssh.com", SSH_UMAC128, 0, 0, 128, 128, 0 }, 72 { "umac-128@openssh.com", SSH_UMAC128, 0, 0, 128, 128, 0 },
71 73
@@ -78,7 +80,9 @@ static const struct macalg macs[] = {
78#endif 80#endif
79 { "hmac-md5-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_MD5, 0, 0, 0, 1 }, 81 { "hmac-md5-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_MD5, 0, 0, 0, 1 },
80 { "hmac-md5-96-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_MD5, 96, 0, 0, 1 }, 82 { "hmac-md5-96-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_MD5, 96, 0, 0, 1 },
83#ifdef HAVE_EVP_RIPEMD160
81 { "hmac-ripemd160-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 1 }, 84 { "hmac-ripemd160-etm@openssh.com", SSH_DIGEST, SSH_DIGEST_RIPEMD160, 0, 0, 0, 1 },
85#endif
82 { "umac-64-etm@openssh.com", SSH_UMAC, 0, 0, 128, 64, 1 }, 86 { "umac-64-etm@openssh.com", SSH_UMAC, 0, 0, 128, 64, 1 },
83 { "umac-128-etm@openssh.com", SSH_UMAC128, 0, 0, 128, 128, 1 }, 87 { "umac-128-etm@openssh.com", SSH_UMAC128, 0, 0, 128, 128, 1 },
84 88
diff --git a/match.c b/match.c
index 913b6bae0..c15dcd1ef 100644
--- a/match.c
+++ b/match.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.c,v 1.30 2015/05/04 06:10:48 djm Exp $ */ 1/* $OpenBSD: match.c,v 1.33 2016/11/06 05:46:37 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -191,11 +191,10 @@ match_host_and_ip(const char *host, const char *ipaddr,
191{ 191{
192 int mhost, mip; 192 int mhost, mip;
193 193
194 /* error in ipaddr match */
195 if ((mip = addr_match_list(ipaddr, patterns)) == -2) 194 if ((mip = addr_match_list(ipaddr, patterns)) == -2)
196 return -1; 195 return -1; /* error in ipaddr match */
197 else if (mip == -1) /* negative ip address match */ 196 else if (host == NULL || ipaddr == NULL || mip == -1)
198 return 0; 197 return 0; /* negative ip address match, or testing pattern */
199 198
200 /* negative hostname match */ 199 /* negative hostname match */
201 if ((mhost = match_hostname(host, patterns)) == -1) 200 if ((mhost = match_hostname(host, patterns)) == -1)
@@ -207,7 +206,9 @@ match_host_and_ip(const char *host, const char *ipaddr,
207} 206}
208 207
209/* 208/*
210 * match user, user@host_or_ip, user@host_or_ip_list against pattern 209 * Match user, user@host_or_ip, user@host_or_ip_list against pattern.
210 * If user, host and ipaddr are all NULL then validate pattern/
211 * Returns -1 on invalid pattern, 0 on no match, 1 on match.
211 */ 212 */
212int 213int
213match_user(const char *user, const char *host, const char *ipaddr, 214match_user(const char *user, const char *host, const char *ipaddr,
@@ -216,6 +217,14 @@ match_user(const char *user, const char *host, const char *ipaddr,
216 char *p, *pat; 217 char *p, *pat;
217 int ret; 218 int ret;
218 219
220 /* test mode */
221 if (user == NULL && host == NULL && ipaddr == NULL) {
222 if ((p = strchr(pattern, '@')) != NULL &&
223 match_host_and_ip(NULL, NULL, p + 1) < 0)
224 return -1;
225 return 0;
226 }
227
219 if ((p = strchr(pattern,'@')) == NULL) 228 if ((p = strchr(pattern,'@')) == NULL)
220 return match_pattern(user, pattern); 229 return match_pattern(user, pattern);
221 230
diff --git a/md5crypt.h b/md5crypt.h
index 2341e2c12..978e579c8 100644
--- a/md5crypt.h
+++ b/md5crypt.h
@@ -7,8 +7,6 @@
7 * ---------------------------------------------------------------------------- 7 * ----------------------------------------------------------------------------
8 */ 8 */
9 9
10/* $Id: md5crypt.h,v 1.4 2003/05/18 14:46:46 djm Exp $ */
11
12#ifndef _MD5CRYPT_H 10#ifndef _MD5CRYPT_H
13#define _MD5CRYPT_H 11#define _MD5CRYPT_H
14 12
diff --git a/mdoc2man.awk b/mdoc2man.awk
index 80e8d5ffa..3e8725452 100644
--- a/mdoc2man.awk
+++ b/mdoc2man.awk
@@ -321,6 +321,8 @@ function add(str) {
321 w=nwords 321 w=nwords
322 } else if(match(words[w],"^El$")) { 322 } else if(match(words[w],"^El$")) {
323 optlist=oldoptlist 323 optlist=oldoptlist
324 if(!optlist)
325 add(".PP")
324 } else if(match(words[w],"^Bk$")) { 326 } else if(match(words[w],"^Bk$")) {
325 if(match(words[w+1],"-words")) { 327 if(match(words[w+1],"-words")) {
326 w++ 328 w++
diff --git a/misc.c b/misc.c
index 68efb2b38..bf9153a61 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.c,v 1.105 2016/07/15 00:24:30 djm Exp $ */ 1/* $OpenBSD: misc.c,v 1.107 2016/11/30 00:28:31 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved.
@@ -1310,3 +1310,29 @@ forward_equals(const struct Forward *a, const struct Forward *b)
1310 return 1; 1310 return 1;
1311} 1311}
1312 1312
1313/* returns 1 if bind to specified port by specified user is permitted */
1314int
1315bind_permitted(int port, uid_t uid)
1316{
1317 if (port < IPPORT_RESERVED && uid != 0)
1318 return 0;
1319 return 1;
1320}
1321
1322/* returns 1 if process is already daemonized, 0 otherwise */
1323int
1324daemonized(void)
1325{
1326 int fd;
1327
1328 if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) {
1329 close(fd);
1330 return 0; /* have controlling terminal */
1331 }
1332 if (getppid() != 1)
1333 return 0; /* parent is not init */
1334 if (getsid(0) != getpid())
1335 return 0; /* not session leader */
1336 debug3("already daemonized");
1337 return 1;
1338}
diff --git a/misc.h b/misc.h
index 42cd95e42..8b223b55e 100644
--- a/misc.h
+++ b/misc.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.h,v 1.57 2016/07/15 00:24:30 djm Exp $ */ 1/* $OpenBSD: misc.h,v 1.61 2016/11/30 00:28:31 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -15,6 +15,8 @@
15#ifndef _MISC_H 15#ifndef _MISC_H
16#define _MISC_H 16#define _MISC_H
17 17
18#include <sys/time.h>
19
18/* Data structure for representing a forwarding request. */ 20/* Data structure for representing a forwarding request. */
19struct Forward { 21struct Forward {
20 char *listen_host; /* Host (address) to listen on. */ 22 char *listen_host; /* Host (address) to listen on. */
@@ -28,6 +30,8 @@ struct Forward {
28}; 30};
29 31
30int forward_equals(const struct Forward *, const struct Forward *); 32int forward_equals(const struct Forward *, const struct Forward *);
33int bind_permitted(int, uid_t);
34int daemonized(void);
31 35
32/* Common server and client forwarding options. */ 36/* Common server and client forwarding options. */
33struct ForwardOptions { 37struct ForwardOptions {
@@ -141,4 +145,8 @@ int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *);
141 145
142int secure_permissions(struct stat *st, uid_t uid); 146int secure_permissions(struct stat *st, uid_t uid);
143 147
148#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b))
149#define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))
150#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
151
144#endif /* _MISC_H */ 152#endif /* _MISC_H */
diff --git a/moduli b/moduli
index d4c9a70ec..00b5a6937 100644
--- a/moduli
+++ b/moduli
@@ -1,208 +1,431 @@
1# $OpenBSD: moduli,v 1.17 2016/03/01 04:23:08 dtucker Exp $ 1# $OpenBSD: moduli,v 1.18 2016/08/11 01:42:11 dtucker Exp $
2# Time Type Tests Tries Size Generator Modulus 2# Time Type Tests Tries Size Generator Modulus
320150520235007 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9A9C5F7 320160301052556 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D19F4647
420150520235015 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9CBB21F 420160301052601 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1A5C13B
520150520235039 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA2E9623 520160301052612 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1B7A3EF
620150520235043 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA33E3DF 620160301052620 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1C4C33B
720150520235057 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA68038B 720160301052628 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1CFFACB
820150520235114 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAAB0717 820160301052645 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1F31D8B
920150520235122 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC2A7FB 920160301052703 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D218C293
1020150520235125 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC82DD3 1020160301052723 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D24116E3
1120150520235154 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB40583F 1120160301052732 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D25321F3
1220150520235214 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB94F247 1220160301052741 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D260D8E3
1320150520235218 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB9DF49F 1320160301052748 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D26CD3D3
1420150520235239 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EBF7BE27 1420160301052756 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2791F7B
1520150520235244 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC0B4F4F 1520160301052823 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2B71133
1620150520235250 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC21070F 1620160301052827 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2BABBA3
1720150520235256 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC36541F 1720160301052832 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2BFC957
1820150520235307 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC5FE22B 1820160301052931 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3514117
1920150520235322 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECA1FB57 1920160301053017 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3BF91F7
2020150520235331 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECC3C823 2020160301053037 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3E9113F
2120150520235349 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED035187 2120160301053101 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D41BFA83
2220150520235400 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED2F07DB 2220160301053129 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D45A369F
2320150520235407 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED4620CF 2320160301053217 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D4CB8683
2420150520235422 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86D39F 2420160301053222 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D4D01463
2520150520235424 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86E683 2520160301053251 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D50F62C3
2620150520235427 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED8C3073 2620160301053309 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5351887
2720150520235443 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDCB1F63 2720160301053333 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D568358B
2820150520235450 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE00B77 2820160301053350 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D58AA31F
2920150520235452 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE42247 2920160301053359 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5991AF3
3020150520235458 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDF8F493 3020160301053438 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5F65E07
3120150520235503 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE04D69F 3120160301053523 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D65F37D3
3220150520235508 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE14B92B 3220160301053556 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6AB7E73
3320150520235510 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE167933 3320160301053608 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6C131CB
3420150520235517 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE2DC63B 3420160301053631 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6F18A93
3520150520235527 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE52259F 3520160301053647 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7132B7F
3620150520235539 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE829247 3620160301053724 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D76995EB
3720150520235557 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EED044BF 3720160301053743 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D793D27B
3820150520235608 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EEFD34CF 3820160301053757 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7AE856B
3920150520235614 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF0F709F 3920160301053820 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7E1810F
4020150520235616 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF12110B 4020160301053828 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7EC09EB
4120150520235622 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF25FE1F 4120160301053831 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7ECC2FB
4220150520235637 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF6BF4D3 4220160301053958 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D8B829CB
4320150520235654 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFAF28BF 4320160301054042 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D91CFCF3
4420150520235701 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFBFB8BB 4420160301054134 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251903103B
4520150520235704 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFC7A62F 4520160301054139 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519072B8B
4620150520235710 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFD79323 4620160301054157 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF25192F631F
4720150520235725 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0158F1F 4720160301054207 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF25193F9E7F
4820150520235728 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F01A9E6B 4820160301054213 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519475A1F
4920150520235743 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F055798B 4920160301054301 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519BA6807
5020150520235752 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0730BC3 5020160301054320 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519E2FA7F
5120150520235757 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F08283FF 5120160301054340 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251A0CD913
5220150520235825 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0F451E3 5220160301054413 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251A5B8A43
5320150520235830 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0FDEFB7 5320160301054511 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251AE66597
5420150520235901 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F1828ECF 5420160301054527 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B03A57F
5520150521000008 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F185D7BF 5520160301054544 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B276FBB
5620150521000011 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F18C58FB 5620160301054548 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B2915B3
5720150521000014 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F191F757 5720160301054621 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B79A4BB
5820150521000841 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CC7F06BB 5820160301054714 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251BF77377
5920150521001025 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD1057AB 5920160301054737 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251C28D853
6020150521001131 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD717D6F 6020160301054819 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251C8C959B
6120150521001248 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CDDA85F7 6120160301054844 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251CC0A39B
6220150521001453 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE8959BF 6220160301055002 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251D7C0A9F
6320150521001510 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE98227B 6320160301055021 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA0A72F
6420150521001623 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CEF967BF 6420160301055024 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA1003F
6520150521001651 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF18156B 6520160301055029 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA4B607
6620150521001758 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF717197 6620160301055034 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA82003
6720150521001924 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CFE1507B 6720160301055101 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DE323BB
6820150521002244 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D0F75427 6820160301055123 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E13DB33
6920150521002509 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D1BD2823 6920160301055136 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E2A2203
7020150521002808 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2B4950F 7020160301055141 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E2F180B
7120150521002846 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2E6D6D7 7120160301055208 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E6B2E8B
7220150521003203 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D3F5D0D3 7220160301055248 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251ECCA61B
7320150521003322 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D45851E3 7320160301055312 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251EFFD5C7
7420150521003430 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D4AEE517 7420160301055319 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F08AD6B
7520150521003629 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5538E0B 7520160301055413 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F881A4B
7620150521003714 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D58BAFCF 7620160301055420 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F8FC967
7720150521003722 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5916FC7 7720160301055438 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251FB8102B
7820150521003739 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5A378F7 7820160301055505 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251FF16983
7920150521004506 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D82B5113 7920160301061411 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C5D83833
8020150521004613 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D880CB43 8020160301061835 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C6AAA907
8120150521004753 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D909305B 8120160301062447 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C7D2DF17
8220150521004802 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D90DBDC3 8220160301062535 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C7F0856B
8320150521005025 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9CBF44F 8320160301062652 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C8266573
8420150521005051 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9E89DA7 8420160301062708 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C82B4297
8520150521005252 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DA8BA403 8520160301063801 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA342897
8620150521005347 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DAD07F73 8620160301063920 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA6B6B53
8720150521005825 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC5CE5A3 8720160301064001 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA83D25B
8820150521005858 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC84A597 8820160301064133 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CAC6E0AF
8920150521010014 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DCE62957 8920160301064312 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CB0B8B2F
9020150521010219 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DD9517D7 9020160301064624 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CB9E9EBB
9120150521011229 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F951FEB83 9120160301064954 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC41F773
9220150521011834 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F960399B7 9220160301065030 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC56680F
9320150521012438 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F96EE7973 9320160301065134 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC82B2B3
9420150521014010 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F99453213 9420160301065432 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CD0A0833
9520150521015607 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B549727 9520160301065614 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CD54CA17
9620150521015640 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B600A7B 9620160301070010 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE0A7B73
9720150521020946 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9D5299DF 9720160301070046 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE21045B
9820150521021536 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9E2793D3 9820160301070141 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE4560CB
9920150521022706 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9FE131CB 9920160301070334 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE9951EF
10020150521023922 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA1BAC073 10020160301070607 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF0C830B
10120150521025234 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3BC9483 10120160301070911 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF96B75B
10220150521025424 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3FB3513 10220160301070931 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF9EB207
10320150521032445 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA87E0FAB 10320160301071405 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D07614DB
10420150521032932 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA929F00F 10420160301071648 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D0F1177B
10520150521032947 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA92B272B 10520160301071915 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D15E484F
10620150521033245 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA9953D0B 10620160301071932 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D16371F3
10720150521034828 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FABDD4AEF 10720160301072032 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D18BD843
10820150521035044 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC298C7F 10820160301072158 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D1C7632B
10920150521035111 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC31F17B 10920160301072445 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D2450187
11020150521035749 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD250357 11020160301072709 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D2B15CFB
11120150521040009 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD788A73 11120160301073130 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D37B3327
11220150521040220 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADC5F173 11220160301073142 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D37C7FA3
11320150521040316 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADDFFC03 11320160301073822 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D4B57B13
11420150521041042 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAEEBDEB3 11420160301074016 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D50A615F
11520150521041443 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAF7AD7BB 11520160301074134 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5419827
11620150521041831 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB007D653 11620160301074208 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D554AA2F
11720150521041928 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB025C91B 11720160301074359 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5A29FEB
11820150521042301 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB0A4C143 11820160301074457 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5C6DA83
11920150521042631 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB12009F7 11920160301074620 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D601594B
12020150521042740 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB145360F 12020160301074846 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D66D7E6B
12120150521043358 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB22FAE93 12120160301074917 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D67D64E7
12220150521044013 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB31527AF 12220160301075053 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6C27B8B
12320150521044543 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB3DDFBB7 12320160301075132 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6DB9C33
12420150521004745 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F52665F2B 12420160301075225 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6FE9337
12520150521003352 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F57C7B577 12520160301075252 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D70AF577
12620150521005557 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F591BBC57 12620160301075345 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D72CB613
12720150521014228 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5BDF5CE7 12720160301075358 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D72F088B
12820150521015455 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5C9CFD1F 12820160301080151 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F1FA94507
12920150521001701 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5CF6FF9B 12920160301080332 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F1FF62A2F
13020150521002558 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5D7C4FE3 13020160301080512 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F203E0E3F
13120150521003319 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5DE41DFB 13120160301080759 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F20BE897F
13220150521003721 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5E1B5FAF 13220160301081008 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F211E8DAB
13320150521010943 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F600B866F 13320160301081510 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F220FBEBB
13420150521014141 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F61F01EC3 13420160301081725 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F22727C13
13520150521010312 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F65EAB753 13520160301082213 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2352279F
13620150521002914 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F69FD9357 13620160301083400 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F25905AEF
13720150521011058 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6C6B8513 13720160301083955 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26AB557B
13820150521013628 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6DE7D9EF 13820160301084035 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26C1D647
13920150521015040 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6EB0C897 13920160301084145 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26F0E75B
14020150521001307 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6F15473B 14020160301084827 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F282FE7DB
14120150521012712 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7377044B 14120160301084906 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2847CBF7
14220150521005218 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7767DEA3 14220160301085226 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F28E1E963
14320150521003512 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7C5546F7 14320160301085254 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F28EF835B
14420150521005420 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7D68EDC3 14420160301085737 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F29D012DB
14520150521011347 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7E859CF3 14520160301085933 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A259503
14620150521002429 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F819A93E7 14620160301090045 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A569E5F
14720150521004826 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F88D91A57 14720160301090201 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A89EEB7
14820150521010541 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F89D29B9F 14820160301090441 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B037B2F
14920150521012418 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8ADC38F7 14920160301090534 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B2559FB
15020150521015506 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8C91980B 15020160301090628 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B484193
15120150521004000 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8E369B97 15120160301092125 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2E1E1337
15220150521005659 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F2B1BEB 15220160301092513 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2ECC261B
15320150521010328 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F7DD1D3 15320160301093051 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2FD6418B
15420150521011152 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8FF052BB 15420160301101954 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E60ED3CB
15520150521001457 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F92940463 15520160301104238 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E7F21B53
15620150521011129 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F95C47DCB 15620160301105433 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E8EA1923
15720150521013515 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9710A103 15720160301110823 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EA099523
15820150521013841 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9733A497 15820160301111806 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EAD0379B
15920150521041810 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BE934407F 15920160301112515 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EB5F9FF7
16020150521070624 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BEEB1E407 16020160301112655 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EB7A3C73
16120150521051555 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BF50EEEC3 16120160301113152 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EBD8A1AF
16220150521061258 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C00AF225F 16220160301114603 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29ED0421CF
16320150521034225 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C058D5963 16320160301115854 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EE10BE07
16420150521035956 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C0616723F 16420160301122138 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EFED1757
16520150521054248 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C12F16C3F 16520160301124138 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F18BB82B
16620150521060112 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1379EA23 16620160301124341 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F1AE9F93
16720150521023340 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C165F2773 16720160301130540 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F378431B
16820150521043505 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1A3EC717 16820160301132038 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F4B041CB
16920150521024626 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C202ABED3 16920160301132156 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F4C33A3B
17020150521064303 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C27790087 17020160301133248 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F59F1817
17120150521060604 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C2F9DF583 17120160301135039 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F70D3707
17220150521062143 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3003EEAB 17220160301135200 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F720CFD3
17320150521044311 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C363D0A77 17320160301135955 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F7BFD4BF
17420150521053731 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C37D6EFCF 17420160301141625 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F9118567
17520150521065640 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3A20A2DF 17520160301143329 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA446E3B
17620150521044717 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3F622E8B 17620160301143411 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA4A5D73
17720150521065426 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C430ED7CB 17720160301143511 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA57571B
17820150521023632 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C445E575B 17820160301145341 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FBCEC3DB
17920150521032945 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C45EEE643 17920160301150532 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FCBAFB3B
18020150521054538 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C49FB77CB 18020160301150756 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FCE5B5B3
18120150521024620 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C4D86D0FB 18120160301151026 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FD119B83
18220150521042108 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C505E524B 18220160301152435 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FE2CAD43
18320150521041835 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD3703FA7 18320160301152638 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FE504DD3
18420150521051726 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD4CEF96F 18420160301153829 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF425A73
18520150521074626 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD86439C3 18520160301154015 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF5FBCDB
18620150521082439 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD947F7F3 18620160301154135 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF725ADF
18720150521012012 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CE0694343 18720160301154325 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF9005B3
18820150521073153 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CE93D436F 18820160301155218 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A00430653
18920150521094433 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CEC4EE993 18920160301160626 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A01612A43
19020150521074128 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CFA190CE3 19020160301160831 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A01842FE7
19120150521014004 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D0235296F 19120160301161542 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A020ED50B
19220150521014736 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D025961EB 19220160301165149 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54C87A80B
19320150521065737 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D0961218F 19320160301165241 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54C91EA2B
19420150521043653 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D163706C7 19420160301165750 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54CFA74E3
19520150521085322 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1BC6858F 19520160301173839 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5504AEAFB
19620150521093922 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1CC27FE3 19620160301174247 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5509AF4D7
19720150521120407 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1FE2874F 19720160301174504 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE550BFB1D7
19820150521124157 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D20A8A19B 19820160301180608 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5526F5F0F
19920150521035417 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D24E0665B 19920160301181854 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55377C36B
20020150521062806 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D2828F7AB 20020160301182221 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE553B4B8F3
20120150521074218 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D29B42017 20120160301183911 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55510470B
20220150521114937 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D2F027D3F 20220160301184110 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE555338897
20320150521073847 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D3905A9FF 20320160301184426 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55571A23F
20420150521024512 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D41DB2FFB 20420160301190148 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE556DEB983
20520150521024827 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D41E2852F 20520160301192446 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE558BD1523
20620150521042402 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D43D9B0E3 20620160301193428 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE559875F5F
20720150521083756 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D491D852F 20720160301193505 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5598BF0AB
20820150521113241 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D4CAD7D8B 20820160301194148 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55A0E82C3
20920160301195020 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55AB8837B
21020160301195917 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55B6C5AB3
21120160301200332 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55BBC661B
21220160301201317 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55C7D9887
21320160301201523 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55CA30A3B
21420160301202029 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55D044403
21520160301203514 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55E324A43
21620160301203700 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55E4D607B
21720160301204309 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55EC519A7
21820160301205135 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55F6BDE23
21920160301205244 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55F7B0B23
22020160301205520 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55FA81627
22120160301205558 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55FACF2AF
22220160301213318 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE562B75737
22320160301214847 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE563F5D2EB
22420160301215746 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE564AA7C23
22520160301220025 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE564DC00EB
22620160301222154 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5669AE6CF
22720160301223932 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE567FEFC33
22820160301225302 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE569139497
22920160301225705 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5695E7AB7
23020160301230308 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE569D3D2B3
23120160301230751 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56A2CD9CB
23220160301231012 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56A537EDB
23320160301231655 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56AD78EE3
23420160301232437 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56B7299EB
23520160301232518 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56B78E563
23620160302001351 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF880CFD33
23720160302060207 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF915C8E67
23820160302080221 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9484D603
23920160302085858 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF95FD5243
24020160302110323 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF99425D23
24120160302115537 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9AA4530F
24220160302121026 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9AFF17B3
24320160302125303 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9C1752FB
24420160302132855 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9D055A3B
24520160302145027 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9F210C3B
24620160302160128 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA0F799CF
24720160302164318 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA205C49B
24820160302193543 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA66F725B
24920160302223446 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAB045BFF
25020160302230706 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFABD44B9F
25120160303005014 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAE7817DB
25220160303013053 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAF76805B
25320160303031806 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB234F5BB
25420160303034446 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB2DCD713
25520160303042131 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB3CABEBB
25620160303052710 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB569F28F
25720160303064237 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB744D6A7
25820160303074318 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB8C38E87
25920160303091435 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBB0B707F
26020160303111232 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE003643
26120160303112343 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE40A0B3
26220160303113550 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE87B0BF
26320160303120708 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBF49A92B
26420160303122005 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBF954093
26520160303134821 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFC1C0AD17
26620160303183137 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFC8B45457
26720160303204451 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCBFBCF5B
26820160303210530 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCC756893
26920160303224116 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCEC94F0B
27020160304002011 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213AE3B5BB
27120160304013213 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213CCC818F
27220160304014837 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213D3357F7
27320160304050100 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21426DAC33
27420160304070516 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2145B0AFE3
27520160304085926 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2148A9E96B
27620160304092251 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21493F5C9B
27720160304092815 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21495C2BA3
27820160304115839 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F214D4FED23
27920160304122842 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F214E130FAF
28020160304143749 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215161823F
28120160304160139 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2153888D53
28220160304160440 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215394B933
28320160304162214 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215400CF9B
28420160304212008 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215BACC633
28520160304221341 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215D065E4F
28620160304221614 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215D0E8A6F
28720160305022340 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216368CBBB
28820160305044620 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216709F6C7
28920160305053801 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2168484233
29020160305060125 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2168D0E0E7
29120160305081042 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216C1797FB
29220160305094218 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E608403
29320160305095044 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E8BAD0F
29420160305095440 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E9B001F
29520160305111737 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2170A72F1B
29620160305152313 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2176C19D53
29720160305152947 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2176E37BCB
29820160305154608 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F217744E9E3
29920160305161226 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2177E547CF
30020160305173357 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2179D3586B
30120160305235825 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B0B4DFC33
30220160306022229 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B0D65D0DB
30320160306093737 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B13D7D927
30420160306094452 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B13E933BB
30520160306160337 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1971D123
30620160306224032 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1F3B6DAB
30720160306225345 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1F6160BF
30820160306233854 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2005324F
30920160307010902 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B214E9673
31020160307051433 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B24C9A09F
31120160307062817 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B25CA759B
31220160307113227 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2A201EFB
31320160307123109 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2AEC017F
31420160307185147 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3059D223
31520160308031623 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3779276B
31620160308074434 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3B36AF7F
31720160308080500 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3B735E1B
31820160308090559 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3C46A863
31920160308204809 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B45F50A43
32020160308220844 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B47098FDB
32120160309000534 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4893E51B
32220160309035855 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4B9D5AF3
32320160309042540 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4BEF4FBB
32420160309152136 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B54B515AB
32520160309192852 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B57FBEBF7
32620160310013359 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B5CE29283
32720160310035549 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B5EB8EE13
32820160310075706 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B61EA384F
32920160310173812 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6993761B
33020160310190029 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6A9FDA07
33120160310193821 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6B156863
33220160311033330 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B714D2463
33320160311043906 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B7225A617
33420160311054129 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B72E8A083
33520160311060123 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B7320D78F
33620160311060829 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B732F58C3
33720160311071819 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B740FC84B
33820160311081031 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B74B68FAF
33920160311170649 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9B171F787
34020160311195449 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9B3EAFC07
34120160312113901 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9C1FC4A03
34220160312141825 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9C45A6C9B
34320160312221956 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9CB35C95F
34420160313023234 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9CED021AB
34520160313062450 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9D2124DF7
34620160313135733 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9D880F89B
34720160314002320 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9E14CBED3
34820160314074608 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9E75C54D3
34920160314135741 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9EC7E3DAB
35020160314140815 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9EC9AC0E7
35120160314202745 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F1BD98C3
35220160314223316 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F36F08D3
35320160315005016 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F54715BF
35420160315013952 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F5E3A7F3
35520160315060542 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F968A573
35620160315072619 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FA7969D3
35720160315105849 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FD4C31DB
35820160315120521 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FE292087
35920160315121136 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FE352FC3
36020160315152946 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA00CB151B
36120160315165331 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA01DFD347
36220160315184225 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA034D7527
36320160315214330 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA05A75E33
36420160316020204 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA0912D52F
36520160316065014 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA0CD7441F
36620160316121031 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA1102A093
36720160316165356 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA14B5C017
36820160316191831 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA168B1623
36920160316230539 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA1974D157
37020160317204037 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F505984F7
37120160317232704 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F52635AA3
37220160318065706 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F57FAD16B
37320160318115527 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F5BAEDEAF
37420160318183751 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F608FC39F
37520160318220732 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F6315D9EB
37620160318231533 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F63E5739F
37720160319161235 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F7037DD73
37820160319230645 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F751E7BE3
37920160320013744 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F76DF3D47
38020160320040506 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F789CABBF
38120160321132428 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F8FC5A85B
38220160321160901 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F91961EDF
38320160321181311 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F92F8EDBB
38420160321224946 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9615911F
38520160321230806 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F963FE5D3
38620160322064427 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9B60592B
38720160322090339 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9CE9AD5B
38820160322103202 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9DDFC97B
38920160322120630 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9EE9F43F
39020160322130823 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9F927B4B
39120160322151455 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA0F6C9EB
39220160322151924 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA0FAAD73
39320160323004347 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA73E643F
39420160323011842 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA794B363
39520160323041407 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA98073AF
39620160323042341 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA992813B
39720160324042502 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FB9535E6F
39820160324084810 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FBC2024D3
39920160324112528 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FBDCE47F7
40020160324195325 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FC34000DF
40120160325054405 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD3C9827F7
40220160325073844 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD3DFD683B
40320160326035547 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD4D2BE973
40420160326072058 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD4FA14E4B
40520160326092507 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD511CC0FB
40620160326124028 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD537EA3E7
40720160326204702 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD595EF333
40820160327004038 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD5C324F5B
40920160327062851 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD606E1A47
41020160327081155 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD61A5005F
41120160327123555 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD64D2A70F
41220160327223323 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6BD47A7B
41320160328011117 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6DAD19BF
41420160328031621 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6F1E5643
41520160328081352 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7291B183
41620160328130100 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD75E7418B
41720160328200420 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7AC63CBB
41820160328203420 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7B12C7E3
41920160329051003 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD80FE5033
42020160329150013 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD87A1FCEB
42120160329205744 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD8BA2A65B
42220160330010039 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD8E545E13
42320160330064620 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD922B39AB
42420160330195544 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9AE926F7
42520160330202118 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9B2841A3
42620160331010824 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9E522A6F
42720160331155606 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDA80BFF2B
42820160401003202 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDADA756E7
42920160401083841 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB2E0BFC7
43020160401133333 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB612067F
43120160401171656 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB86F198B
diff --git a/moduli.c b/moduli.c
index ed1bdc946..e983b07b7 100644
--- a/moduli.c
+++ b/moduli.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: moduli.c,v 1.30 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: moduli.c,v 1.31 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright 1994 Phil Karn <karn@qualcomm.com> 3 * Copyright 1994 Phil Karn <karn@qualcomm.com>
4 * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> 4 * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com>
@@ -41,7 +41,6 @@
41 41
42#ifdef WITH_OPENSSL 42#ifdef WITH_OPENSSL
43 43
44#include <sys/param.h> /* MAX */
45#include <sys/types.h> 44#include <sys/types.h>
46 45
47#include <openssl/bn.h> 46#include <openssl/bn.h>
@@ -609,7 +608,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted,
609 608
610 if (checkpoint_file != NULL) 609 if (checkpoint_file != NULL)
611 last_processed = read_checkpoint(checkpoint_file); 610 last_processed = read_checkpoint(checkpoint_file);
612 last_processed = start_lineno = MAX(last_processed, start_lineno); 611 last_processed = start_lineno = MAXIMUM(last_processed, start_lineno);
613 if (end_lineno == ULONG_MAX) 612 if (end_lineno == ULONG_MAX)
614 debug("process from line %lu from pipe", last_processed); 613 debug("process from line %lu from pipe", last_processed);
615 else 614 else
diff --git a/monitor.c b/monitor.c
index e91054e5f..64286a128 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.c,v 1.161 2016/07/22 03:39:13 djm Exp $ */ 1/* $OpenBSD: monitor.c,v 1.166 2016/09/28 16:33:06 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -94,7 +94,6 @@
94#include "misc.h" 94#include "misc.h"
95#include "servconf.h" 95#include "servconf.h"
96#include "monitor.h" 96#include "monitor.h"
97#include "monitor_mm.h"
98#ifdef GSSAPI 97#ifdef GSSAPI
99#include "ssh-gss.h" 98#include "ssh-gss.h"
100#endif 99#endif
@@ -172,10 +171,6 @@ static int monitor_read_log(struct monitor *);
172 171
173static Authctxt *authctxt; 172static Authctxt *authctxt;
174 173
175#ifdef WITH_SSH1
176static BIGNUM *ssh1_challenge = NULL; /* used for ssh1 rsa auth */
177#endif
178
179/* local state for key verify */ 174/* local state for key verify */
180static u_char *key_blob = NULL; 175static u_char *key_blob = NULL;
181static u_int key_bloblen = 0; 176static u_int key_bloblen = 0;
@@ -216,9 +211,9 @@ struct mon_table mon_dispatch_proto20[] = {
216#ifdef USE_PAM 211#ifdef USE_PAM
217 {MONITOR_REQ_PAM_START, MON_ONCE, mm_answer_pam_start}, 212 {MONITOR_REQ_PAM_START, MON_ONCE, mm_answer_pam_start},
218 {MONITOR_REQ_PAM_ACCOUNT, 0, mm_answer_pam_account}, 213 {MONITOR_REQ_PAM_ACCOUNT, 0, mm_answer_pam_account},
219 {MONITOR_REQ_PAM_INIT_CTX, MON_ISAUTH, mm_answer_pam_init_ctx}, 214 {MONITOR_REQ_PAM_INIT_CTX, MON_ONCE, mm_answer_pam_init_ctx},
220 {MONITOR_REQ_PAM_QUERY, MON_ISAUTH, mm_answer_pam_query}, 215 {MONITOR_REQ_PAM_QUERY, 0, mm_answer_pam_query},
221 {MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond}, 216 {MONITOR_REQ_PAM_RESPOND, MON_ONCE, mm_answer_pam_respond},
222 {MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx}, 217 {MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx},
223#endif 218#endif
224#ifdef SSH_AUDIT_EVENTS 219#ifdef SSH_AUDIT_EVENTS
@@ -236,9 +231,9 @@ struct mon_table mon_dispatch_proto20[] = {
236 {MONITOR_REQ_KEYVERIFY, MON_AUTH, mm_answer_keyverify}, 231 {MONITOR_REQ_KEYVERIFY, MON_AUTH, mm_answer_keyverify},
237#ifdef GSSAPI 232#ifdef GSSAPI
238 {MONITOR_REQ_GSSSETUP, MON_ISAUTH, mm_answer_gss_setup_ctx}, 233 {MONITOR_REQ_GSSSETUP, MON_ISAUTH, mm_answer_gss_setup_ctx},
239 {MONITOR_REQ_GSSSTEP, MON_ISAUTH, mm_answer_gss_accept_ctx}, 234 {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx},
240 {MONITOR_REQ_GSSUSEROK, MON_AUTH, mm_answer_gss_userok}, 235 {MONITOR_REQ_GSSUSEROK, MON_ONCE|MON_AUTHDECIDE, mm_answer_gss_userok},
241 {MONITOR_REQ_GSSCHECKMIC, MON_ISAUTH, mm_answer_gss_checkmic}, 236 {MONITOR_REQ_GSSCHECKMIC, MON_ONCE, mm_answer_gss_checkmic},
242 {MONITOR_REQ_GSSSIGN, MON_ONCE, mm_answer_gss_sign}, 237 {MONITOR_REQ_GSSSIGN, MON_ONCE, mm_answer_gss_sign},
243#endif 238#endif
244 {0, 0, NULL} 239 {0, 0, NULL}
@@ -265,52 +260,6 @@ struct mon_table mon_dispatch_postauth20[] = {
265 {0, 0, NULL} 260 {0, 0, NULL}
266}; 261};
267 262
268struct mon_table mon_dispatch_proto15[] = {
269#ifdef WITH_SSH1
270 {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow},
271 {MONITOR_REQ_SESSKEY, MON_ONCE, mm_answer_sesskey},
272 {MONITOR_REQ_SESSID, MON_ONCE, mm_answer_sessid},
273 {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword},
274 {MONITOR_REQ_RSAKEYALLOWED, MON_ISAUTH|MON_ALOG, mm_answer_rsa_keyallowed},
275 {MONITOR_REQ_KEYALLOWED, MON_ISAUTH|MON_ALOG, mm_answer_keyallowed},
276 {MONITOR_REQ_RSACHALLENGE, MON_ONCE, mm_answer_rsa_challenge},
277 {MONITOR_REQ_RSARESPONSE, MON_ONCE|MON_AUTHDECIDE, mm_answer_rsa_response},
278#ifdef BSD_AUTH
279 {MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery},
280 {MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH, mm_answer_bsdauthrespond},
281#endif
282#ifdef SKEY
283 {MONITOR_REQ_SKEYQUERY, MON_ISAUTH, mm_answer_skeyquery},
284 {MONITOR_REQ_SKEYRESPOND, MON_AUTH, mm_answer_skeyrespond},
285#endif
286#ifdef USE_PAM
287 {MONITOR_REQ_PAM_START, MON_ONCE, mm_answer_pam_start},
288 {MONITOR_REQ_PAM_ACCOUNT, 0, mm_answer_pam_account},
289 {MONITOR_REQ_PAM_INIT_CTX, MON_ISAUTH, mm_answer_pam_init_ctx},
290 {MONITOR_REQ_PAM_QUERY, MON_ISAUTH, mm_answer_pam_query},
291 {MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond},
292 {MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx},
293#endif
294#ifdef SSH_AUDIT_EVENTS
295 {MONITOR_REQ_AUDIT_EVENT, MON_PERMIT, mm_answer_audit_event},
296#endif
297#endif /* WITH_SSH1 */
298 {0, 0, NULL}
299};
300
301struct mon_table mon_dispatch_postauth15[] = {
302#ifdef WITH_SSH1
303 {MONITOR_REQ_PTY, MON_ONCE, mm_answer_pty},
304 {MONITOR_REQ_PTYCLEANUP, MON_ONCE, mm_answer_pty_cleanup},
305 {MONITOR_REQ_TERM, 0, mm_answer_term},
306#ifdef SSH_AUDIT_EVENTS
307 {MONITOR_REQ_AUDIT_EVENT, MON_PERMIT, mm_answer_audit_event},
308 {MONITOR_REQ_AUDIT_COMMAND, MON_PERMIT|MON_ONCE, mm_answer_audit_command},
309#endif
310#endif /* WITH_SSH1 */
311 {0, 0, NULL}
312};
313
314struct mon_table *mon_dispatch; 263struct mon_table *mon_dispatch;
315 264
316/* Specifies if a certain message is allowed at the moment */ 265/* Specifies if a certain message is allowed at the moment */
@@ -359,21 +308,14 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
359 308
360 authctxt->loginmsg = &loginmsg; 309 authctxt->loginmsg = &loginmsg;
361 310
362 if (compat20) { 311 mon_dispatch = mon_dispatch_proto20;
363 mon_dispatch = mon_dispatch_proto20; 312 /* Permit requests for moduli and signatures */
364 313 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);
365 /* Permit requests for moduli and signatures */ 314 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);
366 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);
367 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);
368#ifdef GSSAPI 315#ifdef GSSAPI
369 /* and for the GSSAPI key exchange */ 316 /* and for the GSSAPI key exchange */
370 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); 317 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);
371#endif 318#endif
372 } else {
373 mon_dispatch = mon_dispatch_proto15;
374
375 monitor_permit(mon_dispatch, MONITOR_REQ_SESSKEY, 1);
376 }
377 319
378 /* The first few requests do not require asynchronous access */ 320 /* The first few requests do not require asynchronous access */
379 while (!authenticated) { 321 while (!authenticated) {
@@ -384,9 +326,6 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
384 326
385 /* Special handling for multiple required authentications */ 327 /* Special handling for multiple required authentications */
386 if (options.num_auth_methods != 0) { 328 if (options.num_auth_methods != 0) {
387 if (!compat20)
388 fatal("AuthenticationMethods is not supported"
389 "with SSH protocol 1");
390 if (authenticated && 329 if (authenticated &&
391 !auth2_update_methods_lists(authctxt, 330 !auth2_update_methods_lists(authctxt,
392 auth_method, auth_submethod)) { 331 auth_method, auth_submethod)) {
@@ -470,21 +409,17 @@ monitor_child_postauth(struct monitor *pmonitor)
470 signal(SIGXFSZ, SIG_IGN); 409 signal(SIGXFSZ, SIG_IGN);
471#endif 410#endif
472 411
473 if (compat20) { 412 mon_dispatch = mon_dispatch_postauth20;
474 mon_dispatch = mon_dispatch_postauth20;
475 413
476 /* Permit requests for moduli and signatures */ 414 /* Permit requests for moduli and signatures */
477 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); 415 monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);
478 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); 416 monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);
479 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); 417 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);
480#ifdef GSSAPI 418#ifdef GSSAPI
481 /* and for the GSSAPI key exchange */ 419 /* and for the GSSAPI key exchange */
482 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); 420 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);
483#endif 421#endif
484 } else { 422
485 mon_dispatch = mon_dispatch_postauth15;
486 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);
487 }
488 if (!no_pty_flag) { 423 if (!no_pty_flag) {
489 monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); 424 monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1);
490 monitor_permit(mon_dispatch, MONITOR_REQ_PTYCLEANUP, 1); 425 monitor_permit(mon_dispatch, MONITOR_REQ_PTYCLEANUP, 1);
@@ -494,31 +429,6 @@ monitor_child_postauth(struct monitor *pmonitor)
494 monitor_read(pmonitor, mon_dispatch, NULL); 429 monitor_read(pmonitor, mon_dispatch, NULL);
495} 430}
496 431
497void
498monitor_sync(struct monitor *pmonitor)
499{
500 if (options.compression) {
501 /* The member allocation is not visible, so sync it */
502 mm_share_sync(&pmonitor->m_zlib, &pmonitor->m_zback);
503 }
504}
505
506/* Allocation functions for zlib */
507static void *
508mm_zalloc(struct mm_master *mm, u_int ncount, u_int size)
509{
510 if (size == 0 || ncount == 0 || ncount > SIZE_MAX / size)
511 fatal("%s: mm_zalloc(%u, %u)", __func__, ncount, size);
512
513 return mm_malloc(mm, size * ncount);
514}
515
516static void
517mm_zfree(struct mm_master *mm, void *address)
518{
519 mm_free(mm, address);
520}
521
522static int 432static int
523monitor_read_log(struct monitor *pmonitor) 433monitor_read_log(struct monitor *pmonitor)
524{ 434{
@@ -864,7 +774,7 @@ mm_answer_pwnamallow(int sock, Buffer *m)
864#undef M_CP_STRARRAYOPT 774#undef M_CP_STRARRAYOPT
865 775
866 /* Create valid auth method lists */ 776 /* Create valid auth method lists */
867 if (compat20 && auth2_setup_methods_lists(authctxt) != 0) { 777 if (auth2_setup_methods_lists(authctxt) != 0) {
868 /* 778 /*
869 * The monitor will continue long enough to let the child 779 * The monitor will continue long enough to let the child
870 * run to it's packet_disconnect(), but it must not allow any 780 * run to it's packet_disconnect(), but it must not allow any
@@ -876,15 +786,11 @@ mm_answer_pwnamallow(int sock, Buffer *m)
876 debug3("%s: sending MONITOR_ANS_PWNAM: %d", __func__, allowed); 786 debug3("%s: sending MONITOR_ANS_PWNAM: %d", __func__, allowed);
877 mm_request_send(sock, MONITOR_ANS_PWNAM, m); 787 mm_request_send(sock, MONITOR_ANS_PWNAM, m);
878 788
879 /* For SSHv1 allow authentication now */ 789 /* Allow service/style information on the auth context */
880 if (!compat20) 790 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1);
881 monitor_permit_authentications(1); 791 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1);
882 else { 792 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1);
883 /* Allow service/style information on the auth context */ 793
884 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1);
885 monitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1);
886 monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1);
887 }
888#ifdef USE_PAM 794#ifdef USE_PAM
889 if (options.use_pam) 795 if (options.use_pam)
890 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_START, 1); 796 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_START, 1);
@@ -955,6 +861,8 @@ mm_answer_authpassword(int sock, Buffer *m)
955 int authenticated; 861 int authenticated;
956 u_int plen; 862 u_int plen;
957 863
864 if (!options.password_authentication)
865 fatal("%s: password authentication not enabled", __func__);
958 passwd = buffer_get_string(m, &plen); 866 passwd = buffer_get_string(m, &plen);
959 /* Only authenticate if the context is valid */ 867 /* Only authenticate if the context is valid */
960 authenticated = options.password_authentication && 868 authenticated = options.password_authentication &&
@@ -991,6 +899,8 @@ mm_answer_bsdauthquery(int sock, Buffer *m)
991 char **prompts; 899 char **prompts;
992 u_int success; 900 u_int success;
993 901
902 if (!options.kbd_interactive_authentication)
903 fatal("%s: kbd-int authentication not enabled", __func__);
994 success = bsdauth_query(authctxt, &name, &infotxt, &numprompts, 904 success = bsdauth_query(authctxt, &name, &infotxt, &numprompts,
995 &prompts, &echo_on) < 0 ? 0 : 1; 905 &prompts, &echo_on) < 0 ? 0 : 1;
996 906
@@ -1018,6 +928,8 @@ mm_answer_bsdauthrespond(int sock, Buffer *m)
1018 char *response; 928 char *response;
1019 int authok; 929 int authok;
1020 930
931 if (!options.kbd_interactive_authentication)
932 fatal("%s: kbd-int authentication not enabled", __func__);
1021 if (authctxt->as == NULL) 933 if (authctxt->as == NULL)
1022 fatal("%s: no bsd auth session", __func__); 934 fatal("%s: no bsd auth session", __func__);
1023 935
@@ -1034,11 +946,8 @@ mm_answer_bsdauthrespond(int sock, Buffer *m)
1034 debug3("%s: sending authenticated: %d", __func__, authok); 946 debug3("%s: sending authenticated: %d", __func__, authok);
1035 mm_request_send(sock, MONITOR_ANS_BSDAUTHRESPOND, m); 947 mm_request_send(sock, MONITOR_ANS_BSDAUTHRESPOND, m);
1036 948
1037 if (compat20) { 949 auth_method = "keyboard-interactive";
1038 auth_method = "keyboard-interactive"; 950 auth_submethod = "bsdauth";
1039 auth_submethod = "bsdauth";
1040 } else
1041 auth_method = "bsdauth";
1042 951
1043 return (authok != 0); 952 return (authok != 0);
1044} 953}
@@ -1104,6 +1013,8 @@ mm_answer_pam_start(int sock, Buffer *m)
1104 start_pam(authctxt); 1013 start_pam(authctxt);
1105 1014
1106 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_ACCOUNT, 1); 1015 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_ACCOUNT, 1);
1016 if (options.kbd_interactive_authentication)
1017 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1);
1107 1018
1108 return (0); 1019 return (0);
1109} 1020}
@@ -1114,7 +1025,7 @@ mm_answer_pam_account(int sock, Buffer *m)
1114 u_int ret; 1025 u_int ret;
1115 1026
1116 if (!options.use_pam) 1027 if (!options.use_pam)
1117 fatal("UsePAM not set, but ended up in %s anyway", __func__); 1028 fatal("%s: PAM not enabled", __func__);
1118 1029
1119 ret = do_pam_account(); 1030 ret = do_pam_account();
1120 1031
@@ -1133,11 +1044,16 @@ int
1133mm_answer_pam_init_ctx(int sock, Buffer *m) 1044mm_answer_pam_init_ctx(int sock, Buffer *m)
1134{ 1045{
1135 debug3("%s", __func__); 1046 debug3("%s", __func__);
1047 if (!options.kbd_interactive_authentication)
1048 fatal("%s: kbd-int authentication not enabled", __func__);
1049 if (sshpam_ctxt != NULL)
1050 fatal("%s: already called", __func__);
1136 sshpam_ctxt = (sshpam_device.init_ctx)(authctxt); 1051 sshpam_ctxt = (sshpam_device.init_ctx)(authctxt);
1137 sshpam_authok = NULL; 1052 sshpam_authok = NULL;
1138 buffer_clear(m); 1053 buffer_clear(m);
1139 if (sshpam_ctxt != NULL) { 1054 if (sshpam_ctxt != NULL) {
1140 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1); 1055 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1);
1056 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_QUERY, 1);
1141 buffer_put_int(m, 1); 1057 buffer_put_int(m, 1);
1142 } else { 1058 } else {
1143 buffer_put_int(m, 0); 1059 buffer_put_int(m, 0);
@@ -1155,11 +1071,15 @@ mm_answer_pam_query(int sock, Buffer *m)
1155 1071
1156 debug3("%s", __func__); 1072 debug3("%s", __func__);
1157 sshpam_authok = NULL; 1073 sshpam_authok = NULL;
1158 ret = (sshpam_device.query)(sshpam_ctxt, &name, &info, &num, &prompts, &echo_on); 1074 if (sshpam_ctxt == NULL)
1075 fatal("%s: no context", __func__);
1076 ret = (sshpam_device.query)(sshpam_ctxt, &name, &info,
1077 &num, &prompts, &echo_on);
1159 if (ret == 0 && num == 0) 1078 if (ret == 0 && num == 0)
1160 sshpam_authok = sshpam_ctxt; 1079 sshpam_authok = sshpam_ctxt;
1161 if (num > 1 || name == NULL || info == NULL) 1080 if (num > 1 || name == NULL || info == NULL)
1162 ret = -1; 1081 fatal("sshpam_device.query failed");
1082 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_RESPOND, 1);
1163 buffer_clear(m); 1083 buffer_clear(m);
1164 buffer_put_int(m, ret); 1084 buffer_put_int(m, ret);
1165 buffer_put_cstring(m, name); 1085 buffer_put_cstring(m, name);
@@ -1189,6 +1109,8 @@ mm_answer_pam_respond(int sock, Buffer *m)
1189 int ret; 1109 int ret;
1190 1110
1191 debug3("%s", __func__); 1111 debug3("%s", __func__);
1112 if (sshpam_ctxt == NULL)
1113 fatal("%s: no context", __func__);
1192 sshpam_authok = NULL; 1114 sshpam_authok = NULL;
1193 num = buffer_get_int(m); 1115 num = buffer_get_int(m);
1194 if (num > 0) { 1116 if (num > 0) {
@@ -1218,10 +1140,14 @@ mm_answer_pam_free_ctx(int sock, Buffer *m)
1218 int r = sshpam_authok != NULL && sshpam_authok == sshpam_ctxt; 1140 int r = sshpam_authok != NULL && sshpam_authok == sshpam_ctxt;
1219 1141
1220 debug3("%s", __func__); 1142 debug3("%s", __func__);
1143 if (sshpam_ctxt == NULL)
1144 fatal("%s: no context", __func__);
1221 (sshpam_device.free_ctx)(sshpam_ctxt); 1145 (sshpam_device.free_ctx)(sshpam_ctxt);
1222 sshpam_ctxt = sshpam_authok = NULL; 1146 sshpam_ctxt = sshpam_authok = NULL;
1223 buffer_clear(m); 1147 buffer_clear(m);
1224 mm_request_send(sock, MONITOR_ANS_PAM_FREE_CTX, m); 1148 mm_request_send(sock, MONITOR_ANS_PAM_FREE_CTX, m);
1149 /* Allow another attempt */
1150 monitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1);
1225 auth_method = "keyboard-interactive"; 1151 auth_method = "keyboard-interactive";
1226 auth_submethod = "pam"; 1152 auth_submethod = "pam";
1227 return r; 1153 return r;
@@ -1248,10 +1174,6 @@ mm_answer_keyallowed(int sock, Buffer *m)
1248 1174
1249 key = key_from_blob(blob, bloblen); 1175 key = key_from_blob(blob, bloblen);
1250 1176
1251 if ((compat20 && type == MM_RSAHOSTKEY) ||
1252 (!compat20 && type != MM_RSAHOSTKEY))
1253 fatal("%s: key type and protocol mismatch", __func__);
1254
1255 debug3("%s: key_from_blob: %p", __func__, key); 1177 debug3("%s: key_from_blob: %p", __func__, key);
1256 1178
1257 if (key != NULL && authctxt->valid) { 1179 if (key != NULL && authctxt->valid) {
@@ -1285,17 +1207,6 @@ mm_answer_keyallowed(int sock, Buffer *m)
1285 cuser, chost); 1207 cuser, chost);
1286 auth_method = "hostbased"; 1208 auth_method = "hostbased";
1287 break; 1209 break;
1288#ifdef WITH_SSH1
1289 case MM_RSAHOSTKEY:
1290 key->type = KEY_RSA1; /* XXX */
1291 allowed = options.rhosts_rsa_authentication &&
1292 auth_rhosts_rsa_key_allowed(authctxt->pw,
1293 cuser, chost, key);
1294 if (options.rhosts_rsa_authentication && allowed != 1)
1295 auth_clear_options();
1296 auth_method = "rsa";
1297 break;
1298#endif
1299 default: 1210 default:
1300 fatal("%s: unknown key type %d", __func__, type); 1211 fatal("%s: unknown key type %d", __func__, type);
1301 break; 1212 break;
@@ -1332,9 +1243,6 @@ mm_answer_keyallowed(int sock, Buffer *m)
1332 1243
1333 mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m); 1244 mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m);
1334 1245
1335 if (type == MM_RSAHOSTKEY)
1336 monitor_permit(mon_dispatch, MONITOR_REQ_RSACHALLENGE, allowed);
1337
1338 return (0); 1246 return (0);
1339} 1247}
1340 1248
@@ -1527,9 +1435,6 @@ mm_record_login(Session *s, struct passwd *pw)
1527 socklen_t fromlen; 1435 socklen_t fromlen;
1528 struct sockaddr_storage from; 1436 struct sockaddr_storage from;
1529 1437
1530 if (options.use_login)
1531 return;
1532
1533 /* 1438 /*
1534 * Get IP address of client. If the connection is not a socket, let 1439 * Get IP address of client. If the connection is not a socket, let
1535 * the address be 0.0.0.0. 1440 * the address be 0.0.0.0.
@@ -1643,186 +1548,6 @@ mm_answer_pty_cleanup(int sock, Buffer *m)
1643 return (0); 1548 return (0);
1644} 1549}
1645 1550
1646#ifdef WITH_SSH1
1647int
1648mm_answer_sesskey(int sock, Buffer *m)
1649{
1650 BIGNUM *p;
1651 int rsafail;
1652
1653 /* Turn off permissions */
1654 monitor_permit(mon_dispatch, MONITOR_REQ_SESSKEY, 0);
1655
1656 if ((p = BN_new()) == NULL)
1657 fatal("%s: BN_new", __func__);
1658
1659 buffer_get_bignum2(m, p);
1660
1661 rsafail = ssh1_session_key(p);
1662
1663 buffer_clear(m);
1664 buffer_put_int(m, rsafail);
1665 buffer_put_bignum2(m, p);
1666
1667 BN_clear_free(p);
1668
1669 mm_request_send(sock, MONITOR_ANS_SESSKEY, m);
1670
1671 /* Turn on permissions for sessid passing */
1672 monitor_permit(mon_dispatch, MONITOR_REQ_SESSID, 1);
1673
1674 return (0);
1675}
1676
1677int
1678mm_answer_sessid(int sock, Buffer *m)
1679{
1680 int i;
1681
1682 debug3("%s entering", __func__);
1683
1684 if (buffer_len(m) != 16)
1685 fatal("%s: bad ssh1 session id", __func__);
1686 for (i = 0; i < 16; i++)
1687 session_id[i] = buffer_get_char(m);
1688
1689 /* Turn on permissions for getpwnam */
1690 monitor_permit(mon_dispatch, MONITOR_REQ_PWNAM, 1);
1691
1692 return (0);
1693}
1694
1695int
1696mm_answer_rsa_keyallowed(int sock, Buffer *m)
1697{
1698 BIGNUM *client_n;
1699 Key *key = NULL;
1700 u_char *blob = NULL;
1701 u_int blen = 0;
1702 int allowed = 0;
1703
1704 debug3("%s entering", __func__);
1705
1706 auth_method = "rsa";
1707 if (options.rsa_authentication && authctxt->valid) {
1708 if ((client_n = BN_new()) == NULL)
1709 fatal("%s: BN_new", __func__);
1710 buffer_get_bignum2(m, client_n);
1711 allowed = auth_rsa_key_allowed(authctxt->pw, client_n, &key);
1712 BN_clear_free(client_n);
1713 }
1714 buffer_clear(m);
1715 buffer_put_int(m, allowed);
1716 buffer_put_int(m, forced_command != NULL);
1717
1718 /* clear temporarily storage (used by generate challenge) */
1719 monitor_reset_key_state();
1720
1721 if (allowed && key != NULL) {
1722 key->type = KEY_RSA; /* cheat for key_to_blob */
1723 if (key_to_blob(key, &blob, &blen) == 0)
1724 fatal("%s: key_to_blob failed", __func__);
1725 buffer_put_string(m, blob, blen);
1726
1727 /* Save temporarily for comparison in verify */
1728 key_blob = blob;
1729 key_bloblen = blen;
1730 key_blobtype = MM_RSAUSERKEY;
1731 }
1732 if (key != NULL)
1733 key_free(key);
1734
1735 mm_request_send(sock, MONITOR_ANS_RSAKEYALLOWED, m);
1736
1737 monitor_permit(mon_dispatch, MONITOR_REQ_RSACHALLENGE, allowed);
1738 monitor_permit(mon_dispatch, MONITOR_REQ_RSARESPONSE, 0);
1739 return (0);
1740}
1741
1742int
1743mm_answer_rsa_challenge(int sock, Buffer *m)
1744{
1745 Key *key = NULL;
1746 u_char *blob;
1747 u_int blen;
1748
1749 debug3("%s entering", __func__);
1750
1751 if (!authctxt->valid)
1752 fatal("%s: authctxt not valid", __func__);
1753 blob = buffer_get_string(m, &blen);
1754 if (!monitor_allowed_key(blob, blen))
1755 fatal("%s: bad key, not previously allowed", __func__);
1756 if (key_blobtype != MM_RSAUSERKEY && key_blobtype != MM_RSAHOSTKEY)
1757 fatal("%s: key type mismatch", __func__);
1758 if ((key = key_from_blob(blob, blen)) == NULL)
1759 fatal("%s: received bad key", __func__);
1760 if (key->type != KEY_RSA)
1761 fatal("%s: received bad key type %d", __func__, key->type);
1762 key->type = KEY_RSA1;
1763 if (ssh1_challenge)
1764 BN_clear_free(ssh1_challenge);
1765 ssh1_challenge = auth_rsa_generate_challenge(key);
1766
1767 buffer_clear(m);
1768 buffer_put_bignum2(m, ssh1_challenge);
1769
1770 debug3("%s sending reply", __func__);
1771 mm_request_send(sock, MONITOR_ANS_RSACHALLENGE, m);
1772
1773 monitor_permit(mon_dispatch, MONITOR_REQ_RSARESPONSE, 1);
1774
1775 free(blob);
1776 key_free(key);
1777 return (0);
1778}
1779
1780int
1781mm_answer_rsa_response(int sock, Buffer *m)
1782{
1783 Key *key = NULL;
1784 u_char *blob, *response;
1785 u_int blen, len;
1786 int success;
1787
1788 debug3("%s entering", __func__);
1789
1790 if (!authctxt->valid)
1791 fatal("%s: authctxt not valid", __func__);
1792 if (ssh1_challenge == NULL)
1793 fatal("%s: no ssh1_challenge", __func__);
1794
1795 blob = buffer_get_string(m, &blen);
1796 if (!monitor_allowed_key(blob, blen))
1797 fatal("%s: bad key, not previously allowed", __func__);
1798 if (key_blobtype != MM_RSAUSERKEY && key_blobtype != MM_RSAHOSTKEY)
1799 fatal("%s: key type mismatch: %d", __func__, key_blobtype);
1800 if ((key = key_from_blob(blob, blen)) == NULL)
1801 fatal("%s: received bad key", __func__);
1802 response = buffer_get_string(m, &len);
1803 if (len != 16)
1804 fatal("%s: received bad response to challenge", __func__);
1805 success = auth_rsa_verify_response(key, ssh1_challenge, response);
1806
1807 free(blob);
1808 key_free(key);
1809 free(response);
1810
1811 auth_method = key_blobtype == MM_RSAUSERKEY ? "rsa" : "rhosts-rsa";
1812
1813 /* reset state */
1814 BN_clear_free(ssh1_challenge);
1815 ssh1_challenge = NULL;
1816 monitor_reset_key_state();
1817
1818 buffer_clear(m);
1819 buffer_put_int(m, success);
1820 mm_request_send(sock, MONITOR_ANS_RSARESPONSE, m);
1821
1822 return (success);
1823}
1824#endif
1825
1826int 1551int
1827mm_answer_term(int sock, Buffer *req) 1552mm_answer_term(int sock, Buffer *req)
1828{ 1553{
@@ -1931,13 +1656,6 @@ monitor_apply_keystate(struct monitor *pmonitor)
1931 kex->host_key_index=&get_hostkey_index; 1656 kex->host_key_index=&get_hostkey_index;
1932 kex->sign = sshd_hostkey_sign; 1657 kex->sign = sshd_hostkey_sign;
1933 } 1658 }
1934
1935 /* Update with new address */
1936 if (options.compression) {
1937 ssh_packet_set_compress_hooks(ssh, pmonitor->m_zlib,
1938 (ssh_packet_comp_alloc_func *)mm_zalloc,
1939 (ssh_packet_comp_free_func *)mm_zfree);
1940 }
1941} 1659}
1942 1660
1943/* This function requries careful sanity checking */ 1661/* This function requries careful sanity checking */
@@ -1990,24 +1708,11 @@ monitor_openfds(struct monitor *mon, int do_logfds)
1990struct monitor * 1708struct monitor *
1991monitor_init(void) 1709monitor_init(void)
1992{ 1710{
1993 struct ssh *ssh = active_state; /* XXX */
1994 struct monitor *mon; 1711 struct monitor *mon;
1995 1712
1996 mon = xcalloc(1, sizeof(*mon)); 1713 mon = xcalloc(1, sizeof(*mon));
1997
1998 monitor_openfds(mon, 1); 1714 monitor_openfds(mon, 1);
1999 1715
2000 /* Used to share zlib space across processes */
2001 if (options.compression) {
2002 mon->m_zback = mm_create(NULL, MM_MEMSIZE);
2003 mon->m_zlib = mm_create(mon->m_zback, 20 * MM_MEMSIZE);
2004
2005 /* Compression needs to share state across borders */
2006 ssh_packet_set_compress_hooks(ssh, mon->m_zlib,
2007 (ssh_packet_comp_alloc_func *)mm_zalloc,
2008 (ssh_packet_comp_free_func *)mm_zfree);
2009 }
2010
2011 return mon; 1716 return mon;
2012} 1717}
2013 1718
@@ -2026,7 +1731,7 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m)
2026 u_int len; 1731 u_int len;
2027 1732
2028 if (!options.gss_authentication && !options.gss_keyex) 1733 if (!options.gss_authentication && !options.gss_keyex)
2029 fatal("In GSSAPI monitor when GSSAPI is disabled"); 1734 fatal("%s: GSSAPI not enabled", __func__);
2030 1735
2031 goid.elements = buffer_get_string(m, &len); 1736 goid.elements = buffer_get_string(m, &len);
2032 goid.length = len; 1737 goid.length = len;
@@ -2056,7 +1761,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2056 u_int len; 1761 u_int len;
2057 1762
2058 if (!options.gss_authentication && !options.gss_keyex) 1763 if (!options.gss_authentication && !options.gss_keyex)
2059 fatal("In GSSAPI monitor when GSSAPI is disabled"); 1764 fatal("%s: GSSAPI not enabled", __func__);
2060 1765
2061 in.value = buffer_get_string(m, &len); 1766 in.value = buffer_get_string(m, &len);
2062 in.length = len; 1767 in.length = len;
@@ -2088,7 +1793,7 @@ mm_answer_gss_checkmic(int sock, Buffer *m)
2088 u_int len; 1793 u_int len;
2089 1794
2090 if (!options.gss_authentication && !options.gss_keyex) 1795 if (!options.gss_authentication && !options.gss_keyex)
2091 fatal("In GSSAPI monitor when GSSAPI is disabled"); 1796 fatal("%s: GSSAPI not enabled", __func__);
2092 1797
2093 gssbuf.value = buffer_get_string(m, &len); 1798 gssbuf.value = buffer_get_string(m, &len);
2094 gssbuf.length = len; 1799 gssbuf.length = len;
@@ -2117,7 +1822,7 @@ mm_answer_gss_userok(int sock, Buffer *m)
2117 int authenticated; 1822 int authenticated;
2118 1823
2119 if (!options.gss_authentication && !options.gss_keyex) 1824 if (!options.gss_authentication && !options.gss_keyex)
2120 fatal("In GSSAPI monitor when GSSAPI is disabled"); 1825 fatal("%s: GSSAPI not enabled", __func__);
2121 1826
2122 authenticated = authctxt->valid && 1827 authenticated = authctxt->valid &&
2123 ssh_gssapi_userok(authctxt->user, authctxt->pw); 1828 ssh_gssapi_userok(authctxt->user, authctxt->pw);
@@ -2143,7 +1848,7 @@ mm_answer_gss_sign(int socket, Buffer *m)
2143 u_int len; 1848 u_int len;
2144 1849
2145 if (!options.gss_authentication && !options.gss_keyex) 1850 if (!options.gss_authentication && !options.gss_keyex)
2146 fatal("In GSSAPI monitor when GSSAPI is disabled"); 1851 fatal("%s: GSSAPI not enabled", __func__);
2147 1852
2148 data.value = buffer_get_string(m, &len); 1853 data.value = buffer_get_string(m, &len);
2149 data.length = len; 1854 data.length = len;
@@ -2183,6 +1888,9 @@ mm_answer_gss_updatecreds(int socket, Buffer *m) {
2183 ssh_gssapi_ccache store; 1888 ssh_gssapi_ccache store;
2184 int ok; 1889 int ok;
2185 1890
1891 if (!options.gss_authentication && !options.gss_keyex)
1892 fatal("%s: GSSAPI not enabled", __func__);
1893
2186 store.filename = buffer_get_string(m, NULL); 1894 store.filename = buffer_get_string(m, NULL);
2187 store.envvar = buffer_get_string(m, NULL); 1895 store.envvar = buffer_get_string(m, NULL);
2188 store.envval = buffer_get_string(m, NULL); 1896 store.envval = buffer_get_string(m, NULL);
diff --git a/monitor.h b/monitor.h
index 2d82b8b84..4c7955d7a 100644
--- a/monitor.h
+++ b/monitor.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.h,v 1.19 2015/01/19 19:52:16 markus Exp $ */ 1/* $OpenBSD: monitor.h,v 1.20 2016/09/28 16:33:07 djm Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -72,21 +72,17 @@ enum monitor_reqtype {
72 72
73}; 73};
74 74
75struct mm_master;
76struct monitor { 75struct monitor {
77 int m_recvfd; 76 int m_recvfd;
78 int m_sendfd; 77 int m_sendfd;
79 int m_log_recvfd; 78 int m_log_recvfd;
80 int m_log_sendfd; 79 int m_log_sendfd;
81 struct mm_master *m_zback;
82 struct mm_master *m_zlib;
83 struct kex **m_pkex; 80 struct kex **m_pkex;
84 pid_t m_pid; 81 pid_t m_pid;
85}; 82};
86 83
87struct monitor *monitor_init(void); 84struct monitor *monitor_init(void);
88void monitor_reinit(struct monitor *); 85void monitor_reinit(struct monitor *);
89void monitor_sync(struct monitor *);
90 86
91struct Authctxt; 87struct Authctxt;
92void monitor_child_preauth(struct Authctxt *, struct monitor *); 88void monitor_child_preauth(struct Authctxt *, struct monitor *);
diff --git a/monitor_mm.c b/monitor_mm.c
deleted file mode 100644
index aa47b2ed5..000000000
--- a/monitor_mm.c
+++ /dev/null
@@ -1,357 +0,0 @@
1/* $OpenBSD: monitor_mm.c,v 1.21 2015/02/06 23:21:59 millert Exp $ */
2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include "includes.h"
28
29#include <sys/types.h>
30#ifdef HAVE_SYS_MMAN_H
31#include <sys/mman.h>
32#endif
33#include "openbsd-compat/sys-tree.h"
34
35#include <errno.h>
36#include <stdarg.h>
37#include <stddef.h>
38#ifdef HAVE_STDINT_H
39#include <stdint.h>
40#endif
41#include <stdlib.h>
42#include <string.h>
43
44#include "xmalloc.h"
45#include "ssh.h"
46#include "log.h"
47#include "monitor_mm.h"
48
49static int
50mm_compare(struct mm_share *a, struct mm_share *b)
51{
52 ptrdiff_t diff = (char *)a->address - (char *)b->address;
53
54 if (diff == 0)
55 return (0);
56 else if (diff < 0)
57 return (-1);
58 else
59 return (1);
60}
61
62RB_GENERATE(mmtree, mm_share, next, mm_compare)
63
64static struct mm_share *
65mm_make_entry(struct mm_master *mm, struct mmtree *head,
66 void *address, size_t size)
67{
68 struct mm_share *tmp, *tmp2;
69
70 if (mm->mmalloc == NULL)
71 tmp = xcalloc(1, sizeof(struct mm_share));
72 else
73 tmp = mm_xmalloc(mm->mmalloc, sizeof(struct mm_share));
74 tmp->address = address;
75 tmp->size = size;
76
77 tmp2 = RB_INSERT(mmtree, head, tmp);
78 if (tmp2 != NULL)
79 fatal("mm_make_entry(%p): double address %p->%p(%zu)",
80 mm, tmp2, address, size);
81
82 return (tmp);
83}
84
85/* Creates a shared memory area of a certain size */
86
87struct mm_master *
88mm_create(struct mm_master *mmalloc, size_t size)
89{
90 void *address;
91 struct mm_master *mm;
92
93 if (mmalloc == NULL)
94 mm = xcalloc(1, sizeof(struct mm_master));
95 else
96 mm = mm_xmalloc(mmalloc, sizeof(struct mm_master));
97
98 /*
99 * If the memory map has a mm_master it can be completely
100 * shared including authentication between the child
101 * and the client.
102 */
103 mm->mmalloc = mmalloc;
104
105 address = xmmap(size);
106 if (address == (void *)MAP_FAILED)
107 fatal("mmap(%zu): %s", size, strerror(errno));
108
109 mm->address = address;
110 mm->size = size;
111
112 RB_INIT(&mm->rb_free);
113 RB_INIT(&mm->rb_allocated);
114
115 mm_make_entry(mm, &mm->rb_free, address, size);
116
117 return (mm);
118}
119
120/* Frees either the allocated or the free list */
121
122static void
123mm_freelist(struct mm_master *mmalloc, struct mmtree *head)
124{
125 struct mm_share *mms, *next;
126
127 for (mms = RB_ROOT(head); mms; mms = next) {
128 next = RB_NEXT(mmtree, head, mms);
129 RB_REMOVE(mmtree, head, mms);
130 if (mmalloc == NULL)
131 free(mms);
132 else
133 mm_free(mmalloc, mms);
134 }
135}
136
137/* Destroys a memory mapped area */
138
139void
140mm_destroy(struct mm_master *mm)
141{
142 mm_freelist(mm->mmalloc, &mm->rb_free);
143 mm_freelist(mm->mmalloc, &mm->rb_allocated);
144
145#ifdef HAVE_MMAP
146 if (munmap(mm->address, mm->size) == -1)
147 fatal("munmap(%p, %zu): %s", mm->address, mm->size,
148 strerror(errno));
149#else
150 fatal("%s: UsePrivilegeSeparation=yes and Compression=yes not supported",
151 __func__);
152#endif
153 if (mm->mmalloc == NULL)
154 free(mm);
155 else
156 mm_free(mm->mmalloc, mm);
157}
158
159void *
160mm_xmalloc(struct mm_master *mm, size_t size)
161{
162 void *address;
163
164 address = mm_malloc(mm, size);
165 if (address == NULL)
166 fatal("%s: mm_malloc(%zu)", __func__, size);
167 memset(address, 0, size);
168 return (address);
169}
170
171
172/* Allocates data from a memory mapped area */
173
174void *
175mm_malloc(struct mm_master *mm, size_t size)
176{
177 struct mm_share *mms, *tmp;
178
179 if (size == 0)
180 fatal("mm_malloc: try to allocate 0 space");
181 if (size > SIZE_MAX - MM_MINSIZE + 1)
182 fatal("mm_malloc: size too big");
183
184 size = ((size + (MM_MINSIZE - 1)) / MM_MINSIZE) * MM_MINSIZE;
185
186 RB_FOREACH(mms, mmtree, &mm->rb_free) {
187 if (mms->size >= size)
188 break;
189 }
190
191 if (mms == NULL)
192 return (NULL);
193
194 /* Debug */
195 memset(mms->address, 0xd0, size);
196
197 tmp = mm_make_entry(mm, &mm->rb_allocated, mms->address, size);
198
199 /* Does not change order in RB tree */
200 mms->size -= size;
201 mms->address = (char *)mms->address + size;
202
203 if (mms->size == 0) {
204 RB_REMOVE(mmtree, &mm->rb_free, mms);
205 if (mm->mmalloc == NULL)
206 free(mms);
207 else
208 mm_free(mm->mmalloc, mms);
209 }
210
211 return (tmp->address);
212}
213
214/* Frees memory in a memory mapped area */
215
216void
217mm_free(struct mm_master *mm, void *address)
218{
219 struct mm_share *mms, *prev, tmp;
220
221 tmp.address = address;
222 mms = RB_FIND(mmtree, &mm->rb_allocated, &tmp);
223 if (mms == NULL)
224 fatal("mm_free(%p): can not find %p", mm, address);
225
226 /* Debug */
227 memset(mms->address, 0xd0, mms->size);
228
229 /* Remove from allocated list and insert in free list */
230 RB_REMOVE(mmtree, &mm->rb_allocated, mms);
231 if (RB_INSERT(mmtree, &mm->rb_free, mms) != NULL)
232 fatal("mm_free(%p): double address %p", mm, address);
233
234 /* Find previous entry */
235 prev = mms;
236 if (RB_LEFT(prev, next)) {
237 prev = RB_LEFT(prev, next);
238 while (RB_RIGHT(prev, next))
239 prev = RB_RIGHT(prev, next);
240 } else {
241 if (RB_PARENT(prev, next) &&
242 (prev == RB_RIGHT(RB_PARENT(prev, next), next)))
243 prev = RB_PARENT(prev, next);
244 else {
245 while (RB_PARENT(prev, next) &&
246 (prev == RB_LEFT(RB_PARENT(prev, next), next)))
247 prev = RB_PARENT(prev, next);
248 prev = RB_PARENT(prev, next);
249 }
250 }
251
252 /* Check if range does not overlap */
253 if (prev != NULL && MM_ADDRESS_END(prev) > address)
254 fatal("mm_free: memory corruption: %p(%zu) > %p",
255 prev->address, prev->size, address);
256
257 /* See if we can merge backwards */
258 if (prev != NULL && MM_ADDRESS_END(prev) == address) {
259 prev->size += mms->size;
260 RB_REMOVE(mmtree, &mm->rb_free, mms);
261 if (mm->mmalloc == NULL)
262 free(mms);
263 else
264 mm_free(mm->mmalloc, mms);
265 } else
266 prev = mms;
267
268 if (prev == NULL)
269 return;
270
271 /* Check if we can merge forwards */
272 mms = RB_NEXT(mmtree, &mm->rb_free, prev);
273 if (mms == NULL)
274 return;
275
276 if (MM_ADDRESS_END(prev) > mms->address)
277 fatal("mm_free: memory corruption: %p < %p(%zu)",
278 mms->address, prev->address, prev->size);
279 if (MM_ADDRESS_END(prev) != mms->address)
280 return;
281
282 prev->size += mms->size;
283 RB_REMOVE(mmtree, &mm->rb_free, mms);
284
285 if (mm->mmalloc == NULL)
286 free(mms);
287 else
288 mm_free(mm->mmalloc, mms);
289}
290
291static void
292mm_sync_list(struct mmtree *oldtree, struct mmtree *newtree,
293 struct mm_master *mm, struct mm_master *mmold)
294{
295 struct mm_master *mmalloc = mm->mmalloc;
296 struct mm_share *mms, *new;
297
298 /* Sync free list */
299 RB_FOREACH(mms, mmtree, oldtree) {
300 /* Check the values */
301 mm_memvalid(mmold, mms, sizeof(struct mm_share));
302 mm_memvalid(mm, mms->address, mms->size);
303
304 new = mm_xmalloc(mmalloc, sizeof(struct mm_share));
305 memcpy(new, mms, sizeof(struct mm_share));
306 RB_INSERT(mmtree, newtree, new);
307 }
308}
309
310void
311mm_share_sync(struct mm_master **pmm, struct mm_master **pmmalloc)
312{
313 struct mm_master *mm;
314 struct mm_master *mmalloc;
315 struct mm_master *mmold;
316 struct mmtree rb_free, rb_allocated;
317
318 debug3("%s: Share sync", __func__);
319
320 mm = *pmm;
321 mmold = mm->mmalloc;
322 mm_memvalid(mmold, mm, sizeof(*mm));
323
324 mmalloc = mm_create(NULL, mm->size);
325 mm = mm_xmalloc(mmalloc, sizeof(struct mm_master));
326 memcpy(mm, *pmm, sizeof(struct mm_master));
327 mm->mmalloc = mmalloc;
328
329 rb_free = mm->rb_free;
330 rb_allocated = mm->rb_allocated;
331
332 RB_INIT(&mm->rb_free);
333 RB_INIT(&mm->rb_allocated);
334
335 mm_sync_list(&rb_free, &mm->rb_free, mm, mmold);
336 mm_sync_list(&rb_allocated, &mm->rb_allocated, mm, mmold);
337
338 mm_destroy(mmold);
339
340 *pmm = mm;
341 *pmmalloc = mmalloc;
342
343 debug3("%s: Share sync end", __func__);
344}
345
346void
347mm_memvalid(struct mm_master *mm, void *address, size_t size)
348{
349 void *end = (char *)address + size;
350
351 if (address < mm->address)
352 fatal("mm_memvalid: address too small: %p", address);
353 if (end < address)
354 fatal("mm_memvalid: end < address: %p < %p", end, address);
355 if (end > MM_ADDRESS_END(mm))
356 fatal("mm_memvalid: address too large: %p", address);
357}
diff --git a/monitor_mm.h b/monitor_mm.h
deleted file mode 100644
index f1fae7e3b..000000000
--- a/monitor_mm.h
+++ /dev/null
@@ -1,62 +0,0 @@
1/* $OpenBSD: monitor_mm.h,v 1.6 2014/01/04 17:50:55 tedu Exp $ */
2
3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef _MM_H_
29#define _MM_H_
30
31struct mm_share {
32 RB_ENTRY(mm_share) next;
33 void *address;
34 size_t size;
35};
36
37struct mm_master {
38 RB_HEAD(mmtree, mm_share) rb_free;
39 struct mmtree rb_allocated;
40 void *address;
41 size_t size;
42
43 struct mm_master *mmalloc; /* Used to completely share */
44};
45
46RB_PROTOTYPE(mmtree, mm_share, next, mm_compare)
47
48#define MM_MINSIZE 128
49
50#define MM_ADDRESS_END(x) (void *)((char *)(x)->address + (x)->size)
51
52struct mm_master *mm_create(struct mm_master *, size_t);
53void mm_destroy(struct mm_master *);
54
55void mm_share_sync(struct mm_master **, struct mm_master **);
56
57void *mm_malloc(struct mm_master *, size_t);
58void *mm_xmalloc(struct mm_master *, size_t);
59void mm_free(struct mm_master *, void *);
60
61void mm_memvalid(struct mm_master *, void *, size_t);
62#endif /* _MM_H_ */
diff --git a/monitor_wrap.c b/monitor_wrap.c
index 11e3a6956..2ff8064a0 100644
--- a/monitor_wrap.c
+++ b/monitor_wrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.c,v 1.88 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.c,v 1.89 2016/08/13 17:47:41 markus Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -85,7 +85,6 @@
85#include "ssherr.h" 85#include "ssherr.h"
86 86
87/* Imports */ 87/* Imports */
88extern int compat20;
89extern z_stream incoming_stream; 88extern z_stream incoming_stream;
90extern z_stream outgoing_stream; 89extern z_stream outgoing_stream;
91extern struct monitor *pmonitor; 90extern struct monitor *pmonitor;
@@ -407,18 +406,6 @@ mm_hostbased_key_allowed(struct passwd *pw, const char *user, const char *host,
407} 406}
408 407
409int 408int
410mm_auth_rhosts_rsa_key_allowed(struct passwd *pw, const char *user,
411 const char *host, Key *key)
412{
413 int ret;
414
415 key->type = KEY_RSA; /* XXX hack for key_to_blob */
416 ret = mm_key_allowed(MM_RSAHOSTKEY, user, host, key, 0);
417 key->type = KEY_RSA1;
418 return (ret);
419}
420
421int
422mm_key_allowed(enum mm_keytype type, const char *user, const char *host, 409mm_key_allowed(enum mm_keytype type, const char *user, const char *host,
423 Key *key, int pubkey_auth_attempt) 410 Key *key, int pubkey_auth_attempt)
424{ 411{
@@ -728,28 +715,6 @@ mm_terminate(void)
728 buffer_free(&m); 715 buffer_free(&m);
729} 716}
730 717
731#ifdef WITH_SSH1
732int
733mm_ssh1_session_key(BIGNUM *num)
734{
735 int rsafail;
736 Buffer m;
737
738 buffer_init(&m);
739 buffer_put_bignum2(&m, num);
740 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SESSKEY, &m);
741
742 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SESSKEY, &m);
743
744 rsafail = buffer_get_int(&m);
745 buffer_get_bignum2(&m, num);
746
747 buffer_free(&m);
748
749 return (rsafail);
750}
751#endif
752
753static void 718static void
754mm_chall_setup(char **name, char **infotxt, u_int *numprompts, 719mm_chall_setup(char **name, char **infotxt, u_int *numprompts,
755 char ***prompts, u_int **echo_on) 720 char ***prompts, u_int **echo_on)
@@ -880,120 +845,6 @@ mm_skey_respond(void *ctx, u_int numresponses, char **responses)
880} 845}
881#endif /* SKEY */ 846#endif /* SKEY */
882 847
883void
884mm_ssh1_session_id(u_char session_id[16])
885{
886 Buffer m;
887 int i;
888
889 debug3("%s entering", __func__);
890
891 buffer_init(&m);
892 for (i = 0; i < 16; i++)
893 buffer_put_char(&m, session_id[i]);
894
895 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SESSID, &m);
896 buffer_free(&m);
897}
898
899#ifdef WITH_SSH1
900int
901mm_auth_rsa_key_allowed(struct passwd *pw, BIGNUM *client_n, Key **rkey)
902{
903 Buffer m;
904 Key *key;
905 u_char *blob;
906 u_int blen;
907 int allowed = 0, have_forced = 0;
908
909 debug3("%s entering", __func__);
910
911 buffer_init(&m);
912 buffer_put_bignum2(&m, client_n);
913
914 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSAKEYALLOWED, &m);
915 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSAKEYALLOWED, &m);
916
917 allowed = buffer_get_int(&m);
918
919 /* fake forced command */
920 auth_clear_options();
921 have_forced = buffer_get_int(&m);
922 forced_command = have_forced ? xstrdup("true") : NULL;
923
924 if (allowed && rkey != NULL) {
925 blob = buffer_get_string(&m, &blen);
926 if ((key = key_from_blob(blob, blen)) == NULL)
927 fatal("%s: key_from_blob failed", __func__);
928 *rkey = key;
929 free(blob);
930 }
931 buffer_free(&m);
932
933 return (allowed);
934}
935
936BIGNUM *
937mm_auth_rsa_generate_challenge(Key *key)
938{
939 Buffer m;
940 BIGNUM *challenge;
941 u_char *blob;
942 u_int blen;
943
944 debug3("%s entering", __func__);
945
946 if ((challenge = BN_new()) == NULL)
947 fatal("%s: BN_new failed", __func__);
948
949 key->type = KEY_RSA; /* XXX cheat for key_to_blob */
950 if (key_to_blob(key, &blob, &blen) == 0)
951 fatal("%s: key_to_blob failed", __func__);
952 key->type = KEY_RSA1;
953
954 buffer_init(&m);
955 buffer_put_string(&m, blob, blen);
956 free(blob);
957
958 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSACHALLENGE, &m);
959 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSACHALLENGE, &m);
960
961 buffer_get_bignum2(&m, challenge);
962 buffer_free(&m);
963
964 return (challenge);
965}
966
967int
968mm_auth_rsa_verify_response(Key *key, BIGNUM *p, u_char response[16])
969{
970 Buffer m;
971 u_char *blob;
972 u_int blen;
973 int success = 0;
974
975 debug3("%s entering", __func__);
976
977 key->type = KEY_RSA; /* XXX cheat for key_to_blob */
978 if (key_to_blob(key, &blob, &blen) == 0)
979 fatal("%s: key_to_blob failed", __func__);
980 key->type = KEY_RSA1;
981
982 buffer_init(&m);
983 buffer_put_string(&m, blob, blen);
984 buffer_put_string(&m, response, 16);
985 free(blob);
986
987 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_RSARESPONSE, &m);
988 mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_RSARESPONSE, &m);
989
990 success = buffer_get_int(&m);
991 buffer_free(&m);
992
993 return (success);
994}
995#endif
996
997#ifdef SSH_AUDIT_EVENTS 848#ifdef SSH_AUDIT_EVENTS
998void 849void
999mm_audit_event(ssh_audit_event_t event) 850mm_audit_event(ssh_audit_event_t event)
diff --git a/monitor_wrap.h b/monitor_wrap.h
index d5b3334dc..3e75867cd 100644
--- a/monitor_wrap.h
+++ b/monitor_wrap.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.h,v 1.30 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.h,v 1.32 2016/09/28 16:33:07 djm Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -31,7 +31,7 @@
31extern int use_privsep; 31extern int use_privsep;
32#define PRIVSEP(x) (use_privsep ? mm_##x : x) 32#define PRIVSEP(x) (use_privsep ? mm_##x : x)
33 33
34enum mm_keytype {MM_NOKEY, MM_HOSTKEY, MM_USERKEY, MM_RSAHOSTKEY, MM_RSAUSERKEY}; 34enum mm_keytype { MM_NOKEY, MM_HOSTKEY, MM_USERKEY };
35 35
36struct monitor; 36struct monitor;
37struct mm_master; 37struct mm_master;
@@ -50,12 +50,7 @@ int mm_key_allowed(enum mm_keytype, const char *, const char *, Key *, int);
50int mm_user_key_allowed(struct passwd *, Key *, int); 50int mm_user_key_allowed(struct passwd *, Key *, int);
51int mm_hostbased_key_allowed(struct passwd *, const char *, 51int mm_hostbased_key_allowed(struct passwd *, const char *,
52 const char *, Key *); 52 const char *, Key *);
53int mm_auth_rhosts_rsa_key_allowed(struct passwd *, const char *,
54 const char *, Key *);
55int mm_key_verify(Key *, u_char *, u_int, u_char *, u_int); 53int mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
56int mm_auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
57int mm_auth_rsa_verify_response(Key *, BIGNUM *, u_char *);
58BIGNUM *mm_auth_rsa_generate_challenge(Key *);
59 54
60#ifdef GSSAPI 55#ifdef GSSAPI
61OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); 56OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID);
@@ -87,10 +82,6 @@ void mm_terminate(void);
87int mm_pty_allocate(int *, int *, char *, size_t); 82int mm_pty_allocate(int *, int *, char *, size_t);
88void mm_session_pty_cleanup2(struct Session *); 83void mm_session_pty_cleanup2(struct Session *);
89 84
90/* SSHv1 interfaces */
91void mm_ssh1_session_id(u_char *);
92int mm_ssh1_session_key(BIGNUM *);
93
94/* Key export functions */ 85/* Key export functions */
95struct newkeys *mm_newkeys_from_blob(u_char *, int); 86struct newkeys *mm_newkeys_from_blob(u_char *, int);
96int mm_newkeys_to_blob(int, u_char **, u_int *); 87int mm_newkeys_to_blob(int, u_char **, u_int *);
@@ -107,7 +98,4 @@ int mm_bsdauth_respond(void *, u_int, char **);
107int mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **); 98int mm_skey_query(void *, char **, char **, u_int *, char ***, u_int **);
108int mm_skey_respond(void *, u_int, char **); 99int mm_skey_respond(void *, u_int, char **);
109 100
110/* zlib allocation hooks */
111void mm_init_compression(struct mm_master *);
112
113#endif /* _MM_WRAP_H_ */ 101#endif /* _MM_WRAP_H_ */
diff --git a/mux.c b/mux.c
index 98e3c0068..265c5f12b 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mux.c,v 1.60 2016/06/03 03:14:41 dtucker Exp $ */ 1/* $OpenBSD: mux.c,v 1.63 2016/10/19 23:21:56 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -79,6 +79,7 @@
79#include "key.h" 79#include "key.h"
80#include "readconf.h" 80#include "readconf.h"
81#include "clientloop.h" 81#include "clientloop.h"
82#include "ssherr.h"
82 83
83/* from ssh.c */ 84/* from ssh.c */
84extern int tty_flag; 85extern int tty_flag;
@@ -144,6 +145,7 @@ struct mux_master_state {
144#define MUX_C_CLOSE_FWD 0x10000007 145#define MUX_C_CLOSE_FWD 0x10000007
145#define MUX_C_NEW_STDIO_FWD 0x10000008 146#define MUX_C_NEW_STDIO_FWD 0x10000008
146#define MUX_C_STOP_LISTENING 0x10000009 147#define MUX_C_STOP_LISTENING 0x10000009
148#define MUX_C_PROXY 0x1000000f
147#define MUX_S_OK 0x80000001 149#define MUX_S_OK 0x80000001
148#define MUX_S_PERMISSION_DENIED 0x80000002 150#define MUX_S_PERMISSION_DENIED 0x80000002
149#define MUX_S_FAILURE 0x80000003 151#define MUX_S_FAILURE 0x80000003
@@ -152,6 +154,7 @@ struct mux_master_state {
152#define MUX_S_SESSION_OPENED 0x80000006 154#define MUX_S_SESSION_OPENED 0x80000006
153#define MUX_S_REMOTE_PORT 0x80000007 155#define MUX_S_REMOTE_PORT 0x80000007
154#define MUX_S_TTY_ALLOC_FAIL 0x80000008 156#define MUX_S_TTY_ALLOC_FAIL 0x80000008
157#define MUX_S_PROXY 0x8000000f
155 158
156/* type codes for MUX_C_OPEN_FWD and MUX_C_CLOSE_FWD */ 159/* type codes for MUX_C_OPEN_FWD and MUX_C_CLOSE_FWD */
157#define MUX_FWD_LOCAL 1 160#define MUX_FWD_LOCAL 1
@@ -169,6 +172,7 @@ static int process_mux_open_fwd(u_int, Channel *, Buffer *, Buffer *);
169static int process_mux_close_fwd(u_int, Channel *, Buffer *, Buffer *); 172static int process_mux_close_fwd(u_int, Channel *, Buffer *, Buffer *);
170static int process_mux_stdio_fwd(u_int, Channel *, Buffer *, Buffer *); 173static int process_mux_stdio_fwd(u_int, Channel *, Buffer *, Buffer *);
171static int process_mux_stop_listening(u_int, Channel *, Buffer *, Buffer *); 174static int process_mux_stop_listening(u_int, Channel *, Buffer *, Buffer *);
175static int process_mux_proxy(u_int, Channel *, Buffer *, Buffer *);
172 176
173static const struct { 177static const struct {
174 u_int type; 178 u_int type;
@@ -182,6 +186,7 @@ static const struct {
182 { MUX_C_CLOSE_FWD, process_mux_close_fwd }, 186 { MUX_C_CLOSE_FWD, process_mux_close_fwd },
183 { MUX_C_NEW_STDIO_FWD, process_mux_stdio_fwd }, 187 { MUX_C_NEW_STDIO_FWD, process_mux_stdio_fwd },
184 { MUX_C_STOP_LISTENING, process_mux_stop_listening }, 188 { MUX_C_STOP_LISTENING, process_mux_stop_listening },
189 { MUX_C_PROXY, process_mux_proxy },
185 { 0, NULL } 190 { 0, NULL }
186}; 191};
187 192
@@ -1110,6 +1115,18 @@ process_mux_stop_listening(u_int rid, Channel *c, Buffer *m, Buffer *r)
1110 return 0; 1115 return 0;
1111} 1116}
1112 1117
1118static int
1119process_mux_proxy(u_int rid, Channel *c, Buffer *m, Buffer *r)
1120{
1121 debug("%s: channel %d: proxy request", __func__, c->self);
1122
1123 c->mux_rcb = channel_proxy_downstream;
1124 buffer_put_int(r, MUX_S_PROXY);
1125 buffer_put_int(r, rid);
1126
1127 return 0;
1128}
1129
1113/* Channel callbacks fired on read/write from mux slave fd */ 1130/* Channel callbacks fired on read/write from mux slave fd */
1114static int 1131static int
1115mux_master_read_cb(Channel *c) 1132mux_master_read_cb(Channel *c)
@@ -1960,6 +1977,41 @@ mux_client_request_session(int fd)
1960} 1977}
1961 1978
1962static int 1979static int
1980mux_client_proxy(int fd)
1981{
1982 Buffer m;
1983 char *e;
1984 u_int type, rid;
1985
1986 buffer_init(&m);
1987 buffer_put_int(&m, MUX_C_PROXY);
1988 buffer_put_int(&m, muxclient_request_id);
1989 if (mux_client_write_packet(fd, &m) != 0)
1990 fatal("%s: write packet: %s", __func__, strerror(errno));
1991
1992 buffer_clear(&m);
1993
1994 /* Read their reply */
1995 if (mux_client_read_packet(fd, &m) != 0) {
1996 buffer_free(&m);
1997 return 0;
1998 }
1999 type = buffer_get_int(&m);
2000 if (type != MUX_S_PROXY) {
2001 e = buffer_get_string(&m, NULL);
2002 fatal("%s: master returned error: %s", __func__, e);
2003 }
2004 if ((rid = buffer_get_int(&m)) != muxclient_request_id)
2005 fatal("%s: out of sequence reply: my id %u theirs %u",
2006 __func__, muxclient_request_id, rid);
2007 buffer_free(&m);
2008
2009 debug3("%s: done", __func__);
2010 muxclient_request_id++;
2011 return 0;
2012}
2013
2014static int
1963mux_client_request_stdio_fwd(int fd) 2015mux_client_request_stdio_fwd(int fd)
1964{ 2016{
1965 Buffer m; 2017 Buffer m;
@@ -2105,7 +2157,7 @@ mux_client_request_stop_listening(int fd)
2105} 2157}
2106 2158
2107/* Multiplex client main loop. */ 2159/* Multiplex client main loop. */
2108void 2160int
2109muxclient(const char *path) 2161muxclient(const char *path)
2110{ 2162{
2111 struct sockaddr_un addr; 2163 struct sockaddr_un addr;
@@ -2128,7 +2180,7 @@ muxclient(const char *path)
2128 case SSHCTL_MASTER_NO: 2180 case SSHCTL_MASTER_NO:
2129 break; 2181 break;
2130 default: 2182 default:
2131 return; 2183 return -1;
2132 } 2184 }
2133 2185
2134 memset(&addr, '\0', sizeof(addr)); 2186 memset(&addr, '\0', sizeof(addr));
@@ -2138,7 +2190,8 @@ muxclient(const char *path)
2138 2190
2139 if (strlcpy(addr.sun_path, path, 2191 if (strlcpy(addr.sun_path, path,
2140 sizeof(addr.sun_path)) >= sizeof(addr.sun_path)) 2192 sizeof(addr.sun_path)) >= sizeof(addr.sun_path))
2141 fatal("ControlPath too long"); 2193 fatal("ControlPath too long ('%s' >= %u bytes)", path,
2194 (unsigned int)sizeof(addr.sun_path));
2142 2195
2143 if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) 2196 if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0)
2144 fatal("%s socket(): %s", __func__, strerror(errno)); 2197 fatal("%s socket(): %s", __func__, strerror(errno));
@@ -2163,14 +2216,14 @@ muxclient(const char *path)
2163 strerror(errno)); 2216 strerror(errno));
2164 } 2217 }
2165 close(sock); 2218 close(sock);
2166 return; 2219 return -1;
2167 } 2220 }
2168 set_nonblock(sock); 2221 set_nonblock(sock);
2169 2222
2170 if (mux_client_hello_exchange(sock) != 0) { 2223 if (mux_client_hello_exchange(sock) != 0) {
2171 error("%s: master hello exchange failed", __func__); 2224 error("%s: master hello exchange failed", __func__);
2172 close(sock); 2225 close(sock);
2173 return; 2226 return -1;
2174 } 2227 }
2175 2228
2176 switch (muxclient_command) { 2229 switch (muxclient_command) {
@@ -2181,7 +2234,8 @@ muxclient(const char *path)
2181 exit(0); 2234 exit(0);
2182 case SSHMUX_COMMAND_TERMINATE: 2235 case SSHMUX_COMMAND_TERMINATE:
2183 mux_client_request_terminate(sock); 2236 mux_client_request_terminate(sock);
2184 fprintf(stderr, "Exit request sent.\r\n"); 2237 if (options.log_level != SYSLOG_LEVEL_QUIET)
2238 fprintf(stderr, "Exit request sent.\r\n");
2185 exit(0); 2239 exit(0);
2186 case SSHMUX_COMMAND_FORWARD: 2240 case SSHMUX_COMMAND_FORWARD:
2187 if (mux_client_forwards(sock, 0) != 0) 2241 if (mux_client_forwards(sock, 0) != 0)
@@ -2190,22 +2244,26 @@ muxclient(const char *path)
2190 case SSHMUX_COMMAND_OPEN: 2244 case SSHMUX_COMMAND_OPEN:
2191 if (mux_client_forwards(sock, 0) != 0) { 2245 if (mux_client_forwards(sock, 0) != 0) {
2192 error("%s: master forward request failed", __func__); 2246 error("%s: master forward request failed", __func__);
2193 return; 2247 return -1;
2194 } 2248 }
2195 mux_client_request_session(sock); 2249 mux_client_request_session(sock);
2196 return; 2250 return -1;
2197 case SSHMUX_COMMAND_STDIO_FWD: 2251 case SSHMUX_COMMAND_STDIO_FWD:
2198 mux_client_request_stdio_fwd(sock); 2252 mux_client_request_stdio_fwd(sock);
2199 exit(0); 2253 exit(0);
2200 case SSHMUX_COMMAND_STOP: 2254 case SSHMUX_COMMAND_STOP:
2201 mux_client_request_stop_listening(sock); 2255 mux_client_request_stop_listening(sock);
2202 fprintf(stderr, "Stop listening request sent.\r\n"); 2256 if (options.log_level != SYSLOG_LEVEL_QUIET)
2257 fprintf(stderr, "Stop listening request sent.\r\n");
2203 exit(0); 2258 exit(0);
2204 case SSHMUX_COMMAND_CANCEL_FWD: 2259 case SSHMUX_COMMAND_CANCEL_FWD:
2205 if (mux_client_forwards(sock, 1) != 0) 2260 if (mux_client_forwards(sock, 1) != 0)
2206 error("%s: master cancel forward request failed", 2261 error("%s: master cancel forward request failed",
2207 __func__); 2262 __func__);
2208 exit(0); 2263 exit(0);
2264 case SSHMUX_COMMAND_PROXY:
2265 mux_client_proxy(sock);
2266 return (sock);
2209 default: 2267 default:
2210 fatal("unrecognised muxclient_command %d", muxclient_command); 2268 fatal("unrecognised muxclient_command %d", muxclient_command);
2211 } 2269 }
diff --git a/myproposal.h b/myproposal.h
index 597090164..072e36ec7 100644
--- a/myproposal.h
+++ b/myproposal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: myproposal.h,v 1.50 2016/02/09 05:30:04 djm Exp $ */ 1/* $OpenBSD: myproposal.h,v 1.54 2016/09/28 16:33:07 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -84,7 +84,9 @@
84 84
85#ifdef WITH_OPENSSL 85#ifdef WITH_OPENSSL
86# ifdef HAVE_EVP_SHA256 86# ifdef HAVE_EVP_SHA256
87# define KEX_CURVE25519_METHODS "curve25519-sha256@libssh.org," 87# define KEX_CURVE25519_METHODS \
88 "curve25519-sha256," \
89 "curve25519-sha256@libssh.org,"
88# else 90# else
89# define KEX_CURVE25519_METHODS "" 91# define KEX_CURVE25519_METHODS ""
90# endif 92# endif
@@ -120,7 +122,7 @@
120 AESGCM_CIPHER_MODES 122 AESGCM_CIPHER_MODES
121 123
122#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT "," \ 124#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT "," \
123 "aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc" 125 "aes128-cbc,aes192-cbc,aes256-cbc"
124 126
125#define KEX_SERVER_MAC \ 127#define KEX_SERVER_MAC \
126 "umac-64-etm@openssh.com," \ 128 "umac-64-etm@openssh.com," \
@@ -139,6 +141,7 @@
139#else /* WITH_OPENSSL */ 141#else /* WITH_OPENSSL */
140 142
141#define KEX_SERVER_KEX \ 143#define KEX_SERVER_KEX \
144 "curve25519-sha256," \
142 "curve25519-sha256@libssh.org" 145 "curve25519-sha256@libssh.org"
143#define KEX_DEFAULT_PK_ALG \ 146#define KEX_DEFAULT_PK_ALG \
144 "ssh-ed25519-cert-v01@openssh.com," \ 147 "ssh-ed25519-cert-v01@openssh.com," \
@@ -164,7 +167,7 @@
164 167
165#endif /* WITH_OPENSSL */ 168#endif /* WITH_OPENSSL */
166 169
167#define KEX_DEFAULT_COMP "none,zlib@openssh.com,zlib" 170#define KEX_DEFAULT_COMP "none,zlib@openssh.com"
168#define KEX_DEFAULT_LANG "" 171#define KEX_DEFAULT_LANG ""
169 172
170#define KEX_CLIENT \ 173#define KEX_CLIENT \
diff --git a/opacket.h b/opacket.h
index 16322ec6f..c487f4f40 100644
--- a/opacket.h
+++ b/opacket.h
@@ -133,9 +133,6 @@ void packet_disconnect(const char *, ...)
133 ssh_packet_get_input(active_state) 133 ssh_packet_get_input(active_state)
134#define packet_get_output() \ 134#define packet_get_output() \
135 ssh_packet_get_output(active_state) 135 ssh_packet_get_output(active_state)
136#define packet_set_compress_hooks(ctx, allocfunc, freefunc) \
137 ssh_packet_set_compress_hooks(active_state, ctx, \
138 allocfunc, freefunc);
139#define packet_check_eom() \ 136#define packet_check_eom() \
140 ssh_packet_check_eom(active_state) 137 ssh_packet_check_eom(active_state)
141#define set_newkeys(mode) \ 138#define set_newkeys(mode) \
@@ -156,5 +153,9 @@ void packet_disconnect(const char *, ...)
156 ssh_packet_set_rekey_limits(active_state, x, y) 153 ssh_packet_set_rekey_limits(active_state, x, y)
157#define packet_get_bytes(x,y) \ 154#define packet_get_bytes(x,y) \
158 ssh_packet_get_bytes(active_state, x, y) 155 ssh_packet_get_bytes(active_state, x, y)
156#define packet_set_mux() \
157 ssh_packet_set_mux(active_state)
158#define packet_get_mux() \
159 ssh_packet_get_mux(active_state)
159 160
160#endif /* _OPACKET_H */ 161#endif /* _OPACKET_H */
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in
index aca9eba75..d51eacf65 100644
--- a/openbsd-compat/Makefile.in
+++ b/openbsd-compat/Makefile.in
@@ -16,9 +16,9 @@ RANLIB=@RANLIB@
16INSTALL=@INSTALL@ 16INSTALL=@INSTALL@
17LDFLAGS=-L. @LDFLAGS@ 17LDFLAGS=-L. @LDFLAGS@
18 18
19OPENBSD=base64.o basename.o bcrypt_pbkdf.o bindresvport.o blowfish.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt_long.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o reallocarray.o realpath.o rresvport.o setenv.o setproctitle.o sha1.o sha2.o rmd160.o md5.o sigact.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o strtoull.o timingsafe_bcmp.o vis.o blowfish.o bcrypt_pbkdf.o explicit_bzero.o 19OPENBSD=base64.o basename.o bcrypt_pbkdf.o bindresvport.o blowfish.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt_long.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o reallocarray.o realpath.o rresvport.o setenv.o setproctitle.o sha1.o sha2.o rmd160.o md5.o sigact.o strcasestr.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o strtoull.o timingsafe_bcmp.o vis.o blowfish.o bcrypt_pbkdf.o explicit_bzero.o
20 20
21COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-err.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o kludge-fd_set.o 21COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-err.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xcrypt.o kludge-fd_set.o
22 22
23PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o 23PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o
24 24
@@ -36,7 +36,7 @@ libopenbsd-compat.a: $(COMPAT) $(OPENBSD) $(PORTS)
36 $(RANLIB) $@ 36 $(RANLIB) $@
37 37
38clean: 38clean:
39 rm -f *.o *.a core 39 rm -f *.o *.a core
40 40
41distclean: clean 41distclean: clean
42 rm -f Makefile *~ 42 rm -f Makefile *~
diff --git a/openbsd-compat/base64.h b/openbsd-compat/base64.h
index 732c6b3f8..bd772931b 100644
--- a/openbsd-compat/base64.h
+++ b/openbsd-compat/base64.h
@@ -1,5 +1,3 @@
1/* $Id: base64.h,v 1.6 2003/08/29 16:59:52 mouring Exp $ */
2
3/* 1/*
4 * Copyright (c) 1996 by Internet Software Consortium. 2 * Copyright (c) 1996 by Internet Software Consortium.
5 * 3 *
@@ -49,7 +47,7 @@
49 47
50#ifndef HAVE___B64_NTOP 48#ifndef HAVE___B64_NTOP
51# ifndef HAVE_B64_NTOP 49# ifndef HAVE_B64_NTOP
52int b64_ntop(u_char const *src, size_t srclength, char *target, 50int b64_ntop(u_char const *src, size_t srclength, char *target,
53 size_t targsize); 51 size_t targsize);
54# endif /* !HAVE_B64_NTOP */ 52# endif /* !HAVE_B64_NTOP */
55# define __b64_ntop(a,b,c,d) b64_ntop(a,b,c,d) 53# define __b64_ntop(a,b,c,d) b64_ntop(a,b,c,d)
diff --git a/openbsd-compat/bsd-asprintf.c b/openbsd-compat/bsd-asprintf.c
index 7b83448ca..822367154 100644
--- a/openbsd-compat/bsd-asprintf.c
+++ b/openbsd-compat/bsd-asprintf.c
@@ -78,7 +78,7 @@ int asprintf(char **str, const char *fmt, ...)
78{ 78{
79 va_list ap; 79 va_list ap;
80 int ret; 80 int ret;
81 81
82 *str = NULL; 82 *str = NULL;
83 va_start(ap, fmt); 83 va_start(ap, fmt);
84 ret = vasprintf(str, fmt, ap); 84 ret = vasprintf(str, fmt, ap);
diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c
index f1bbd7dec..c02e63261 100644
--- a/openbsd-compat/bsd-cray.c
+++ b/openbsd-compat/bsd-cray.c
@@ -1,10 +1,9 @@
1/* 1/*
2 * $Id: bsd-cray.c,v 1.17 2007/08/15 09:17:43 dtucker Exp $
3 * 2 *
4 * bsd-cray.c 3 * bsd-cray.c
5 * 4 *
6 * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) 5 * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>)
7 * Significant portions provided by 6 * Significant portions provided by
8 * Wayne Schroeder, SDSC <schroeder@sdsc.edu> 7 * Wayne Schroeder, SDSC <schroeder@sdsc.edu>
9 * William Jones, UTexas <jones@tacc.utexas.edu> 8 * William Jones, UTexas <jones@tacc.utexas.edu>
10 * 9 *
@@ -268,7 +267,7 @@ cray_setup (uid_t uid, char *username, const char *command)
268 usent.uname = username; 267 usent.uname = username;
269 usent.host = hostname; 268 usent.host = hostname;
270 usent.ttyn = ttyn; 269 usent.ttyn = ttyn;
271 usent.caller = IA_SSHD; 270 usent.caller = IA_SSHD;
272 usent.pswdlist = &pwdacm; 271 usent.pswdlist = &pwdacm;
273 usent.ueptr = &ue; 272 usent.ueptr = &ue;
274 usent.flags = IA_INTERACTIVE | IA_FFLAG; 273 usent.flags = IA_INTERACTIVE | IA_FFLAG;
@@ -352,7 +351,7 @@ cray_setup (uid_t uid, char *username, const char *command)
352 /* 351 /*
353 * These are failed return codes from ia_user() 352 * These are failed return codes from ia_user()
354 */ 353 */
355 switch (ia_rcode) 354 switch (ia_rcode)
356 { 355 {
357 case IA_BADAUTH: 356 case IA_BADAUTH:
358 printf("Bad authorization, access denied.\n"); 357 printf("Bad authorization, access denied.\n");
@@ -407,7 +406,7 @@ cray_setup (uid_t uid, char *username, const char *command)
407 */ 406 */
408 ia_failure(&fsent, &fret); 407 ia_failure(&fsent, &fret);
409 408
410 exit(1); 409 exit(1);
411 } 410 }
412 411
413 ia_mlsrcode = IA_NORMAL; 412 ia_mlsrcode = IA_NORMAL;
@@ -441,7 +440,7 @@ cray_setup (uid_t uid, char *username, const char *command)
441 * There is no return because ia_failure exits. 440 * There is no return because ia_failure exits.
442 */ 441 */
443 ia_failure(&fsent,&fret); 442 ia_failure(&fsent,&fret);
444 exit(1); 443 exit(1);
445 } 444 }
446 445
447 /* Provide login status information */ 446 /* Provide login status information */
@@ -526,7 +525,7 @@ cray_setup (uid_t uid, char *username, const char *command)
526 break; 525 break;
527 default: 526 default:
528 valid_acct = nam2acid(acct_name); 527 valid_acct = nam2acid(acct_name);
529 if (valid_acct == -1) 528 if (valid_acct == -1)
530 printf( 529 printf(
531 "Account id not found for" 530 "Account id not found for"
532 " account name \"%s\"\n\n", 531 " account name \"%s\"\n\n",
@@ -576,9 +575,9 @@ cray_setup (uid_t uid, char *username, const char *command)
576 exit(1); 575 exit(1);
577 } 576 }
578 577
579 /* 578 /*
580 * Now set shares, quotas, limits, including CPU time for the 579 * Now set shares, quotas, limits, including CPU time for the
581 * (interactive) job and process, and set up permissions 580 * (interactive) job and process, and set up permissions
582 * (for chown etc), etc. 581 * (for chown etc), etc.
583 */ 582 */
584 if (setshares(ue.ue_uid, valid_acct, printf, 0, 0)) { 583 if (setshares(ue.ue_uid, valid_acct, printf, 0, 0)) {
@@ -656,7 +655,7 @@ drop_cray_privs()
656 usrv.sv_minlvl = sysv.sy_minlvl; 655 usrv.sv_minlvl = sysv.sy_minlvl;
657 usrv.sv_actlvl = sysv.sy_minlvl; 656 usrv.sv_actlvl = sysv.sy_minlvl;
658 usrv.sv_maxlvl = sysv.sy_maxlvl; 657 usrv.sv_maxlvl = sysv.sy_maxlvl;
659 } 658 }
660 usrv.sv_actcmp = 0; 659 usrv.sv_actcmp = 0;
661 usrv.sv_valcmp = sysv.sy_valcmp; 660 usrv.sv_valcmp = sysv.sy_valcmp;
662 661
diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h
index 774eceb5a..ca626a021 100644
--- a/openbsd-compat/bsd-cray.h
+++ b/openbsd-compat/bsd-cray.h
@@ -1,8 +1,6 @@
1/* $Id: bsd-cray.h,v 1.12 2005/02/02 06:10:11 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) 2 * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>)
5 * Significant portions provided by 3 * Significant portions provided by
6 * Wayne Schroeder, SDSC <schroeder@sdsc.edu> 4 * Wayne Schroeder, SDSC <schroeder@sdsc.edu>
7 * William Jones, UTexas <jones@tacc.utexas.edu> 5 * William Jones, UTexas <jones@tacc.utexas.edu>
8 * 6 *
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c
index 8672ccf7f..398a5f617 100644
--- a/openbsd-compat/bsd-cygwin_util.c
+++ b/openbsd-compat/bsd-cygwin_util.c
@@ -39,12 +39,12 @@
39 39
40#include "xmalloc.h" 40#include "xmalloc.h"
41 41
42int 42int
43binary_open(const char *filename, int flags, ...) 43binary_open(const char *filename, int flags, ...)
44{ 44{
45 va_list ap; 45 va_list ap;
46 mode_t mode; 46 mode_t mode;
47 47
48 va_start(ap, flags); 48 va_start(ap, flags);
49 mode = va_arg(ap, mode_t); 49 mode = va_arg(ap, mode_t);
50 va_end(ap); 50 va_end(ap);
diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h
index 79cb2a197..9cef694b9 100644
--- a/openbsd-compat/bsd-cygwin_util.h
+++ b/openbsd-compat/bsd-cygwin_util.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-cygwin_util.h,v 1.18 2014/05/27 04:34:43 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2000, 2001, 2011, 2013 Corinna Vinschen <vinschen@redhat.com> 2 * Copyright (c) 2000, 2001, 2011, 2013 Corinna Vinschen <vinschen@redhat.com>
5 * 3 *
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index 18bf62dd8..6f3bc8f1d 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -70,8 +70,8 @@ int setlogin(const char *name)
70#endif /* !HAVE_SETLOGIN */ 70#endif /* !HAVE_SETLOGIN */
71 71
72#ifndef HAVE_INNETGR 72#ifndef HAVE_INNETGR
73int innetgr(const char *netgroup, const char *host, 73int innetgr(const char *netgroup, const char *host,
74 const char *user, const char *domain) 74 const char *user, const char *domain)
75{ 75{
76 return (0); 76 return (0);
77} 77}
@@ -96,7 +96,7 @@ const char *strerror(int e)
96{ 96{
97 extern int sys_nerr; 97 extern int sys_nerr;
98 extern char *sys_errlist[]; 98 extern char *sys_errlist[];
99 99
100 if ((e >= 0) && (e < sys_nerr)) 100 if ((e >= 0) && (e < sys_nerr))
101 return (sys_errlist[e]); 101 return (sys_errlist[e]);
102 102
@@ -111,10 +111,10 @@ int utimes(char *filename, struct timeval *tvp)
111 111
112 ub.actime = tvp[0].tv_sec; 112 ub.actime = tvp[0].tv_sec;
113 ub.modtime = tvp[1].tv_sec; 113 ub.modtime = tvp[1].tv_sec;
114 114
115 return (utime(filename, &ub)); 115 return (utime(filename, &ub));
116} 116}
117#endif 117#endif
118 118
119#ifndef HAVE_TRUNCATE 119#ifndef HAVE_TRUNCATE
120int truncate(const char *path, off_t length) 120int truncate(const char *path, off_t length)
@@ -149,9 +149,9 @@ int nanosleep(const struct timespec *req, struct timespec *rem)
149 saverrno = errno; 149 saverrno = errno;
150 (void) gettimeofday (&tstop, NULL); 150 (void) gettimeofday (&tstop, NULL);
151 errno = saverrno; 151 errno = saverrno;
152 tremain.tv_sec = time2wait.tv_sec - 152 tremain.tv_sec = time2wait.tv_sec -
153 (tstop.tv_sec - tstart.tv_sec); 153 (tstop.tv_sec - tstart.tv_sec);
154 tremain.tv_usec = time2wait.tv_usec - 154 tremain.tv_usec = time2wait.tv_usec -
155 (tstop.tv_usec - tstart.tv_usec); 155 (tstop.tv_usec - tstart.tv_usec);
156 tremain.tv_sec += tremain.tv_usec / 1000000L; 156 tremain.tv_sec += tremain.tv_usec / 1000000L;
157 tremain.tv_usec %= 1000000L; 157 tremain.tv_usec %= 1000000L;
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h
index 27abb2e92..6f08b09fa 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-misc.h,v 1.25 2013/08/04 11:48:41 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> 2 * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org>
5 * 3 *
@@ -49,7 +47,7 @@ int setegid(uid_t);
49 47
50#if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR) 48#if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR)
51const char *strerror(int); 49const char *strerror(int);
52#endif 50#endif
53 51
54#if !defined(HAVE_SETLINEBUF) 52#if !defined(HAVE_SETLINEBUF)
55#define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) 53#define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0))
diff --git a/openbsd-compat/bsd-nextstep.c b/openbsd-compat/bsd-nextstep.c
index 8195af88a..d52443f6d 100644
--- a/openbsd-compat/bsd-nextstep.c
+++ b/openbsd-compat/bsd-nextstep.c
@@ -29,7 +29,7 @@
29#include <sys/wait.h> 29#include <sys/wait.h>
30#include "bsd-nextstep.h" 30#include "bsd-nextstep.h"
31 31
32pid_t 32pid_t
33posix_wait(int *status) 33posix_wait(int *status)
34{ 34{
35 union wait statusp; 35 union wait statusp;
diff --git a/openbsd-compat/bsd-nextstep.h b/openbsd-compat/bsd-nextstep.h
index ca5b4b54a..610f9e381 100644
--- a/openbsd-compat/bsd-nextstep.h
+++ b/openbsd-compat/bsd-nextstep.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-nextstep.h,v 1.9 2003/08/29 16:59:52 mouring Exp $ */
2
3/* 1/*
4 * Copyright (c) 2000,2001 Ben Lindstrom. All rights reserved. 2 * Copyright (c) 2000,2001 Ben Lindstrom. All rights reserved.
5 * 3 *
diff --git a/openbsd-compat/bsd-openpty.c b/openbsd-compat/bsd-openpty.c
index 9777eb556..b28235860 100644
--- a/openbsd-compat/bsd-openpty.c
+++ b/openbsd-compat/bsd-openpty.c
@@ -122,7 +122,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *termp,
122 } 122 }
123 123
124 /* 124 /*
125 * Try to push the appropriate streams modules, as described 125 * Try to push the appropriate streams modules, as described
126 * in Solaris pts(7). 126 * in Solaris pts(7).
127 */ 127 */
128 ioctl(*aslave, I_PUSH, "ptem"); 128 ioctl(*aslave, I_PUSH, "ptem");
@@ -184,7 +184,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *termp,
184 struct termios tio; 184 struct termios tio;
185 185
186 for (i = 0; i < num_ptys; i++) { 186 for (i = 0; i < num_ptys; i++) {
187 snprintf(ptbuf, sizeof(ptbuf), "/dev/pty%c%c", 187 snprintf(ptbuf, sizeof(ptbuf), "/dev/pty%c%c",
188 ptymajors[i / num_minors], ptyminors[i % num_minors]); 188 ptymajors[i / num_minors], ptyminors[i % num_minors]);
189 snprintf(ttbuf, sizeof(ttbuf), "/dev/tty%c%c", 189 snprintf(ttbuf, sizeof(ttbuf), "/dev/tty%c%c",
190 ptymajors[i / num_minors], ptyminors[i % num_minors]); 190 ptymajors[i / num_minors], ptyminors[i % num_minors]);
diff --git a/openbsd-compat/bsd-poll.c b/openbsd-compat/bsd-poll.c
index 73a852480..c8e6222c0 100644
--- a/openbsd-compat/bsd-poll.c
+++ b/openbsd-compat/bsd-poll.c
@@ -1,5 +1,3 @@
1/* $Id: bsd-poll.c,v 1.6 2014/02/05 23:44:13 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2004, 2005, 2007 Darren Tucker (dtucker at zip com au). 2 * Copyright (c) 2004, 2005, 2007 Darren Tucker (dtucker at zip com au).
5 * 3 *
diff --git a/openbsd-compat/bsd-setres_id.c b/openbsd-compat/bsd-setres_id.c
index 018bde8c7..696ae7b28 100644
--- a/openbsd-compat/bsd-setres_id.c
+++ b/openbsd-compat/bsd-setres_id.c
@@ -1,5 +1,3 @@
1/* $Id: bsd-setres_id.c,v 1.2 2013/12/07 21:23:09 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2012 Darren Tucker (dtucker at zip com au). 2 * Copyright (c) 2012 Darren Tucker (dtucker at zip com au).
5 * 3 *
diff --git a/openbsd-compat/bsd-setres_id.h b/openbsd-compat/bsd-setres_id.h
index 6c269e0b9..0350a596e 100644
--- a/openbsd-compat/bsd-setres_id.h
+++ b/openbsd-compat/bsd-setres_id.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-setres_id.h,v 1.1 2012/11/05 06:04:37 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2012 Darren Tucker (dtucker at zip com au). 2 * Copyright (c) 2012 Darren Tucker (dtucker at zip com au).
5 * 3 *
diff --git a/openbsd-compat/bsd-statvfs.c b/openbsd-compat/bsd-statvfs.c
index 2b1da80ec..458dbe89c 100644
--- a/openbsd-compat/bsd-statvfs.c
+++ b/openbsd-compat/bsd-statvfs.c
@@ -1,5 +1,3 @@
1/* $Id: bsd-statvfs.c,v 1.2 2014/01/17 07:10:59 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au> 2 * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au>
5 * 3 *
diff --git a/openbsd-compat/bsd-statvfs.h b/openbsd-compat/bsd-statvfs.h
index dfd609974..815ec03b2 100644
--- a/openbsd-compat/bsd-statvfs.h
+++ b/openbsd-compat/bsd-statvfs.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-statvfs.h,v 1.3 2014/01/17 07:48:22 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au> 2 * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au>
5 * 3 *
diff --git a/openbsd-compat/bsd-waitpid.c b/openbsd-compat/bsd-waitpid.c
index 40e6ffaa8..113fb1ea9 100644
--- a/openbsd-compat/bsd-waitpid.c
+++ b/openbsd-compat/bsd-waitpid.c
@@ -24,7 +24,7 @@
24 24
25#include "includes.h" 25#include "includes.h"
26 26
27#ifndef HAVE_WAITPID 27#ifndef HAVE_WAITPID
28#include <errno.h> 28#include <errno.h>
29#include <sys/wait.h> 29#include <sys/wait.h>
30#include "bsd-waitpid.h" 30#include "bsd-waitpid.h"
@@ -43,11 +43,11 @@ waitpid(int pid, int *stat_loc, int options)
43 /* wait4() wants pid=0 for indiscriminate wait. */ 43 /* wait4() wants pid=0 for indiscriminate wait. */
44 pid = 0; 44 pid = 0;
45 } 45 }
46 wait_pid = wait4(pid, &statusp, options, NULL); 46 wait_pid = wait4(pid, &statusp, options, NULL);
47 if (stat_loc) 47 if (stat_loc)
48 *stat_loc = (int) statusp.w_status; 48 *stat_loc = (int) statusp.w_status;
49 49
50 return (wait_pid); 50 return (wait_pid);
51} 51}
52 52
53#endif /* !HAVE_WAITPID */ 53#endif /* !HAVE_WAITPID */
diff --git a/openbsd-compat/bsd-waitpid.h b/openbsd-compat/bsd-waitpid.h
index 2d853db61..5ce3ee4b5 100644
--- a/openbsd-compat/bsd-waitpid.h
+++ b/openbsd-compat/bsd-waitpid.h
@@ -1,5 +1,3 @@
1/* $Id: bsd-waitpid.h,v 1.5 2003/08/29 16:59:52 mouring Exp $ */
2
3/* 1/*
4 * Copyright (c) 2000 Ben Lindstrom. All rights reserved. 2 * Copyright (c) 2000 Ben Lindstrom. All rights reserved.
5 * 3 *
diff --git a/openbsd-compat/explicit_bzero.c b/openbsd-compat/explicit_bzero.c
index 3c85a4843..5078134d1 100644
--- a/openbsd-compat/explicit_bzero.c
+++ b/openbsd-compat/explicit_bzero.c
@@ -7,6 +7,8 @@
7 7
8#include "includes.h" 8#include "includes.h"
9 9
10#include <string.h>
11
10/* 12/*
11 * explicit_bzero - don't let the compiler optimize away bzero 13 * explicit_bzero - don't let the compiler optimize away bzero
12 */ 14 */
@@ -32,6 +34,17 @@ static void (* volatile ssh_bzero)(void *, size_t) = bzero;
32void 34void
33explicit_bzero(void *p, size_t n) 35explicit_bzero(void *p, size_t n)
34{ 36{
37 /*
38 * clang -fsanitize=memory needs to intercept memset-like functions
39 * to correctly detect memory initialisation. Make sure one is called
40 * directly since our indirection trick above sucessfully confuses it.
41 */
42#if defined(__has_feature)
43# if __has_feature(memory_sanitizer)
44 memset(p, 0, n);
45# endif
46#endif
47
35 ssh_bzero(p, n); 48 ssh_bzero(p, n);
36} 49}
37 50
diff --git a/openbsd-compat/fake-rfc2553.c b/openbsd-compat/fake-rfc2553.c
index 096d9e092..d5a62975a 100644
--- a/openbsd-compat/fake-rfc2553.c
+++ b/openbsd-compat/fake-rfc2553.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Copyright (C) 2000-2003 Damien Miller. All rights reserved. 2 * Copyright (C) 2000-2003 Damien Miller. All rights reserved.
3 * Copyright (C) 1999 WIDE Project. All rights reserved. 3 * Copyright (C) 1999 WIDE Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
@@ -13,7 +13,7 @@
13 * 3. Neither the name of the project nor the names of its contributors 13 * 3. Neither the name of the project nor the names of its contributors
14 * may be used to endorse or promote products derived from this software 14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission. 15 * without specific prior written permission.
16 * 16 *
17 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 17 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -44,8 +44,8 @@
44#include <arpa/inet.h> 44#include <arpa/inet.h>
45 45
46#ifndef HAVE_GETNAMEINFO 46#ifndef HAVE_GETNAMEINFO
47int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, 47int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
48 size_t hostlen, char *serv, size_t servlen, int flags) 48 size_t hostlen, char *serv, size_t servlen, int flags)
49{ 49{
50 struct sockaddr_in *sin = (struct sockaddr_in *)sa; 50 struct sockaddr_in *sin = (struct sockaddr_in *)sa;
51 struct hostent *hp; 51 struct hostent *hp;
@@ -67,11 +67,11 @@ int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
67 else 67 else
68 return (0); 68 return (0);
69 } else { 69 } else {
70 hp = gethostbyaddr((char *)&sin->sin_addr, 70 hp = gethostbyaddr((char *)&sin->sin_addr,
71 sizeof(struct in_addr), AF_INET); 71 sizeof(struct in_addr), AF_INET);
72 if (hp == NULL) 72 if (hp == NULL)
73 return (EAI_NODATA); 73 return (EAI_NODATA);
74 74
75 if (strlcpy(host, hp->h_name, hostlen) >= hostlen) 75 if (strlcpy(host, hp->h_name, hostlen) >= hostlen)
76 return (EAI_MEMORY); 76 return (EAI_MEMORY);
77 else 77 else
@@ -102,7 +102,7 @@ gai_strerror(int err)
102 default: 102 default:
103 return ("unknown/invalid error."); 103 return ("unknown/invalid error.");
104 } 104 }
105} 105}
106#endif /* !HAVE_GAI_STRERROR */ 106#endif /* !HAVE_GAI_STRERROR */
107 107
108#ifndef HAVE_FREEADDRINFO 108#ifndef HAVE_FREEADDRINFO
@@ -128,9 +128,9 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints)
128 ai = malloc(sizeof(*ai) + sizeof(struct sockaddr_in)); 128 ai = malloc(sizeof(*ai) + sizeof(struct sockaddr_in));
129 if (ai == NULL) 129 if (ai == NULL)
130 return (NULL); 130 return (NULL);
131 131
132 memset(ai, '\0', sizeof(*ai) + sizeof(struct sockaddr_in)); 132 memset(ai, '\0', sizeof(*ai) + sizeof(struct sockaddr_in));
133 133
134 ai->ai_addr = (struct sockaddr *)(ai + 1); 134 ai->ai_addr = (struct sockaddr *)(ai + 1);
135 /* XXX -- ssh doesn't use sa_len */ 135 /* XXX -- ssh doesn't use sa_len */
136 ai->ai_addrlen = sizeof(struct sockaddr_in); 136 ai->ai_addrlen = sizeof(struct sockaddr_in);
@@ -138,7 +138,7 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints)
138 138
139 ((struct sockaddr_in *)(ai)->ai_addr)->sin_port = port; 139 ((struct sockaddr_in *)(ai)->ai_addr)->sin_port = port;
140 ((struct sockaddr_in *)(ai)->ai_addr)->sin_addr.s_addr = addr; 140 ((struct sockaddr_in *)(ai)->ai_addr)->sin_addr.s_addr = addr;
141 141
142 /* XXX: the following is not generally correct, but does what we want */ 142 /* XXX: the following is not generally correct, but does what we want */
143 if (hints->ai_socktype) 143 if (hints->ai_socktype)
144 ai->ai_socktype = hints->ai_socktype; 144 ai->ai_socktype = hints->ai_socktype;
@@ -152,7 +152,7 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints)
152} 152}
153 153
154int 154int
155getaddrinfo(const char *hostname, const char *servname, 155getaddrinfo(const char *hostname, const char *servname,
156 const struct addrinfo *hints, struct addrinfo **res) 156 const struct addrinfo *hints, struct addrinfo **res)
157{ 157{
158 struct hostent *hp; 158 struct hostent *hp;
@@ -183,29 +183,29 @@ getaddrinfo(const char *hostname, const char *servname,
183 if (hostname && inet_aton(hostname, &in) != 0) 183 if (hostname && inet_aton(hostname, &in) != 0)
184 addr = in.s_addr; 184 addr = in.s_addr;
185 *res = malloc_ai(port, addr, hints); 185 *res = malloc_ai(port, addr, hints);
186 if (*res == NULL) 186 if (*res == NULL)
187 return (EAI_MEMORY); 187 return (EAI_MEMORY);
188 return (0); 188 return (0);
189 } 189 }
190 190
191 if (!hostname) { 191 if (!hostname) {
192 *res = malloc_ai(port, htonl(0x7f000001), hints); 192 *res = malloc_ai(port, htonl(0x7f000001), hints);
193 if (*res == NULL) 193 if (*res == NULL)
194 return (EAI_MEMORY); 194 return (EAI_MEMORY);
195 return (0); 195 return (0);
196 } 196 }
197 197
198 if (inet_aton(hostname, &in)) { 198 if (inet_aton(hostname, &in)) {
199 *res = malloc_ai(port, in.s_addr, hints); 199 *res = malloc_ai(port, in.s_addr, hints);
200 if (*res == NULL) 200 if (*res == NULL)
201 return (EAI_MEMORY); 201 return (EAI_MEMORY);
202 return (0); 202 return (0);
203 } 203 }
204 204
205 /* Don't try DNS if AI_NUMERICHOST is set */ 205 /* Don't try DNS if AI_NUMERICHOST is set */
206 if (hints && hints->ai_flags & AI_NUMERICHOST) 206 if (hints && hints->ai_flags & AI_NUMERICHOST)
207 return (EAI_NONAME); 207 return (EAI_NONAME);
208 208
209 hp = gethostbyname(hostname); 209 hp = gethostbyname(hostname);
210 if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) { 210 if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) {
211 struct addrinfo *cur, *prev; 211 struct addrinfo *cur, *prev;
@@ -229,7 +229,7 @@ getaddrinfo(const char *hostname, const char *servname,
229 } 229 }
230 return (0); 230 return (0);
231 } 231 }
232 232
233 return (EAI_NODATA); 233 return (EAI_NODATA);
234} 234}
235#endif /* !HAVE_GETADDRINFO */ 235#endif /* !HAVE_GETADDRINFO */
diff --git a/openbsd-compat/fake-rfc2553.h b/openbsd-compat/fake-rfc2553.h
index 6426f7bf6..f913617fe 100644
--- a/openbsd-compat/fake-rfc2553.h
+++ b/openbsd-compat/fake-rfc2553.h
@@ -1,9 +1,7 @@
1/* $Id: fake-rfc2553.h,v 1.16 2008/07/14 11:37:37 djm Exp $ */
2
3/* 1/*
4 * Copyright (C) 2000-2003 Damien Miller. All rights reserved. 2 * Copyright (C) 2000-2003 Damien Miller. All rights reserved.
5 * Copyright (C) 1999 WIDE Project. All rights reserved. 3 * Copyright (C) 1999 WIDE Project. All rights reserved.
6 * 4 *
7 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
9 * are met: 7 * are met:
@@ -15,7 +13,7 @@
15 * 3. Neither the name of the project nor the names of its contributors 13 * 3. Neither the name of the project nor the names of its contributors
16 * may be used to endorse or promote products derived from this software 14 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission. 15 * without specific prior written permission.
18 * 16 *
19 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 17 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -47,7 +45,7 @@
47#endif 45#endif
48 46
49/* 47/*
50 * First, socket and INET6 related definitions 48 * First, socket and INET6 related definitions
51 */ 49 */
52#ifndef HAVE_STRUCT_SOCKADDR_STORAGE 50#ifndef HAVE_STRUCT_SOCKADDR_STORAGE
53# define _SS_MAXSIZE 128 /* Implementation specific max size */ 51# define _SS_MAXSIZE 128 /* Implementation specific max size */
@@ -154,7 +152,7 @@ struct addrinfo {
154# undef getaddrinfo 152# undef getaddrinfo
155#endif 153#endif
156#define getaddrinfo(a,b,c,d) (ssh_getaddrinfo(a,b,c,d)) 154#define getaddrinfo(a,b,c,d) (ssh_getaddrinfo(a,b,c,d))
157int getaddrinfo(const char *, const char *, 155int getaddrinfo(const char *, const char *,
158 const struct addrinfo *, struct addrinfo **); 156 const struct addrinfo *, struct addrinfo **);
159#endif /* !HAVE_GETADDRINFO */ 157#endif /* !HAVE_GETADDRINFO */
160 158
@@ -170,7 +168,7 @@ void freeaddrinfo(struct addrinfo *);
170 168
171#ifndef HAVE_GETNAMEINFO 169#ifndef HAVE_GETNAMEINFO
172#define getnameinfo(a,b,c,d,e,f,g) (ssh_getnameinfo(a,b,c,d,e,f,g)) 170#define getnameinfo(a,b,c,d,e,f,g) (ssh_getnameinfo(a,b,c,d,e,f,g))
173int getnameinfo(const struct sockaddr *, size_t, char *, size_t, 171int getnameinfo(const struct sockaddr *, size_t, char *, size_t,
174 char *, size_t, int); 172 char *, size_t, int);
175#endif /* !HAVE_GETNAMEINFO */ 173#endif /* !HAVE_GETNAMEINFO */
176 174
diff --git a/openbsd-compat/getcwd.c b/openbsd-compat/getcwd.c
index 3edbb9cba..e4f7f5a3d 100644
--- a/openbsd-compat/getcwd.c
+++ b/openbsd-compat/getcwd.c
@@ -1,4 +1,4 @@
1/* from OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp */ 1/* $OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp */
2/* 2/*
3 * Copyright (c) 1989, 1991, 1993 3 * Copyright (c) 1989, 1991, 1993
4 * The Regents of the University of California. All rights reserved. 4 * The Regents of the University of California. All rights reserved.
diff --git a/openbsd-compat/getgrouplist.c b/openbsd-compat/getgrouplist.c
index 3afcb9281..3906cd629 100644
--- a/openbsd-compat/getgrouplist.c
+++ b/openbsd-compat/getgrouplist.c
@@ -1,4 +1,4 @@
1/* from OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp */ 1/* $OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp */
2/* 2/*
3 * Copyright (c) 1991, 1993 3 * Copyright (c) 1991, 1993
4 * The Regents of the University of California. All rights reserved. 4 * The Regents of the University of California. All rights reserved.
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 37d2064cd..cff547745 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -1,5 +1,3 @@
1/* $Id: openbsd-compat.h,v 1.62 2014/09/30 23:43:08 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 1999-2003 Damien Miller. All rights reserved. 2 * Copyright (c) 1999-2003 Damien Miller. All rights reserved.
5 * Copyright (c) 2003 Ben Lindstrom. All rights reserved. 3 * Copyright (c) 2003 Ben Lindstrom. All rights reserved.
@@ -64,7 +62,7 @@ void closefrom(int);
64 62
65#ifndef HAVE_GETCWD 63#ifndef HAVE_GETCWD
66char *getcwd(char *pt, size_t size); 64char *getcwd(char *pt, size_t size);
67#endif 65#endif
68 66
69#ifndef HAVE_REALLOCARRAY 67#ifndef HAVE_REALLOCARRAY
70void *reallocarray(void *, size_t, size_t); 68void *reallocarray(void *, size_t, size_t);
@@ -87,14 +85,16 @@ int rresvport_af(int *alport, sa_family_t af);
87#endif 85#endif
88 86
89#ifndef HAVE_STRLCPY 87#ifndef HAVE_STRLCPY
90/* #include <sys/types.h> XXX Still needed? */
91size_t strlcpy(char *dst, const char *src, size_t siz); 88size_t strlcpy(char *dst, const char *src, size_t siz);
92#endif 89#endif
93 90
94#ifndef HAVE_STRLCAT 91#ifndef HAVE_STRLCAT
95/* #include <sys/types.h> XXX Still needed? */
96size_t strlcat(char *dst, const char *src, size_t siz); 92size_t strlcat(char *dst, const char *src, size_t siz);
97#endif 93#endif
94
95#ifndef HAVE_STRCASESTR
96char *strcasestr(const char *, const char *);
97#endif
98 98
99#ifndef HAVE_SETENV 99#ifndef HAVE_SETENV
100int setenv(register const char *name, register const char *value, int rewrite); 100int setenv(register const char *name, register const char *value, int rewrite);
@@ -113,11 +113,11 @@ char *strptime(const char *buf, const char *fmt, struct tm *tm);
113int mkstemps(char *path, int slen); 113int mkstemps(char *path, int slen);
114int mkstemp(char *path); 114int mkstemp(char *path);
115char *mkdtemp(char *path); 115char *mkdtemp(char *path);
116#endif 116#endif
117 117
118#ifndef HAVE_DAEMON 118#ifndef HAVE_DAEMON
119int daemon(int nochdir, int noclose); 119int daemon(int nochdir, int noclose);
120#endif 120#endif
121 121
122#ifndef HAVE_DIRNAME 122#ifndef HAVE_DIRNAME
123char *dirname(const char *path); 123char *dirname(const char *path);
@@ -142,7 +142,7 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
142 142
143#ifndef HAVE_INET_ATON 143#ifndef HAVE_INET_ATON
144int inet_aton(const char *cp, struct in_addr *addr); 144int inet_aton(const char *cp, struct in_addr *addr);
145#endif 145#endif
146 146
147#ifndef HAVE_STRSEP 147#ifndef HAVE_STRSEP
148char *strsep(char **stringp, const char *delim); 148char *strsep(char **stringp, const char *delim);
@@ -154,7 +154,6 @@ void compat_init_setproctitle(int argc, char *argv[]);
154#endif 154#endif
155 155
156#ifndef HAVE_GETGROUPLIST 156#ifndef HAVE_GETGROUPLIST
157/* #include <grp.h> XXXX Still needed ? */
158int getgrouplist(const char *, gid_t, gid_t *, int *); 157int getgrouplist(const char *, gid_t, gid_t *, int *);
159#endif 158#endif
160 159
@@ -199,18 +198,16 @@ u_int32_t arc4random_uniform(u_int32_t);
199 198
200#ifndef HAVE_ASPRINTF 199#ifndef HAVE_ASPRINTF
201int asprintf(char **, const char *, ...); 200int asprintf(char **, const char *, ...);
202#endif 201#endif
203 202
204#ifndef HAVE_OPENPTY 203#ifndef HAVE_OPENPTY
205# include <sys/ioctl.h> /* for struct winsize */ 204# include <sys/ioctl.h> /* for struct winsize */
206int openpty(int *, int *, char *, struct termios *, struct winsize *); 205int openpty(int *, int *, char *, struct termios *, struct winsize *);
207#endif /* HAVE_OPENPTY */ 206#endif /* HAVE_OPENPTY */
208 207
209/* #include <sys/types.h> XXX needed? For size_t */
210
211#ifndef HAVE_SNPRINTF 208#ifndef HAVE_SNPRINTF
212int snprintf(char *, size_t, SNPRINTF_CONST char *, ...); 209int snprintf(char *, size_t, SNPRINTF_CONST char *, ...);
213#endif 210#endif
214 211
215#ifndef HAVE_STRTOLL 212#ifndef HAVE_STRTOLL
216long long strtoll(const char *, char **, int); 213long long strtoll(const char *, char **, int);
@@ -299,7 +296,6 @@ int bcrypt_pbkdf(const char *, size_t, const u_int8_t *, size_t,
299void explicit_bzero(void *p, size_t n); 296void explicit_bzero(void *p, size_t n);
300#endif 297#endif
301 298
302void *xmmap(size_t size);
303char *xcrypt(const char *password, const char *salt); 299char *xcrypt(const char *password, const char *salt);
304char *shadow_pw(struct passwd *pw); 300char *shadow_pw(struct passwd *pw);
305 301
diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c
index 3f62403ce..aaa953f2d 100644
--- a/openbsd-compat/openssl-compat.c
+++ b/openbsd-compat/openssl-compat.c
@@ -1,5 +1,3 @@
1/* $Id: openssl-compat.c,v 1.19 2014/07/02 05:28:07 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> 2 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au>
5 * 3 *
@@ -55,7 +53,7 @@ ssh_compatible_openssl(long headerver, long libver)
55 mask = 0xfffff00fL; /* major,minor,fix,status */ 53 mask = 0xfffff00fL; /* major,minor,fix,status */
56 return (headerver & mask) == (libver & mask); 54 return (headerver & mask) == (libver & mask);
57 } 55 }
58 56
59 /* 57 /*
60 * For versions >= 1.0.0, major,minor must match and library 58 * For versions >= 1.0.0, major,minor must match and library
61 * fix version must be equal to or newer than the header. 59 * fix version must be equal to or newer than the header.
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h
index 8917551d3..2ae42bacf 100644
--- a/openbsd-compat/openssl-compat.h
+++ b/openbsd-compat/openssl-compat.h
@@ -1,5 +1,3 @@
1/* $Id: openssl-compat.h,v 1.31 2014/08/29 18:18:29 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> 2 * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au>
5 * 3 *
@@ -71,6 +69,12 @@ void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t);
71# endif 69# endif
72#endif 70#endif
73 71
72#if defined(HAVE_EVP_RIPEMD160)
73# if defined(OPENSSL_NO_RIPEMD) || defined(OPENSSL_NO_RMD160)
74# undef HAVE_EVP_RIPEMD160
75# endif
76#endif
77
74/* 78/*
75 * We overload some of the OpenSSL crypto functions with ssh_* equivalents 79 * We overload some of the OpenSSL crypto functions with ssh_* equivalents
76 * to automatically handle OpenSSL engine initialisation. 80 * to automatically handle OpenSSL engine initialisation.
diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c
index 8da367d48..c2970c4db 100644
--- a/openbsd-compat/port-aix.c
+++ b/openbsd-compat/port-aix.c
@@ -179,7 +179,7 @@ sys_auth_passwd(Authctxt *ctxt, const char *password)
179 do { 179 do {
180 result = authenticate((char *)name, (char *)password, &reenter, 180 result = authenticate((char *)name, (char *)password, &reenter,
181 &authmsg); 181 &authmsg);
182 aix_remove_embedded_newlines(authmsg); 182 aix_remove_embedded_newlines(authmsg);
183 debug3("AIX/authenticate result %d, authmsg %.100s", result, 183 debug3("AIX/authenticate result %d, authmsg %.100s", result,
184 authmsg); 184 authmsg);
185 } while (reenter); 185 } while (reenter);
@@ -337,11 +337,11 @@ aix_setauthdb(const char *user)
337 debug3("%s: Could not open userdb to read", __func__); 337 debug3("%s: Could not open userdb to read", __func__);
338 return; 338 return;
339 } 339 }
340 340
341 if (getuserattr((char *)user, S_REGISTRY, &registry, SEC_CHAR) == 0) { 341 if (getuserattr((char *)user, S_REGISTRY, &registry, SEC_CHAR) == 0) {
342 if (setauthdb(registry, old_registry) == 0) 342 if (setauthdb(registry, old_registry) == 0)
343 debug3("AIX/setauthdb set registry '%s'", registry); 343 debug3("AIX/setauthdb set registry '%s'", registry);
344 else 344 else
345 debug3("AIX/setauthdb set registry '%s' failed: %s", 345 debug3("AIX/setauthdb set registry '%s' failed: %s",
346 registry, strerror(errno)); 346 registry, strerror(errno));
347 } else 347 } else
diff --git a/openbsd-compat/port-aix.h b/openbsd-compat/port-aix.h
index 53e4e88a0..9c0a4dd3e 100644
--- a/openbsd-compat/port-aix.h
+++ b/openbsd-compat/port-aix.h
@@ -1,5 +1,3 @@
1/* $Id: port-aix.h,v 1.32 2009/12/20 23:49:22 dtucker Exp $ */
2
3/* 1/*
4 * 2 *
5 * Copyright (c) 2001 Gert Doering. All rights reserved. 3 * Copyright (c) 2001 Gert Doering. All rights reserved.
diff --git a/openbsd-compat/port-irix.c b/openbsd-compat/port-irix.c
index ba751a538..525b02909 100644
--- a/openbsd-compat/port-irix.c
+++ b/openbsd-compat/port-irix.c
@@ -47,42 +47,42 @@ void
47irix_setusercontext(struct passwd *pw) 47irix_setusercontext(struct passwd *pw)
48{ 48{
49#ifdef WITH_IRIX_PROJECT 49#ifdef WITH_IRIX_PROJECT
50 prid_t projid; 50 prid_t projid;
51#endif 51#endif
52#ifdef WITH_IRIX_JOBS 52#ifdef WITH_IRIX_JOBS
53 jid_t jid = 0; 53 jid_t jid = 0;
54#elif defined(WITH_IRIX_ARRAY) 54#elif defined(WITH_IRIX_ARRAY)
55 int jid = 0; 55 int jid = 0;
56#endif 56#endif
57 57
58#ifdef WITH_IRIX_JOBS 58#ifdef WITH_IRIX_JOBS
59 jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive"); 59 jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive");
60 if (jid == -1) 60 if (jid == -1)
61 fatal("Failed to create job container: %.100s", 61 fatal("Failed to create job container: %.100s",
62 strerror(errno)); 62 strerror(errno));
63#endif /* WITH_IRIX_JOBS */ 63#endif /* WITH_IRIX_JOBS */
64#ifdef WITH_IRIX_ARRAY 64#ifdef WITH_IRIX_ARRAY
65 /* initialize array session */ 65 /* initialize array session */
66 if (jid == 0 && newarraysess() != 0) 66 if (jid == 0 && newarraysess() != 0)
67 fatal("Failed to set up new array session: %.100s", 67 fatal("Failed to set up new array session: %.100s",
68 strerror(errno)); 68 strerror(errno));
69#endif /* WITH_IRIX_ARRAY */ 69#endif /* WITH_IRIX_ARRAY */
70#ifdef WITH_IRIX_PROJECT 70#ifdef WITH_IRIX_PROJECT
71 /* initialize irix project info */ 71 /* initialize irix project info */
72 if ((projid = getdfltprojuser(pw->pw_name)) == -1) { 72 if ((projid = getdfltprojuser(pw->pw_name)) == -1) {
73 debug("Failed to get project id, using projid 0"); 73 debug("Failed to get project id, using projid 0");
74 projid = 0; 74 projid = 0;
75 } 75 }
76 if (setprid(projid)) 76 if (setprid(projid))
77 fatal("Failed to initialize project %d for %s: %.100s", 77 fatal("Failed to initialize project %d for %s: %.100s",
78 (int)projid, pw->pw_name, strerror(errno)); 78 (int)projid, pw->pw_name, strerror(errno));
79#endif /* WITH_IRIX_PROJECT */ 79#endif /* WITH_IRIX_PROJECT */
80#ifdef WITH_IRIX_AUDIT 80#ifdef WITH_IRIX_AUDIT
81 if (sysconf(_SC_AUDIT)) { 81 if (sysconf(_SC_AUDIT)) {
82 debug("Setting sat id to %d", (int) pw->pw_uid); 82 debug("Setting sat id to %d", (int) pw->pw_uid);
83 if (satsetid(pw->pw_uid)) 83 if (satsetid(pw->pw_uid))
84 debug("error setting satid: %.100s", strerror(errno)); 84 debug("error setting satid: %.100s", strerror(errno));
85 } 85 }
86#endif /* WITH_IRIX_AUDIT */ 86#endif /* WITH_IRIX_AUDIT */
87} 87}
88 88
diff --git a/openbsd-compat/port-irix.h b/openbsd-compat/port-irix.h
index 67c486307..bc8cc44ac 100644
--- a/openbsd-compat/port-irix.h
+++ b/openbsd-compat/port-irix.h
@@ -1,5 +1,3 @@
1/* $Id: port-irix.h,v 1.4 2003/08/29 16:59:52 mouring Exp $ */
2
3/* 1/*
4 * Copyright (c) 2000 Denis Parker. All rights reserved. 2 * Copyright (c) 2000 Denis Parker. All rights reserved.
5 * Copyright (c) 2000 Michael Stone. All rights reserved. 3 * Copyright (c) 2000 Michael Stone. All rights reserved.
diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c
index f9cdc15c3..e26faf08c 100644
--- a/openbsd-compat/port-linux.c
+++ b/openbsd-compat/port-linux.c
@@ -1,5 +1,3 @@
1/* $Id: port-linux.c,v 1.18 2013/06/01 22:07:32 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2005 Daniel Walsh <dwalsh@redhat.com> 2 * Copyright (c) 2005 Daniel Walsh <dwalsh@redhat.com>
5 * Copyright (c) 2006 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2006 Damien Miller <djm@openbsd.org>
diff --git a/openbsd-compat/port-linux.h b/openbsd-compat/port-linux.h
index 80ce13ad9..c88129428 100644
--- a/openbsd-compat/port-linux.h
+++ b/openbsd-compat/port-linux.h
@@ -1,5 +1,3 @@
1/* $Id: port-linux.h,v 1.5 2011/01/25 01:16:18 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2006 Damien Miller <djm@openbsd.org> 2 * Copyright (c) 2006 Damien Miller <djm@openbsd.org>
5 * 3 *
diff --git a/openbsd-compat/port-solaris.c b/openbsd-compat/port-solaris.c
index e36e412d7..0e89dc326 100644
--- a/openbsd-compat/port-solaris.c
+++ b/openbsd-compat/port-solaris.c
@@ -1,5 +1,3 @@
1/* $Id: port-solaris.c,v 1.4 2010/11/05 01:03:05 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2006 Chad Mynhier. 2 * Copyright (c) 2006 Chad Mynhier.
5 * 3 *
@@ -215,7 +213,7 @@ solaris_set_default_project(struct passwd *pw)
215 213
216 /* get default project, if we fail just return gracefully */ 214 /* get default project, if we fail just return gracefully */
217 if ((defaultproject = getdefaultproj(pw->pw_name, &tempproject, &buf, 215 if ((defaultproject = getdefaultproj(pw->pw_name, &tempproject, &buf,
218 sizeof(buf))) > 0) { 216 sizeof(buf))) != NULL) {
219 /* set default project */ 217 /* set default project */
220 if (setproject(defaultproject->pj_name, pw->pw_name, 218 if (setproject(defaultproject->pj_name, pw->pw_name,
221 TASK_NORMAL) != 0) 219 TASK_NORMAL) != 0)
diff --git a/openbsd-compat/port-solaris.h b/openbsd-compat/port-solaris.h
index a7cb5eb30..dde1a5b8b 100644
--- a/openbsd-compat/port-solaris.h
+++ b/openbsd-compat/port-solaris.h
@@ -1,5 +1,3 @@
1/* $Id: port-solaris.h,v 1.2 2010/11/05 01:03:05 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2006 Chad Mynhier. 2 * Copyright (c) 2006 Chad Mynhier.
5 * 3 *
diff --git a/openbsd-compat/port-tun.c b/openbsd-compat/port-tun.c
index 49e7b4d99..a444adf1d 100644
--- a/openbsd-compat/port-tun.c
+++ b/openbsd-compat/port-tun.c
@@ -68,7 +68,7 @@ sys_tun_open(int tun, int mode)
68 return (-1); 68 return (-1);
69 } 69 }
70 70
71 bzero(&ifr, sizeof(ifr)); 71 bzero(&ifr, sizeof(ifr));
72 72
73 if (mode == SSH_TUNMODE_ETHERNET) { 73 if (mode == SSH_TUNMODE_ETHERNET) {
74 ifr.ifr_flags = IFF_TAP; 74 ifr.ifr_flags = IFF_TAP;
diff --git a/openbsd-compat/readpassphrase.c b/openbsd-compat/readpassphrase.c
index d63cdf2f0..24aed6e46 100644
--- a/openbsd-compat/readpassphrase.c
+++ b/openbsd-compat/readpassphrase.c
@@ -1,7 +1,8 @@
1/* $OpenBSD: readpassphrase.c,v 1.22 2010/01/13 10:20:54 dtucker Exp $ */ 1/* $OpenBSD: readpassphrase.c,v 1.26 2016/10/18 12:47:18 millert Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000-2002, 2007 Todd C. Miller <Todd.Miller@courtesan.com> 4 * Copyright (c) 2000-2002, 2007, 2010
5 * Todd C. Miller <Todd.Miller@courtesan.com>
5 * 6 *
6 * Permission to use, copy, modify, and distribute this software for any 7 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above 8 * purpose with or without fee is hereby granted, provided that the above
@@ -35,10 +36,9 @@
35#include <string.h> 36#include <string.h>
36#include <unistd.h> 37#include <unistd.h>
37 38
38#ifdef TCSASOFT 39#ifndef TCSASOFT
39# define _T_FLUSH (TCSAFLUSH|TCSASOFT) 40/* If we don't have TCSASOFT define it so that ORing it it below is a no-op. */
40#else 41# define TCSASOFT 0
41# define _T_FLUSH (TCSAFLUSH)
42#endif 42#endif
43 43
44/* SunOS 4.x which lacks _POSIX_VDISABLE, but has VDISABLE */ 44/* SunOS 4.x which lacks _POSIX_VDISABLE, but has VDISABLE */
@@ -95,6 +95,27 @@ restart:
95 } 95 }
96 96
97 /* 97 /*
98 * Turn off echo if possible.
99 * If we are using a tty but are not the foreground pgrp this will
100 * generate SIGTTOU, so do it *before* installing the signal handlers.
101 */
102 if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) {
103 memcpy(&term, &oterm, sizeof(term));
104 if (!(flags & RPP_ECHO_ON))
105 term.c_lflag &= ~(ECHO | ECHONL);
106#ifdef VSTATUS
107 if (term.c_cc[VSTATUS] != _POSIX_VDISABLE)
108 term.c_cc[VSTATUS] = _POSIX_VDISABLE;
109#endif
110 (void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &term);
111 } else {
112 memset(&term, 0, sizeof(term));
113 term.c_lflag |= ECHO;
114 memset(&oterm, 0, sizeof(oterm));
115 oterm.c_lflag |= ECHO;
116 }
117
118 /*
98 * Catch signals that would otherwise cause the user to end 119 * Catch signals that would otherwise cause the user to end
99 * up with echo turned off in the shell. Don't worry about 120 * up with echo turned off in the shell. Don't worry about
100 * things like SIGXCPU and SIGVTALRM for now. 121 * things like SIGXCPU and SIGVTALRM for now.
@@ -112,53 +133,37 @@ restart:
112 (void)sigaction(SIGTTIN, &sa, &savettin); 133 (void)sigaction(SIGTTIN, &sa, &savettin);
113 (void)sigaction(SIGTTOU, &sa, &savettou); 134 (void)sigaction(SIGTTOU, &sa, &savettou);
114 135
115 /* Turn off echo if possible. */ 136 if (!(flags & RPP_STDIN))
116 if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { 137 (void)write(output, prompt, strlen(prompt));
117 memcpy(&term, &oterm, sizeof(term)); 138 end = buf + bufsiz - 1;
118 if (!(flags & RPP_ECHO_ON)) 139 p = buf;
119 term.c_lflag &= ~(ECHO | ECHONL); 140 while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') {
120#ifdef VSTATUS 141 if (p < end) {
121 if (term.c_cc[VSTATUS] != _POSIX_VDISABLE) 142 if ((flags & RPP_SEVENBIT))
122 term.c_cc[VSTATUS] = _POSIX_VDISABLE; 143 ch &= 0x7f;
123#endif 144 if (isalpha((unsigned char)ch)) {
124 (void)tcsetattr(input, _T_FLUSH, &term); 145 if ((flags & RPP_FORCELOWER))
125 } else { 146 ch = (char)tolower((unsigned char)ch);
126 memset(&term, 0, sizeof(term)); 147 if ((flags & RPP_FORCEUPPER))
127 term.c_lflag |= ECHO; 148 ch = (char)toupper((unsigned char)ch);
128 memset(&oterm, 0, sizeof(oterm));
129 oterm.c_lflag |= ECHO;
130 }
131
132 /* No I/O if we are already backgrounded. */
133 if (signo[SIGTTOU] != 1 && signo[SIGTTIN] != 1) {
134 if (!(flags & RPP_STDIN))
135 (void)write(output, prompt, strlen(prompt));
136 end = buf + bufsiz - 1;
137 p = buf;
138 while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') {
139 if (p < end) {
140 if ((flags & RPP_SEVENBIT))
141 ch &= 0x7f;
142 if (isalpha(ch)) {
143 if ((flags & RPP_FORCELOWER))
144 ch = (char)tolower(ch);
145 if ((flags & RPP_FORCEUPPER))
146 ch = (char)toupper(ch);
147 }
148 *p++ = ch;
149 } 149 }
150 *p++ = ch;
150 } 151 }
151 *p = '\0';
152 save_errno = errno;
153 if (!(term.c_lflag & ECHO))
154 (void)write(output, "\n", 1);
155 } 152 }
153 *p = '\0';
154 save_errno = errno;
155 if (!(term.c_lflag & ECHO))
156 (void)write(output, "\n", 1);
156 157
157 /* Restore old terminal settings and signals. */ 158 /* Restore old terminal settings and signals. */
158 if (memcmp(&term, &oterm, sizeof(term)) != 0) { 159 if (memcmp(&term, &oterm, sizeof(term)) != 0) {
159 while (tcsetattr(input, _T_FLUSH, &oterm) == -1 && 160 const int sigttou = signo[SIGTTOU];
160 errno == EINTR) 161
162 /* Ignore SIGTTOU generated when we are not the fg pgrp. */
163 while (tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm) == -1 &&
164 errno == EINTR && !signo[SIGTTOU])
161 continue; 165 continue;
166 signo[SIGTTOU] = sigttou;
162 } 167 }
163 (void)sigaction(SIGALRM, &savealrm, NULL); 168 (void)sigaction(SIGALRM, &savealrm, NULL);
164 (void)sigaction(SIGHUP, &savehup, NULL); 169 (void)sigaction(SIGHUP, &savehup, NULL);
@@ -194,6 +199,7 @@ restart:
194 errno = save_errno; 199 errno = save_errno;
195 return(nr == -1 ? NULL : buf); 200 return(nr == -1 ? NULL : buf);
196} 201}
202DEF_WEAK(readpassphrase);
197 203
198#if 0 204#if 0
199char * 205char *
diff --git a/openbsd-compat/setproctitle.c b/openbsd-compat/setproctitle.c
index 9f7ca14c2..2b15c6e00 100644
--- a/openbsd-compat/setproctitle.c
+++ b/openbsd-compat/setproctitle.c
@@ -76,7 +76,7 @@ compat_init_setproctitle(int argc, char *argv[])
76 76
77 /* 77 /*
78 * NB: This assumes that argv has already been copied out of the 78 * NB: This assumes that argv has already been copied out of the
79 * way. This is true for sshd, but may not be true for other 79 * way. This is true for sshd, but may not be true for other
80 * programs. Beware. 80 * programs. Beware.
81 */ 81 */
82 82
@@ -92,7 +92,7 @@ compat_init_setproctitle(int argc, char *argv[])
92 } 92 }
93 93
94 /* 94 /*
95 * Find the last argv string or environment variable within 95 * Find the last argv string or environment variable within
96 * our process memory area. 96 * our process memory area.
97 */ 97 */
98 for (i = 0; i < argc; i++) { 98 for (i = 0; i < argc; i++) {
@@ -108,8 +108,8 @@ compat_init_setproctitle(int argc, char *argv[])
108 argv_start = argv[0]; 108 argv_start = argv[0];
109 argv_env_len = lastargv - argv[0] - 1; 109 argv_env_len = lastargv - argv[0] - 1;
110 110
111 /* 111 /*
112 * Copy environment 112 * Copy environment
113 * XXX - will truncate env on strdup fail 113 * XXX - will truncate env on strdup fail
114 */ 114 */
115 for (i = 0; envp[i] != NULL; i++) 115 for (i = 0; envp[i] != NULL; i++)
@@ -156,7 +156,7 @@ setproctitle(const char *fmt, ...)
156 pst.pst_command = ptitle; 156 pst.pst_command = ptitle;
157 pstat(PSTAT_SETCMD, pst, strlen(ptitle), 0, 0); 157 pstat(PSTAT_SETCMD, pst, strlen(ptitle), 0, 0);
158#elif SPT_TYPE == SPT_REUSEARGV 158#elif SPT_TYPE == SPT_REUSEARGV
159/* debug("setproctitle: copy \"%s\" into len %d", 159/* debug("setproctitle: copy \"%s\" into len %d",
160 buf, argv_env_len); */ 160 buf, argv_env_len); */
161 len = strlcpy(argv_start, ptitle, argv_env_len); 161 len = strlcpy(argv_start, ptitle, argv_env_len);
162 for(; len < argv_env_len; len++) 162 for(; len < argv_env_len; len++)
diff --git a/openbsd-compat/sha2.c b/openbsd-compat/sha2.c
index 737935d46..a22099bbe 100644
--- a/openbsd-compat/sha2.c
+++ b/openbsd-compat/sha2.c
@@ -1,4 +1,4 @@
1/* from OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp */ 1/* $OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp */
2 2
3/* 3/*
4 * FILE: sha2.c 4 * FILE: sha2.c
diff --git a/openbsd-compat/sha2.h b/openbsd-compat/sha2.h
index c8bfc3cd1..c6e6c97a5 100644
--- a/openbsd-compat/sha2.h
+++ b/openbsd-compat/sha2.h
@@ -1,4 +1,4 @@
1/* OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */ 1/* $OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */
2 2
3/* 3/*
4 * FILE: sha2.h 4 * FILE: sha2.h
diff --git a/openbsd-compat/strcasestr.c b/openbsd-compat/strcasestr.c
new file mode 100644
index 000000000..4c4d1475a
--- /dev/null
+++ b/openbsd-compat/strcasestr.c
@@ -0,0 +1,69 @@
1/* $OpenBSD: strcasestr.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */
2/* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink Exp $ */
3
4/*-
5 * Copyright (c) 1990, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by
9 * Chris Torek.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 * 3. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 */
35
36/* OPENBSD ORIGINAL: lib/libc/string/strcasestr.c */
37
38#include "includes.h"
39
40#ifndef HAVE_STRCASESTR
41
42#include <ctype.h>
43#include <string.h>
44
45/*
46 * Find the first occurrence of find in s, ignore case.
47 */
48char *
49strcasestr(const char *s, const char *find)
50{
51 char c, sc;
52 size_t len;
53
54 if ((c = *find++) != 0) {
55 c = (char)tolower((unsigned char)c);
56 len = strlen(find);
57 do {
58 do {
59 if ((sc = *s++) == 0)
60 return (NULL);
61 } while ((char)tolower((unsigned char)sc) != c);
62 } while (strncasecmp(s, find, len) != 0);
63 s--;
64 }
65 return ((char *)s);
66}
67DEF_WEAK(strcasestr);
68
69#endif
diff --git a/openbsd-compat/vis.c b/openbsd-compat/vis.c
index 3cef6bafd..0e04ed025 100644
--- a/openbsd-compat/vis.c
+++ b/openbsd-compat/vis.c
@@ -33,12 +33,6 @@
33#include "includes.h" 33#include "includes.h"
34#if !defined(HAVE_STRNVIS) || defined(BROKEN_STRNVIS) 34#if !defined(HAVE_STRNVIS) || defined(BROKEN_STRNVIS)
35 35
36/*
37 * We want these to override in the BROKEN_STRNVIS case. TO avoid future sync
38 * problems no-op out the weak symbol definition rather than remove it.
39 */
40#define DEF_WEAK(x)
41
42#include <sys/types.h> 36#include <sys/types.h>
43#include <errno.h> 37#include <errno.h>
44#include <ctype.h> 38#include <ctype.h>
diff --git a/openbsd-compat/xcrypt.c b/openbsd-compat/xcrypt.c
index cf6a9b99f..c9c6283cc 100644
--- a/openbsd-compat/xcrypt.c
+++ b/openbsd-compat/xcrypt.c
@@ -42,7 +42,7 @@
42# include <sys/security.h> 42# include <sys/security.h>
43# include <sys/audit.h> 43# include <sys/audit.h>
44# include <prot.h> 44# include <prot.h>
45# endif 45# endif
46 46
47# if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) 47# if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW)
48# include <shadow.h> 48# include <shadow.h>
@@ -108,20 +108,20 @@ xcrypt(const char *password, const char *salt)
108 salt = pick_salt(); 108 salt = pick_salt();
109 109
110# ifdef HAVE_MD5_PASSWORDS 110# ifdef HAVE_MD5_PASSWORDS
111 if (is_md5_salt(salt)) 111 if (is_md5_salt(salt))
112 crypted = md5_crypt(password, salt); 112 crypted = md5_crypt(password, salt);
113 else 113 else
114 crypted = crypt(password, salt); 114 crypted = crypt(password, salt);
115# elif defined(__hpux) && !defined(HAVE_SECUREWARE) 115# elif defined(__hpux) && !defined(HAVE_SECUREWARE)
116 if (iscomsec()) 116 if (iscomsec())
117 crypted = bigcrypt(password, salt); 117 crypted = bigcrypt(password, salt);
118 else 118 else
119 crypted = crypt(password, salt); 119 crypted = crypt(password, salt);
120# elif defined(HAVE_SECUREWARE) 120# elif defined(HAVE_SECUREWARE)
121 crypted = bigcrypt(password, salt); 121 crypted = bigcrypt(password, salt);
122# else 122# else
123 crypted = crypt(password, salt); 123 crypted = crypt(password, salt);
124# endif 124# endif
125 125
126 return crypted; 126 return crypted;
127} 127}
diff --git a/openbsd-compat/xmmap.c b/openbsd-compat/xmmap.c
deleted file mode 100644
index 04c6babc2..000000000
--- a/openbsd-compat/xmmap.c
+++ /dev/null
@@ -1,88 +0,0 @@
1/*
2 * Copyright (c) 2002 Tim Rice. All rights reserved.
3 * MAP_FAILED code by Solar Designer.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26/* $Id: xmmap.c,v 1.15 2009/02/16 04:21:40 djm Exp $ */
27
28#include "includes.h"
29
30#include <sys/types.h>
31#ifdef HAVE_SYS_MMAN_H
32#include <sys/mman.h>
33#endif
34#include <sys/stat.h>
35
36#ifdef HAVE_FCNTL_H
37# include <fcntl.h>
38#endif
39#include <errno.h>
40#include <stdarg.h>
41#include <stdlib.h>
42#include <string.h>
43#include <unistd.h>
44
45#include "log.h"
46
47void *
48xmmap(size_t size)
49{
50#ifdef HAVE_MMAP
51 void *address;
52
53# ifdef MAP_ANON
54 address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_ANON|MAP_SHARED,
55 -1, (off_t)0);
56# else
57 address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_SHARED,
58 open("/dev/zero", O_RDWR), (off_t)0);
59# endif
60
61#define MM_SWAP_TEMPLATE "/var/run/sshd.mm.XXXXXXXX"
62 if (address == (void *)MAP_FAILED) {
63 char tmpname[sizeof(MM_SWAP_TEMPLATE)] = MM_SWAP_TEMPLATE;
64 int tmpfd;
65 mode_t old_umask;
66
67 old_umask = umask(0177);
68 tmpfd = mkstemp(tmpname);
69 umask(old_umask);
70 if (tmpfd == -1)
71 fatal("mkstemp(\"%s\"): %s",
72 MM_SWAP_TEMPLATE, strerror(errno));
73 unlink(tmpname);
74 if (ftruncate(tmpfd, size) != 0)
75 fatal("%s: ftruncate: %s", __func__, strerror(errno));
76 address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_SHARED,
77 tmpfd, (off_t)0);
78 close(tmpfd);
79 }
80
81 return (address);
82#else
83 fatal("%s: UsePrivilegeSeparation=yes and Compression=yes not supported",
84 __func__);
85#endif /* HAVE_MMAP */
86
87}
88
diff --git a/opensshd.init.in b/opensshd.init.in
index 517345bfb..3908566b7 100755
--- a/opensshd.init.in
+++ b/opensshd.init.in
@@ -25,9 +25,9 @@ HOST_KEY_ED25519=$sysconfdir/ssh_host_ed25519_key
25 25
26 26
27checkkeys() { 27checkkeys() {
28 if [ ! -f $HOST_KEY_RSA1 ]; then 28@COMMENT_OUT_RSA1@ if [ ! -f $HOST_KEY_RSA1 ]; then
29 ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N "" 29@COMMENT_OUT_RSA1@ ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N ""
30 fi 30@COMMENT_OUT_RSA1@ fi
31 if [ ! -f $HOST_KEY_DSA ]; then 31 if [ ! -f $HOST_KEY_DSA ]; then
32 ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" 32 ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N ""
33 fi 33 fi
diff --git a/packet.c b/packet.c
index d6dad2da6..ad1f6b497 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.c,v 1.234 2016/07/18 11:35:33 markus Exp $ */ 1/* $OpenBSD: packet.c,v 1.243 2016/10/11 21:47:45 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -38,8 +38,7 @@
38 */ 38 */
39 39
40#include "includes.h" 40#include "includes.h"
41 41
42#include <sys/param.h> /* MIN roundup */
43#include <sys/types.h> 42#include <sys/types.h>
44#include "openbsd-compat/sys-queue.h" 43#include "openbsd-compat/sys-queue.h"
45#include <sys/socket.h> 44#include <sys/socket.h>
@@ -122,10 +121,10 @@ struct session_state {
122 u_int remote_protocol_flags; 121 u_int remote_protocol_flags;
123 122
124 /* Encryption context for receiving data. Only used for decryption. */ 123 /* Encryption context for receiving data. Only used for decryption. */
125 struct sshcipher_ctx receive_context; 124 struct sshcipher_ctx *receive_context;
126 125
127 /* Encryption context for sending data. Only used for encryption. */ 126 /* Encryption context for sending data. Only used for encryption. */
128 struct sshcipher_ctx send_context; 127 struct sshcipher_ctx *send_context;
129 128
130 /* Buffer for raw input data from the socket. */ 129 /* Buffer for raw input data from the socket. */
131 struct sshbuf *input; 130 struct sshbuf *input;
@@ -205,6 +204,9 @@ struct session_state {
205 /* Used in packet_send2 */ 204 /* Used in packet_send2 */
206 int rekeying; 205 int rekeying;
207 206
207 /* Used in ssh_packet_send_mux() */
208 int mux;
209
208 /* Used in packet_set_interactive */ 210 /* Used in packet_set_interactive */
209 int set_interactive_called; 211 int set_interactive_called;
210 212
@@ -217,6 +219,10 @@ struct session_state {
217 /* SSH1 CRC compensation attack detector */ 219 /* SSH1 CRC compensation attack detector */
218 struct deattack_ctx deattack; 220 struct deattack_ctx deattack;
219 221
222 /* Hook for fuzzing inbound packets */
223 ssh_packet_hook_fn *hook_in;
224 void *hook_in_ctx;
225
220 TAILQ_HEAD(, packet) outgoing; 226 TAILQ_HEAD(, packet) outgoing;
221}; 227};
222 228
@@ -261,6 +267,13 @@ ssh_alloc_session_state(void)
261 return NULL; 267 return NULL;
262} 268}
263 269
270void
271ssh_packet_set_input_hook(struct ssh *ssh, ssh_packet_hook_fn *hook, void *ctx)
272{
273 ssh->state->hook_in = hook;
274 ssh->state->hook_in_ctx = ctx;
275}
276
264/* Returns nonzero if rekeying is in progress */ 277/* Returns nonzero if rekeying is in progress */
265int 278int
266ssh_packet_is_rekeying(struct ssh *ssh) 279ssh_packet_is_rekeying(struct ssh *ssh)
@@ -326,6 +339,19 @@ ssh_packet_set_timeout(struct ssh *ssh, int timeout, int count)
326 state->packet_timeout_ms = timeout * count * 1000; 339 state->packet_timeout_ms = timeout * count * 1000;
327} 340}
328 341
342void
343ssh_packet_set_mux(struct ssh *ssh)
344{
345 ssh->state->mux = 1;
346 ssh->state->rekeying = 0;
347}
348
349int
350ssh_packet_get_mux(struct ssh *ssh)
351{
352 return ssh->state->mux;
353}
354
329int 355int
330ssh_packet_stop_discard(struct ssh *ssh) 356ssh_packet_stop_discard(struct ssh *ssh)
331{ 357{
@@ -529,7 +555,6 @@ void
529ssh_packet_close(struct ssh *ssh) 555ssh_packet_close(struct ssh *ssh)
530{ 556{
531 struct session_state *state = ssh->state; 557 struct session_state *state = ssh->state;
532 int r;
533 u_int mode; 558 u_int mode;
534 559
535 if (!state->initialized) 560 if (!state->initialized)
@@ -573,10 +598,9 @@ ssh_packet_close(struct ssh *ssh)
573 inflateEnd(stream); 598 inflateEnd(stream);
574 } 599 }
575 } 600 }
576 if ((r = cipher_cleanup(&state->send_context)) != 0) 601 cipher_free(state->send_context);
577 error("%s: cipher_cleanup failed: %s", __func__, ssh_err(r)); 602 cipher_free(state->receive_context);
578 if ((r = cipher_cleanup(&state->receive_context)) != 0) 603 state->send_context = state->receive_context = NULL;
579 error("%s: cipher_cleanup failed: %s", __func__, ssh_err(r));
580 free(ssh->remote_ipaddr); 604 free(ssh->remote_ipaddr);
581 ssh->remote_ipaddr = NULL; 605 ssh->remote_ipaddr = NULL;
582 free(ssh->state); 606 free(ssh->state);
@@ -759,86 +783,6 @@ uncompress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
759 /* NOTREACHED */ 783 /* NOTREACHED */
760} 784}
761 785
762/* Serialise compression state into a blob for privsep */
763static int
764ssh_packet_get_compress_state(struct sshbuf *m, struct ssh *ssh)
765{
766 struct session_state *state = ssh->state;
767 struct sshbuf *b;
768 int r;
769
770 if ((b = sshbuf_new()) == NULL)
771 return SSH_ERR_ALLOC_FAIL;
772 if (state->compression_in_started) {
773 if ((r = sshbuf_put_string(b, &state->compression_in_stream,
774 sizeof(state->compression_in_stream))) != 0)
775 goto out;
776 } else if ((r = sshbuf_put_string(b, NULL, 0)) != 0)
777 goto out;
778 if (state->compression_out_started) {
779 if ((r = sshbuf_put_string(b, &state->compression_out_stream,
780 sizeof(state->compression_out_stream))) != 0)
781 goto out;
782 } else if ((r = sshbuf_put_string(b, NULL, 0)) != 0)
783 goto out;
784 r = sshbuf_put_stringb(m, b);
785 out:
786 sshbuf_free(b);
787 return r;
788}
789
790/* Deserialise compression state from a blob for privsep */
791static int
792ssh_packet_set_compress_state(struct ssh *ssh, struct sshbuf *m)
793{
794 struct session_state *state = ssh->state;
795 struct sshbuf *b = NULL;
796 int r;
797 const u_char *inblob, *outblob;
798 size_t inl, outl;
799
800 if ((r = sshbuf_froms(m, &b)) != 0)
801 goto out;
802 if ((r = sshbuf_get_string_direct(b, &inblob, &inl)) != 0 ||
803 (r = sshbuf_get_string_direct(b, &outblob, &outl)) != 0)
804 goto out;
805 if (inl == 0)
806 state->compression_in_started = 0;
807 else if (inl != sizeof(state->compression_in_stream)) {
808 r = SSH_ERR_INTERNAL_ERROR;
809 goto out;
810 } else {
811 state->compression_in_started = 1;
812 memcpy(&state->compression_in_stream, inblob, inl);
813 }
814 if (outl == 0)
815 state->compression_out_started = 0;
816 else if (outl != sizeof(state->compression_out_stream)) {
817 r = SSH_ERR_INTERNAL_ERROR;
818 goto out;
819 } else {
820 state->compression_out_started = 1;
821 memcpy(&state->compression_out_stream, outblob, outl);
822 }
823 r = 0;
824 out:
825 sshbuf_free(b);
826 return r;
827}
828
829void
830ssh_packet_set_compress_hooks(struct ssh *ssh, void *ctx,
831 void *(*allocfunc)(void *, u_int, u_int),
832 void (*freefunc)(void *, void *))
833{
834 ssh->state->compression_out_stream.zalloc = (alloc_func)allocfunc;
835 ssh->state->compression_out_stream.zfree = (free_func)freefunc;
836 ssh->state->compression_out_stream.opaque = ctx;
837 ssh->state->compression_in_stream.zalloc = (alloc_func)allocfunc;
838 ssh->state->compression_in_stream.zfree = (free_func)freefunc;
839 ssh->state->compression_in_stream.opaque = ctx;
840}
841
842/* 786/*
843 * Causes any further packets to be encrypted using the given key. The same 787 * Causes any further packets to be encrypted using the given key. The same
844 * key is used for both sending and reception. However, both directions are 788 * key is used for both sending and reception. However, both directions are
@@ -870,8 +814,8 @@ ssh_packet_set_encryption_key(struct ssh *ssh, const u_char *key, u_int keylen,
870 NULL, 0, CIPHER_DECRYPT) != 0)) 814 NULL, 0, CIPHER_DECRYPT) != 0))
871 fatal("%s: cipher_init failed: %s", __func__, ssh_err(r)); 815 fatal("%s: cipher_init failed: %s", __func__, ssh_err(r));
872 if (!state->cipher_warning_done && 816 if (!state->cipher_warning_done &&
873 ((wmsg = cipher_warning_message(&state->send_context)) != NULL || 817 ((wmsg = cipher_warning_message(state->send_context)) != NULL ||
874 (wmsg = cipher_warning_message(&state->send_context)) != NULL)) { 818 (wmsg = cipher_warning_message(state->send_context)) != NULL)) {
875 error("Warning: %s", wmsg); 819 error("Warning: %s", wmsg);
876 state->cipher_warning_done = 1; 820 state->cipher_warning_done = 1;
877 } 821 }
@@ -917,7 +861,7 @@ ssh_packet_send1(struct ssh *ssh)
917 861
918 /* Insert padding. Initialized to zero in packet_start1() */ 862 /* Insert padding. Initialized to zero in packet_start1() */
919 padding = 8 - len % 8; 863 padding = 8 - len % 8;
920 if (!state->send_context.plaintext) { 864 if (!cipher_ctx_is_plaintext(state->send_context)) {
921 cp = sshbuf_mutable_ptr(state->outgoing_packet); 865 cp = sshbuf_mutable_ptr(state->outgoing_packet);
922 if (cp == NULL) { 866 if (cp == NULL) {
923 r = SSH_ERR_INTERNAL_ERROR; 867 r = SSH_ERR_INTERNAL_ERROR;
@@ -947,7 +891,7 @@ ssh_packet_send1(struct ssh *ssh)
947 if ((r = sshbuf_reserve(state->output, 891 if ((r = sshbuf_reserve(state->output,
948 sshbuf_len(state->outgoing_packet), &cp)) != 0) 892 sshbuf_len(state->outgoing_packet), &cp)) != 0)
949 goto out; 893 goto out;
950 if ((r = cipher_crypt(&state->send_context, 0, cp, 894 if ((r = cipher_crypt(state->send_context, 0, cp,
951 sshbuf_ptr(state->outgoing_packet), 895 sshbuf_ptr(state->outgoing_packet),
952 sshbuf_len(state->outgoing_packet), 0, 0)) != 0) 896 sshbuf_len(state->outgoing_packet), 0, 0)) != 0)
953 goto out; 897 goto out;
@@ -978,33 +922,34 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
978 struct sshenc *enc; 922 struct sshenc *enc;
979 struct sshmac *mac; 923 struct sshmac *mac;
980 struct sshcomp *comp; 924 struct sshcomp *comp;
981 struct sshcipher_ctx *cc; 925 struct sshcipher_ctx **ccp;
926 struct packet_state *ps;
982 u_int64_t *max_blocks; 927 u_int64_t *max_blocks;
983 const char *wmsg; 928 const char *wmsg, *dir;
984 int r, crypt_type; 929 int r, crypt_type;
985 930
986 debug2("set_newkeys: mode %d", mode); 931 debug2("set_newkeys: mode %d", mode);
987 932
988 if (mode == MODE_OUT) { 933 if (mode == MODE_OUT) {
989 cc = &state->send_context; 934 dir = "output";
935 ccp = &state->send_context;
990 crypt_type = CIPHER_ENCRYPT; 936 crypt_type = CIPHER_ENCRYPT;
991 state->p_send.packets = state->p_send.blocks = 0; 937 ps = &state->p_send;
992 max_blocks = &state->max_blocks_out; 938 max_blocks = &state->max_blocks_out;
993 } else { 939 } else {
994 cc = &state->receive_context; 940 dir = "input";
941 ccp = &state->receive_context;
995 crypt_type = CIPHER_DECRYPT; 942 crypt_type = CIPHER_DECRYPT;
996 state->p_read.packets = state->p_read.blocks = 0; 943 ps = &state->p_read;
997 max_blocks = &state->max_blocks_in; 944 max_blocks = &state->max_blocks_in;
998 } 945 }
999 if (state->newkeys[mode] != NULL) { 946 if (state->newkeys[mode] != NULL) {
1000 debug("set_newkeys: rekeying, input %llu bytes %llu blocks, " 947 debug("%s: rekeying after %llu %s blocks"
1001 "output %llu bytes %llu blocks", 948 " (%llu bytes total)", __func__,
1002 (unsigned long long)state->p_read.bytes, 949 (unsigned long long)ps->blocks, dir,
1003 (unsigned long long)state->p_read.blocks, 950 (unsigned long long)ps->bytes);
1004 (unsigned long long)state->p_send.bytes, 951 cipher_free(*ccp);
1005 (unsigned long long)state->p_send.blocks); 952 *ccp = NULL;
1006 if ((r = cipher_cleanup(cc)) != 0)
1007 return r;
1008 enc = &state->newkeys[mode]->enc; 953 enc = &state->newkeys[mode]->enc;
1009 mac = &state->newkeys[mode]->mac; 954 mac = &state->newkeys[mode]->mac;
1010 comp = &state->newkeys[mode]->comp; 955 comp = &state->newkeys[mode]->comp;
@@ -1020,6 +965,8 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
1020 free(comp->name); 965 free(comp->name);
1021 free(state->newkeys[mode]); 966 free(state->newkeys[mode]);
1022 } 967 }
968 /* note that both bytes and the seqnr are not reset */
969 ps->packets = ps->blocks = 0;
1023 /* move newkeys from kex to state */ 970 /* move newkeys from kex to state */
1024 if ((state->newkeys[mode] = ssh->kex->newkeys[mode]) == NULL) 971 if ((state->newkeys[mode] = ssh->kex->newkeys[mode]) == NULL)
1025 return SSH_ERR_INTERNAL_ERROR; 972 return SSH_ERR_INTERNAL_ERROR;
@@ -1033,11 +980,11 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
1033 } 980 }
1034 mac->enabled = 1; 981 mac->enabled = 1;
1035 DBG(debug("cipher_init_context: %d", mode)); 982 DBG(debug("cipher_init_context: %d", mode));
1036 if ((r = cipher_init(cc, enc->cipher, enc->key, enc->key_len, 983 if ((r = cipher_init(ccp, enc->cipher, enc->key, enc->key_len,
1037 enc->iv, enc->iv_len, crypt_type)) != 0) 984 enc->iv, enc->iv_len, crypt_type)) != 0)
1038 return r; 985 return r;
1039 if (!state->cipher_warning_done && 986 if (!state->cipher_warning_done &&
1040 (wmsg = cipher_warning_message(cc)) != NULL) { 987 (wmsg = cipher_warning_message(*ccp)) != NULL) {
1041 error("Warning: %s", wmsg); 988 error("Warning: %s", wmsg);
1042 state->cipher_warning_done = 1; 989 state->cipher_warning_done = 1;
1043 } 990 }
@@ -1068,7 +1015,7 @@ ssh_set_newkeys(struct ssh *ssh, int mode)
1068 else 1015 else
1069 *max_blocks = ((u_int64_t)1 << 30) / enc->block_size; 1016 *max_blocks = ((u_int64_t)1 << 30) / enc->block_size;
1070 if (state->rekey_limit) 1017 if (state->rekey_limit)
1071 *max_blocks = MIN(*max_blocks, 1018 *max_blocks = MINIMUM(*max_blocks,
1072 state->rekey_limit / enc->block_size); 1019 state->rekey_limit / enc->block_size);
1073 debug("rekey after %llu blocks", (unsigned long long)*max_blocks); 1020 debug("rekey after %llu blocks", (unsigned long long)*max_blocks);
1074 return 0; 1021 return 0;
@@ -1111,7 +1058,7 @@ ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)
1111 return 1; 1058 return 1;
1112 1059
1113 /* Rekey after (cipher-specific) maxiumum blocks */ 1060 /* Rekey after (cipher-specific) maxiumum blocks */
1114 out_blocks = roundup(outbound_packet_len, 1061 out_blocks = ROUNDUP(outbound_packet_len,
1115 state->newkeys[MODE_OUT]->enc.block_size); 1062 state->newkeys[MODE_OUT]->enc.block_size);
1116 return (state->max_blocks_out && 1063 return (state->max_blocks_out &&
1117 (state->p_send.blocks + out_blocks > state->max_blocks_out)) || 1064 (state->p_send.blocks + out_blocks > state->max_blocks_out)) ||
@@ -1158,7 +1105,7 @@ ssh_packet_enable_delayed_compress(struct ssh *ssh)
1158} 1105}
1159 1106
1160/* Used to mute debug logging for noisy packet types */ 1107/* Used to mute debug logging for noisy packet types */
1161static int 1108int
1162ssh_packet_log_type(u_char type) 1109ssh_packet_log_type(u_char type)
1163{ 1110{
1164 switch (type) { 1111 switch (type) {
@@ -1239,7 +1186,7 @@ ssh_packet_send2_wrapped(struct ssh *ssh)
1239 if (state->extra_pad) { 1186 if (state->extra_pad) {
1240 tmp = state->extra_pad; 1187 tmp = state->extra_pad;
1241 state->extra_pad = 1188 state->extra_pad =
1242 roundup(state->extra_pad, block_size); 1189 ROUNDUP(state->extra_pad, block_size);
1243 /* check if roundup overflowed */ 1190 /* check if roundup overflowed */
1244 if (state->extra_pad < tmp) 1191 if (state->extra_pad < tmp)
1245 return SSH_ERR_INVALID_ARGUMENT; 1192 return SSH_ERR_INVALID_ARGUMENT;
@@ -1259,7 +1206,7 @@ ssh_packet_send2_wrapped(struct ssh *ssh)
1259 } 1206 }
1260 if ((r = sshbuf_reserve(state->outgoing_packet, padlen, &cp)) != 0) 1207 if ((r = sshbuf_reserve(state->outgoing_packet, padlen, &cp)) != 0)
1261 goto out; 1208 goto out;
1262 if (enc && !state->send_context.plaintext) { 1209 if (enc && !cipher_ctx_is_plaintext(state->send_context)) {
1263 /* random padding */ 1210 /* random padding */
1264 arc4random_buf(cp, padlen); 1211 arc4random_buf(cp, padlen);
1265 } else { 1212 } else {
@@ -1291,7 +1238,7 @@ ssh_packet_send2_wrapped(struct ssh *ssh)
1291 if ((r = sshbuf_reserve(state->output, 1238 if ((r = sshbuf_reserve(state->output,
1292 sshbuf_len(state->outgoing_packet) + authlen, &cp)) != 0) 1239 sshbuf_len(state->outgoing_packet) + authlen, &cp)) != 0)
1293 goto out; 1240 goto out;
1294 if ((r = cipher_crypt(&state->send_context, state->p_send.seqnr, cp, 1241 if ((r = cipher_crypt(state->send_context, state->p_send.seqnr, cp,
1295 sshbuf_ptr(state->outgoing_packet), 1242 sshbuf_ptr(state->outgoing_packet),
1296 len - aadlen, aadlen, authlen)) != 0) 1243 len - aadlen, aadlen, authlen)) != 0)
1297 goto out; 1244 goto out;
@@ -1606,7 +1553,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u_char *typep)
1606 * (C)1998 CORE-SDI, Buenos Aires Argentina 1553 * (C)1998 CORE-SDI, Buenos Aires Argentina
1607 * Ariel Futoransky(futo@core-sdi.com) 1554 * Ariel Futoransky(futo@core-sdi.com)
1608 */ 1555 */
1609 if (!state->receive_context.plaintext) { 1556 if (!cipher_ctx_is_plaintext(state->receive_context)) {
1610 emsg = NULL; 1557 emsg = NULL;
1611 switch (detect_attack(&state->deattack, 1558 switch (detect_attack(&state->deattack,
1612 sshbuf_ptr(state->input), padded_len)) { 1559 sshbuf_ptr(state->input), padded_len)) {
@@ -1635,7 +1582,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u_char *typep)
1635 sshbuf_reset(state->incoming_packet); 1582 sshbuf_reset(state->incoming_packet);
1636 if ((r = sshbuf_reserve(state->incoming_packet, padded_len, &p)) != 0) 1583 if ((r = sshbuf_reserve(state->incoming_packet, padded_len, &p)) != 0)
1637 goto out; 1584 goto out;
1638 if ((r = cipher_crypt(&state->receive_context, 0, p, 1585 if ((r = cipher_crypt(state->receive_context, 0, p,
1639 sshbuf_ptr(state->input), padded_len, 0, 0)) != 0) 1586 sshbuf_ptr(state->input), padded_len, 0, 0)) != 0)
1640 goto out; 1587 goto out;
1641 1588
@@ -1703,6 +1650,44 @@ ssh_packet_read_poll1(struct ssh *ssh, u_char *typep)
1703 return r; 1650 return r;
1704} 1651}
1705 1652
1653static int
1654ssh_packet_read_poll2_mux(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1655{
1656 struct session_state *state = ssh->state;
1657 const u_char *cp;
1658 size_t need;
1659 int r;
1660
1661 if (ssh->kex)
1662 return SSH_ERR_INTERNAL_ERROR;
1663 *typep = SSH_MSG_NONE;
1664 cp = sshbuf_ptr(state->input);
1665 if (state->packlen == 0) {
1666 if (sshbuf_len(state->input) < 4 + 1)
1667 return 0; /* packet is incomplete */
1668 state->packlen = PEEK_U32(cp);
1669 if (state->packlen < 4 + 1 ||
1670 state->packlen > PACKET_MAX_SIZE)
1671 return SSH_ERR_MESSAGE_INCOMPLETE;
1672 }
1673 need = state->packlen + 4;
1674 if (sshbuf_len(state->input) < need)
1675 return 0; /* packet is incomplete */
1676 sshbuf_reset(state->incoming_packet);
1677 if ((r = sshbuf_put(state->incoming_packet, cp + 4,
1678 state->packlen)) != 0 ||
1679 (r = sshbuf_consume(state->input, need)) != 0 ||
1680 (r = sshbuf_get_u8(state->incoming_packet, NULL)) != 0 ||
1681 (r = sshbuf_get_u8(state->incoming_packet, typep)) != 0)
1682 return r;
1683 if (ssh_packet_log_type(*typep))
1684 debug3("%s: type %u", __func__, *typep);
1685 /* sshbuf_dump(state->incoming_packet, stderr); */
1686 /* reset for next packet */
1687 state->packlen = 0;
1688 return r;
1689}
1690
1706int 1691int
1707ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p) 1692ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1708{ 1693{
@@ -1715,6 +1700,9 @@ ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1715 struct sshcomp *comp = NULL; 1700 struct sshcomp *comp = NULL;
1716 int r; 1701 int r;
1717 1702
1703 if (state->mux)
1704 return ssh_packet_read_poll2_mux(ssh, typep, seqnr_p);
1705
1718 *typep = SSH_MSG_NONE; 1706 *typep = SSH_MSG_NONE;
1719 1707
1720 if (state->packet_discard) 1708 if (state->packet_discard)
@@ -1733,7 +1721,7 @@ ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1733 aadlen = (mac && mac->enabled && mac->etm) || authlen ? 4 : 0; 1721 aadlen = (mac && mac->enabled && mac->etm) || authlen ? 4 : 0;
1734 1722
1735 if (aadlen && state->packlen == 0) { 1723 if (aadlen && state->packlen == 0) {
1736 if (cipher_get_length(&state->receive_context, 1724 if (cipher_get_length(state->receive_context,
1737 &state->packlen, state->p_read.seqnr, 1725 &state->packlen, state->p_read.seqnr,
1738 sshbuf_ptr(state->input), sshbuf_len(state->input)) != 0) 1726 sshbuf_ptr(state->input), sshbuf_len(state->input)) != 0)
1739 return 0; 1727 return 0;
@@ -1759,7 +1747,7 @@ ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1759 if ((r = sshbuf_reserve(state->incoming_packet, block_size, 1747 if ((r = sshbuf_reserve(state->incoming_packet, block_size,
1760 &cp)) != 0) 1748 &cp)) != 0)
1761 goto out; 1749 goto out;
1762 if ((r = cipher_crypt(&state->receive_context, 1750 if ((r = cipher_crypt(state->receive_context,
1763 state->p_send.seqnr, cp, sshbuf_ptr(state->input), 1751 state->p_send.seqnr, cp, sshbuf_ptr(state->input),
1764 block_size, 0, 0)) != 0) 1752 block_size, 0, 0)) != 0)
1765 goto out; 1753 goto out;
@@ -1827,7 +1815,7 @@ ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1827 if ((r = sshbuf_reserve(state->incoming_packet, aadlen + need, 1815 if ((r = sshbuf_reserve(state->incoming_packet, aadlen + need,
1828 &cp)) != 0) 1816 &cp)) != 0)
1829 goto out; 1817 goto out;
1830 if ((r = cipher_crypt(&state->receive_context, state->p_read.seqnr, cp, 1818 if ((r = cipher_crypt(state->receive_context, state->p_read.seqnr, cp,
1831 sshbuf_ptr(state->input), need, aadlen, authlen)) != 0) 1819 sshbuf_ptr(state->input), need, aadlen, authlen)) != 0)
1832 goto out; 1820 goto out;
1833 if ((r = sshbuf_consume(state->input, aadlen + need + authlen)) != 0) 1821 if ((r = sshbuf_consume(state->input, aadlen + need + authlen)) != 0)
@@ -1907,9 +1895,11 @@ ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1907 return r; 1895 return r;
1908 return SSH_ERR_PROTOCOL_ERROR; 1896 return SSH_ERR_PROTOCOL_ERROR;
1909 } 1897 }
1910 if (*typep == SSH2_MSG_NEWKEYS) 1898 if (state->hook_in != NULL &&
1911 r = ssh_set_newkeys(ssh, MODE_IN); 1899 (r = state->hook_in(ssh, state->incoming_packet, typep,
1912 else if (*typep == SSH2_MSG_USERAUTH_SUCCESS && !state->server_side) 1900 state->hook_in_ctx)) != 0)
1901 return r;
1902 if (*typep == SSH2_MSG_USERAUTH_SUCCESS && !state->server_side)
1913 r = ssh_packet_enable_delayed_compress(ssh); 1903 r = ssh_packet_enable_delayed_compress(ssh);
1914 else 1904 else
1915 r = 0; 1905 r = 0;
@@ -2452,21 +2442,14 @@ ssh_packet_get_output(struct ssh *ssh)
2452static int 2442static int
2453ssh_packet_set_postauth(struct ssh *ssh) 2443ssh_packet_set_postauth(struct ssh *ssh)
2454{ 2444{
2455 struct sshcomp *comp; 2445 int r;
2456 int r, mode;
2457 2446
2458 debug("%s: called", __func__); 2447 debug("%s: called", __func__);
2459 /* This was set in net child, but is not visible in user child */ 2448 /* This was set in net child, but is not visible in user child */
2460 ssh->state->after_authentication = 1; 2449 ssh->state->after_authentication = 1;
2461 ssh->state->rekeying = 0; 2450 ssh->state->rekeying = 0;
2462 for (mode = 0; mode < MODE_MAX; mode++) { 2451 if ((r = ssh_packet_enable_delayed_compress(ssh)) != 0)
2463 if (ssh->state->newkeys[mode] == NULL) 2452 return r;
2464 continue;
2465 comp = &ssh->state->newkeys[mode]->comp;
2466 if (comp && comp->enabled &&
2467 (r = ssh_packet_init_compression(ssh)) != 0)
2468 return r;
2469 }
2470 return 0; 2453 return 0;
2471} 2454}
2472 2455
@@ -2509,8 +2492,8 @@ newkeys_to_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2509 enc = &newkey->enc; 2492 enc = &newkey->enc;
2510 mac = &newkey->mac; 2493 mac = &newkey->mac;
2511 comp = &newkey->comp; 2494 comp = &newkey->comp;
2512 cc = (mode == MODE_OUT) ? &ssh->state->send_context : 2495 cc = (mode == MODE_OUT) ? ssh->state->send_context :
2513 &ssh->state->receive_context; 2496 ssh->state->receive_context;
2514 if ((r = cipher_get_keyiv(cc, enc->iv, enc->iv_len)) != 0) 2497 if ((r = cipher_get_keyiv(cc, enc->iv, enc->iv_len)) != 0)
2515 return r; 2498 return r;
2516 if ((b = sshbuf_new()) == NULL) 2499 if ((b = sshbuf_new()) == NULL)
@@ -2530,7 +2513,6 @@ newkeys_to_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2530 goto out; 2513 goto out;
2531 } 2514 }
2532 if ((r = sshbuf_put_u32(b, comp->type)) != 0 || 2515 if ((r = sshbuf_put_u32(b, comp->type)) != 0 ||
2533 (r = sshbuf_put_u32(b, comp->enabled)) != 0 ||
2534 (r = sshbuf_put_cstring(b, comp->name)) != 0) 2516 (r = sshbuf_put_cstring(b, comp->name)) != 0)
2535 goto out; 2517 goto out;
2536 r = sshbuf_put_stringb(m, b); 2518 r = sshbuf_put_stringb(m, b);
@@ -2549,18 +2531,18 @@ ssh_packet_get_state(struct ssh *ssh, struct sshbuf *m)
2549 int r, ssh1cipher; 2531 int r, ssh1cipher;
2550 2532
2551 if (!compat20) { 2533 if (!compat20) {
2552 ssh1cipher = cipher_get_number(state->receive_context.cipher); 2534 ssh1cipher = cipher_ctx_get_number(state->receive_context);
2553 slen = cipher_get_keyiv_len(&state->send_context); 2535 slen = cipher_get_keyiv_len(state->send_context);
2554 rlen = cipher_get_keyiv_len(&state->receive_context); 2536 rlen = cipher_get_keyiv_len(state->receive_context);
2555 if ((r = sshbuf_put_u32(m, state->remote_protocol_flags)) != 0 || 2537 if ((r = sshbuf_put_u32(m, state->remote_protocol_flags)) != 0 ||
2556 (r = sshbuf_put_u32(m, ssh1cipher)) != 0 || 2538 (r = sshbuf_put_u32(m, ssh1cipher)) != 0 ||
2557 (r = sshbuf_put_string(m, state->ssh1_key, state->ssh1_keylen)) != 0 || 2539 (r = sshbuf_put_string(m, state->ssh1_key, state->ssh1_keylen)) != 0 ||
2558 (r = sshbuf_put_u32(m, slen)) != 0 || 2540 (r = sshbuf_put_u32(m, slen)) != 0 ||
2559 (r = sshbuf_reserve(m, slen, &p)) != 0 || 2541 (r = sshbuf_reserve(m, slen, &p)) != 0 ||
2560 (r = cipher_get_keyiv(&state->send_context, p, slen)) != 0 || 2542 (r = cipher_get_keyiv(state->send_context, p, slen)) != 0 ||
2561 (r = sshbuf_put_u32(m, rlen)) != 0 || 2543 (r = sshbuf_put_u32(m, rlen)) != 0 ||
2562 (r = sshbuf_reserve(m, rlen, &p)) != 0 || 2544 (r = sshbuf_reserve(m, rlen, &p)) != 0 ||
2563 (r = cipher_get_keyiv(&state->receive_context, p, rlen)) != 0) 2545 (r = cipher_get_keyiv(state->receive_context, p, rlen)) != 0)
2564 return r; 2546 return r;
2565 } else { 2547 } else {
2566 if ((r = kex_to_blob(m, ssh->kex)) != 0 || 2548 if ((r = kex_to_blob(m, ssh->kex)) != 0 ||
@@ -2579,21 +2561,19 @@ ssh_packet_get_state(struct ssh *ssh, struct sshbuf *m)
2579 return r; 2561 return r;
2580 } 2562 }
2581 2563
2582 slen = cipher_get_keycontext(&state->send_context, NULL); 2564 slen = cipher_get_keycontext(state->send_context, NULL);
2583 rlen = cipher_get_keycontext(&state->receive_context, NULL); 2565 rlen = cipher_get_keycontext(state->receive_context, NULL);
2584 if ((r = sshbuf_put_u32(m, slen)) != 0 || 2566 if ((r = sshbuf_put_u32(m, slen)) != 0 ||
2585 (r = sshbuf_reserve(m, slen, &p)) != 0) 2567 (r = sshbuf_reserve(m, slen, &p)) != 0)
2586 return r; 2568 return r;
2587 if (cipher_get_keycontext(&state->send_context, p) != (int)slen) 2569 if (cipher_get_keycontext(state->send_context, p) != (int)slen)
2588 return SSH_ERR_INTERNAL_ERROR; 2570 return SSH_ERR_INTERNAL_ERROR;
2589 if ((r = sshbuf_put_u32(m, rlen)) != 0 || 2571 if ((r = sshbuf_put_u32(m, rlen)) != 0 ||
2590 (r = sshbuf_reserve(m, rlen, &p)) != 0) 2572 (r = sshbuf_reserve(m, rlen, &p)) != 0)
2591 return r; 2573 return r;
2592 if (cipher_get_keycontext(&state->receive_context, p) != (int)rlen) 2574 if (cipher_get_keycontext(state->receive_context, p) != (int)rlen)
2593 return SSH_ERR_INTERNAL_ERROR; 2575 return SSH_ERR_INTERNAL_ERROR;
2594 2576 if ((r = sshbuf_put_stringb(m, state->input)) != 0 ||
2595 if ((r = ssh_packet_get_compress_state(m, ssh)) != 0 ||
2596 (r = sshbuf_put_stringb(m, state->input)) != 0 ||
2597 (r = sshbuf_put_stringb(m, state->output)) != 0) 2577 (r = sshbuf_put_stringb(m, state->output)) != 0)
2598 return r; 2578 return r;
2599 2579
@@ -2647,7 +2627,6 @@ newkeys_from_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2647 mac->key_len = maclen; 2627 mac->key_len = maclen;
2648 } 2628 }
2649 if ((r = sshbuf_get_u32(b, &comp->type)) != 0 || 2629 if ((r = sshbuf_get_u32(b, &comp->type)) != 0 ||
2650 (r = sshbuf_get_u32(b, (u_int *)&comp->enabled)) != 0 ||
2651 (r = sshbuf_get_cstring(b, &comp->name, NULL)) != 0) 2630 (r = sshbuf_get_cstring(b, &comp->name, NULL)) != 0)
2652 goto out; 2631 goto out;
2653 if (enc->name == NULL || 2632 if (enc->name == NULL ||
@@ -2735,11 +2714,11 @@ ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)
2735 return SSH_ERR_KEY_UNKNOWN_CIPHER; 2714 return SSH_ERR_KEY_UNKNOWN_CIPHER;
2736 ssh_packet_set_encryption_key(ssh, ssh1key, ssh1keylen, 2715 ssh_packet_set_encryption_key(ssh, ssh1key, ssh1keylen,
2737 (int)ssh1cipher); 2716 (int)ssh1cipher);
2738 if (cipher_get_keyiv_len(&state->send_context) != (int)slen || 2717 if (cipher_get_keyiv_len(state->send_context) != (int)slen ||
2739 cipher_get_keyiv_len(&state->receive_context) != (int)rlen) 2718 cipher_get_keyiv_len(state->receive_context) != (int)rlen)
2740 return SSH_ERR_INVALID_FORMAT; 2719 return SSH_ERR_INVALID_FORMAT;
2741 if ((r = cipher_set_keyiv(&state->send_context, ivout)) != 0 || 2720 if ((r = cipher_set_keyiv(state->send_context, ivout)) != 0 ||
2742 (r = cipher_set_keyiv(&state->receive_context, ivin)) != 0) 2721 (r = cipher_set_keyiv(state->receive_context, ivin)) != 0)
2743 return r; 2722 return r;
2744 } else { 2723 } else {
2745 if ((r = kex_from_blob(m, &ssh->kex)) != 0 || 2724 if ((r = kex_from_blob(m, &ssh->kex)) != 0 ||
@@ -2769,14 +2748,13 @@ ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)
2769 if ((r = sshbuf_get_string_direct(m, &keyout, &slen)) != 0 || 2748 if ((r = sshbuf_get_string_direct(m, &keyout, &slen)) != 0 ||
2770 (r = sshbuf_get_string_direct(m, &keyin, &rlen)) != 0) 2749 (r = sshbuf_get_string_direct(m, &keyin, &rlen)) != 0)
2771 return r; 2750 return r;
2772 if (cipher_get_keycontext(&state->send_context, NULL) != (int)slen || 2751 if (cipher_get_keycontext(state->send_context, NULL) != (int)slen ||
2773 cipher_get_keycontext(&state->receive_context, NULL) != (int)rlen) 2752 cipher_get_keycontext(state->receive_context, NULL) != (int)rlen)
2774 return SSH_ERR_INVALID_FORMAT; 2753 return SSH_ERR_INVALID_FORMAT;
2775 cipher_set_keycontext(&state->send_context, keyout); 2754 cipher_set_keycontext(state->send_context, keyout);
2776 cipher_set_keycontext(&state->receive_context, keyin); 2755 cipher_set_keycontext(state->receive_context, keyin);
2777 2756
2778 if ((r = ssh_packet_set_compress_state(ssh, m)) != 0 || 2757 if ((r = ssh_packet_set_postauth(ssh)) != 0)
2779 (r = ssh_packet_set_postauth(ssh)) != 0)
2780 return r; 2758 return r;
2781 2759
2782 sshbuf_reset(state->input); 2760 sshbuf_reset(state->input);
@@ -2969,11 +2947,43 @@ sshpkt_start(struct ssh *ssh, u_char type)
2969 return sshbuf_put(ssh->state->outgoing_packet, buf, len); 2947 return sshbuf_put(ssh->state->outgoing_packet, buf, len);
2970} 2948}
2971 2949
2950static int
2951ssh_packet_send_mux(struct ssh *ssh)
2952{
2953 struct session_state *state = ssh->state;
2954 u_char type, *cp;
2955 size_t len;
2956 int r;
2957
2958 if (ssh->kex)
2959 return SSH_ERR_INTERNAL_ERROR;
2960 len = sshbuf_len(state->outgoing_packet);
2961 if (len < 6)
2962 return SSH_ERR_INTERNAL_ERROR;
2963 cp = sshbuf_mutable_ptr(state->outgoing_packet);
2964 type = cp[5];
2965 if (ssh_packet_log_type(type))
2966 debug3("%s: type %u", __func__, type);
2967 /* drop everything, but the connection protocol */
2968 if (type >= SSH2_MSG_CONNECTION_MIN &&
2969 type <= SSH2_MSG_CONNECTION_MAX) {
2970 POKE_U32(cp, len - 4);
2971 if ((r = sshbuf_putb(state->output,
2972 state->outgoing_packet)) != 0)
2973 return r;
2974 /* sshbuf_dump(state->output, stderr); */
2975 }
2976 sshbuf_reset(state->outgoing_packet);
2977 return 0;
2978}
2979
2972/* send it */ 2980/* send it */
2973 2981
2974int 2982int
2975sshpkt_send(struct ssh *ssh) 2983sshpkt_send(struct ssh *ssh)
2976{ 2984{
2985 if (ssh->state && ssh->state->mux)
2986 return ssh_packet_send_mux(ssh);
2977 if (compat20) 2987 if (compat20)
2978 return ssh_packet_send2(ssh); 2988 return ssh_packet_send2(ssh);
2979 else 2989 else
diff --git a/packet.h b/packet.h
index 464d83b1a..bfe7da615 100644
--- a/packet.h
+++ b/packet.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.h,v 1.71 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: packet.h,v 1.74 2016/10/11 21:47:45 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -78,6 +78,9 @@ struct ssh {
78 void *app_data; 78 void *app_data;
79}; 79};
80 80
81typedef int (ssh_packet_hook_fn)(struct ssh *, struct sshbuf *,
82 u_char *, void *);
83
81struct ssh *ssh_alloc_session_state(void); 84struct ssh *ssh_alloc_session_state(void);
82struct ssh *ssh_packet_set_connection(struct ssh *, int, int); 85struct ssh *ssh_packet_set_connection(struct ssh *, int, int);
83void ssh_packet_set_timeout(struct ssh *, int, int); 86void ssh_packet_set_timeout(struct ssh *, int, int);
@@ -88,6 +91,8 @@ int ssh_packet_get_connection_in(struct ssh *);
88int ssh_packet_get_connection_out(struct ssh *); 91int ssh_packet_get_connection_out(struct ssh *);
89void ssh_packet_close(struct ssh *); 92void ssh_packet_close(struct ssh *);
90void ssh_packet_set_encryption_key(struct ssh *, const u_char *, u_int, int); 93void ssh_packet_set_encryption_key(struct ssh *, const u_char *, u_int, int);
94void ssh_packet_set_input_hook(struct ssh *, ssh_packet_hook_fn *, void *);
95
91int ssh_packet_is_rekeying(struct ssh *); 96int ssh_packet_is_rekeying(struct ssh *);
92void ssh_packet_set_protocol_flags(struct ssh *, u_int); 97void ssh_packet_set_protocol_flags(struct ssh *, u_int);
93u_int ssh_packet_get_protocol_flags(struct ssh *); 98u_int ssh_packet_get_protocol_flags(struct ssh *);
@@ -97,6 +102,10 @@ void ssh_packet_set_interactive(struct ssh *, int, int, int);
97int ssh_packet_is_interactive(struct ssh *); 102int ssh_packet_is_interactive(struct ssh *);
98void ssh_packet_set_server(struct ssh *); 103void ssh_packet_set_server(struct ssh *);
99void ssh_packet_set_authenticated(struct ssh *); 104void ssh_packet_set_authenticated(struct ssh *);
105void ssh_packet_set_mux(struct ssh *);
106int ssh_packet_get_mux(struct ssh *);
107
108int ssh_packet_log_type(u_char);
100 109
101int ssh_packet_send1(struct ssh *); 110int ssh_packet_send1(struct ssh *);
102int ssh_packet_send2_wrapped(struct ssh *); 111int ssh_packet_send2_wrapped(struct ssh *);
@@ -120,11 +129,6 @@ void ssh_packet_send_debug(struct ssh *, const char *fmt, ...) __attribute__
120int ssh_set_newkeys(struct ssh *, int mode); 129int ssh_set_newkeys(struct ssh *, int mode);
121void ssh_packet_get_bytes(struct ssh *, u_int64_t *, u_int64_t *); 130void ssh_packet_get_bytes(struct ssh *, u_int64_t *, u_int64_t *);
122 131
123typedef void *(ssh_packet_comp_alloc_func)(void *, u_int, u_int);
124typedef void (ssh_packet_comp_free_func)(void *, void *);
125void ssh_packet_set_compress_hooks(struct ssh *, void *,
126 ssh_packet_comp_alloc_func *, ssh_packet_comp_free_func *);
127
128int ssh_packet_write_poll(struct ssh *); 132int ssh_packet_write_poll(struct ssh *);
129int ssh_packet_write_wait(struct ssh *); 133int ssh_packet_write_wait(struct ssh *);
130int ssh_packet_have_data_to_write(struct ssh *); 134int ssh_packet_have_data_to_write(struct ssh *);
diff --git a/platform-tracing.c b/platform-tracing.c
index 81020e7f7..4c80a282c 100644
--- a/platform-tracing.c
+++ b/platform-tracing.c
@@ -20,6 +20,9 @@
20#if defined(HAVE_SYS_PRCTL_H) 20#if defined(HAVE_SYS_PRCTL_H)
21#include <sys/prctl.h> /* For prctl() and PR_SET_DUMPABLE */ 21#include <sys/prctl.h> /* For prctl() and PR_SET_DUMPABLE */
22#endif 22#endif
23#ifdef HAVE_SYS_PTRACE_H
24#include <sys/ptrace.h>
25#endif
23#ifdef HAVE_PRIV_H 26#ifdef HAVE_PRIV_H
24#include <priv.h> /* For setpflags() and __PROC_PROTECT */ 27#include <priv.h> /* For setpflags() and __PROC_PROTECT */
25#endif 28#endif
@@ -40,4 +43,9 @@ platform_disable_tracing(int strict)
40 if (setpflags(__PROC_PROTECT, 1) != 0 && strict) 43 if (setpflags(__PROC_PROTECT, 1) != 0 && strict)
41 fatal("unable to make the process untraceable"); 44 fatal("unable to make the process untraceable");
42#endif 45#endif
46#ifdef PT_DENY_ATTACH
47 /* Mac OS X */
48 if (ptrace(PT_DENY_ATTACH, 0, 0, 0) == -1 && strict)
49 fatal("unable to set PT_DENY_ATTACH");
50#endif
43} 51}
diff --git a/platform.c b/platform.c
index 2ce4dbf81..380ee3a41 100644
--- a/platform.c
+++ b/platform.c
@@ -1,5 +1,3 @@
1/* $Id: platform.c,v 1.22 2014/07/18 04:11:26 djm Exp $ */
2
3/* 1/*
4 * Copyright (c) 2006 Darren Tucker. All rights reserved. 2 * Copyright (c) 2006 Darren Tucker. All rights reserved.
5 * 3 *
diff --git a/platform.h b/platform.h
index 5b7230428..60d72ffe7 100644
--- a/platform.h
+++ b/platform.h
@@ -1,5 +1,3 @@
1/* $Id: platform.h,v 1.9 2013/09/22 09:02:40 dtucker Exp $ */
2
3/* 1/*
4 * Copyright (c) 2006 Darren Tucker. All rights reserved. 2 * Copyright (c) 2006 Darren Tucker. All rights reserved.
5 * 3 *
diff --git a/readconf.c b/readconf.c
index 5cd51f3e6..d1091cbda 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.259 2016/07/22 03:35:11 djm Exp $ */ 1/* $OpenBSD: readconf.c,v 1.262 2016/10/25 04:08:13 jsg Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -327,7 +327,7 @@ add_local_forward(Options *options, const struct Forward *newfwd)
327 extern uid_t original_real_uid; 327 extern uid_t original_real_uid;
328 int i; 328 int i;
329 329
330 if (newfwd->listen_port < IPPORT_RESERVED && original_real_uid != 0 && 330 if (!bind_permitted(newfwd->listen_port, original_real_uid) &&
331 newfwd->listen_path == NULL) 331 newfwd->listen_path == NULL)
332 fatal("Privileged ports can only be forwarded by root."); 332 fatal("Privileged ports can only be forwarded by root.");
333 /* Don't add duplicates */ 333 /* Don't add duplicates */
@@ -873,7 +873,6 @@ process_config_line_depth(Options *options, struct passwd *pw, const char *host,
873 case oBadOption: 873 case oBadOption:
874 /* don't panic, but count bad options */ 874 /* don't panic, but count bad options */
875 return -1; 875 return -1;
876 /* NOTREACHED */
877 case oIgnoredUnknownOption: 876 case oIgnoredUnknownOption:
878 debug("%s line %d: Ignored unknown option \"%s\"", 877 debug("%s line %d: Ignored unknown option \"%s\"",
879 filename, linenum, keyword); 878 filename, linenum, keyword);
diff --git a/regress/Makefile b/regress/Makefile
index 08fd82dbf..c2dba4fdf 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.88 2016/06/03 04:10:41 dtucker Exp $ 1# $OpenBSD: Makefile,v 1.94 2016/12/16 03:51:19 dtucker Exp $
2 2
3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec 3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec
4tests: prep $(REGRESS_TARGETS) 4tests: prep $(REGRESS_TARGETS)
@@ -39,6 +39,7 @@ LTESTS= connect \
39 keyscan \ 39 keyscan \
40 keygen-change \ 40 keygen-change \
41 keygen-convert \ 41 keygen-convert \
42 keygen-moduli \
42 key-options \ 43 key-options \
43 scp \ 44 scp \
44 sftp \ 45 sftp \
@@ -77,7 +78,8 @@ LTESTS= connect \
77 hostkey-rotate \ 78 hostkey-rotate \
78 principals-command \ 79 principals-command \
79 cert-file \ 80 cert-file \
80 cfginclude 81 cfginclude \
82 allow-deny-users
81 83
82 84
83# dhgex \ 85# dhgex \
@@ -87,9 +89,10 @@ INTEROP_TESTS= putty-transfer putty-ciphers putty-kex conch-ciphers
87 89
88#LTESTS= cipher-speed 90#LTESTS= cipher-speed
89 91
90USER!= id -un 92USERNAME!= id -un
91CLEANFILES= *.core actual agent-key.* authorized_keys_${USER} \ 93CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \
92 authorized_keys_${USER}.* authorized_principals_${USER} \ 94 authorized_keys_${USERNAME}.* \
95 authorized_principals_${USERNAME} \
93 banner.in banner.out cert_host_key* cert_user_key* \ 96 banner.in banner.out cert_host_key* cert_user_key* \
94 copy.1 copy.2 data ed25519-agent ed25519-agent* \ 97 copy.1 copy.2 data ed25519-agent ed25519-agent* \
95 ed25519-agent.pub empty.in expect failed-regress.log \ 98 ed25519-agent.pub empty.in expect failed-regress.log \
@@ -111,10 +114,10 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USER} \
111 t6.out1 t6.out2 t7.out t7.out.pub t8.out t8.out.pub \ 114 t6.out1 t6.out2 t7.out t7.out.pub t8.out t8.out.pub \
112 t9.out t9.out.pub testdata user_*key* user_ca* user_key* 115 t9.out t9.out.pub testdata user_*key* user_ca* user_key*
113 116
114SUDO_CLEAN+= /var/run/testdata_${USER} /var/run/keycommand_${USER} 117SUDO_CLEAN+= /var/run/testdata_${USERNAME} /var/run/keycommand_${USERNAME}
115 118
116# Enable all malloc(3) randomisations and checks 119# Enable all malloc(3) randomisations and checks
117TEST_ENV= "MALLOC_OPTIONS=AFGJPRX" 120TEST_ENV= "MALLOC_OPTIONS=CFGJRSUX"
118 121
119TEST_SSH_SSHKEYGEN?=ssh-keygen 122TEST_SSH_SSHKEYGEN?=ssh-keygen
120 123
@@ -222,4 +225,8 @@ unit:
222 $$V ${.OBJDIR}/unittests/kex/test_kex ; \ 225 $$V ${.OBJDIR}/unittests/kex/test_kex ; \
223 $$V ${.OBJDIR}/unittests/hostkeys/test_hostkeys \ 226 $$V ${.OBJDIR}/unittests/hostkeys/test_hostkeys \
224 -d ${.CURDIR}/unittests/hostkeys/testdata ; \ 227 -d ${.CURDIR}/unittests/hostkeys/testdata ; \
228 $$V ${.OBJDIR}/unittests/match/test_match ; \
229 if test "x${TEST_SSH_UTF8}" = "xyes" ; then \
230 $$V ${.OBJDIR}/unittests/utf8/test_utf8 ; \
231 fi \
225 fi 232 fi
diff --git a/regress/agent-getpeereid.sh b/regress/agent-getpeereid.sh
index 24b71f458..91621a59c 100644
--- a/regress/agent-getpeereid.sh
+++ b/regress/agent-getpeereid.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: agent-getpeereid.sh,v 1.6 2016/05/03 14:41:04 djm Exp $ 1# $OpenBSD: agent-getpeereid.sh,v 1.7 2016/09/26 21:34:38 bluhm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="disallow agent attach from other uid" 4tid="disallow agent attach from other uid"
diff --git a/regress/allow-deny-users.sh b/regress/allow-deny-users.sh
new file mode 100644
index 000000000..32a269afa
--- /dev/null
+++ b/regress/allow-deny-users.sh
@@ -0,0 +1,40 @@
1# Public Domain
2# Zev Weiss, 2016
3
4tid="AllowUsers/DenyUsers"
5
6me="$LOGNAME"
7if [ "x$me" == "x" ]; then
8 me=`whoami`
9fi
10other="nobody"
11
12test_auth()
13{
14 deny="$1"
15 allow="$2"
16 should_succeed="$3"
17 failmsg="$4"
18
19 start_sshd -oDenyUsers="$deny" -oAllowUsers="$allow"
20
21 ${SSH} -F $OBJ/ssh_config "$me@somehost" true
22 status=$?
23
24 if (test $status -eq 0 && ! $should_succeed) \
25 || (test $status -ne 0 && $should_succeed); then
26 fail "$failmsg"
27 fi
28
29 stop_sshd
30}
31
32# DenyUsers AllowUsers should_succeed failure_message
33test_auth "" "" true "user in neither DenyUsers nor AllowUsers denied"
34test_auth "$other $me" "" false "user in DenyUsers allowed"
35test_auth "$me $other" "" false "user in DenyUsers allowed"
36test_auth "" "$other" false "user not in AllowUsers allowed"
37test_auth "" "$other $me" true "user in AllowUsers denied"
38test_auth "" "$me $other" true "user in AllowUsers denied"
39test_auth "$me $other" "$me $other" false "user in both DenyUsers and AllowUsers allowed"
40test_auth "$other $me" "$other $me" false "user in both DenyUsers and AllowUsers allowed"
diff --git a/regress/cert-file.sh b/regress/cert-file.sh
index bad923ad0..b184e7fea 100644
--- a/regress/cert-file.sh
+++ b/regress/cert-file.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cert-file.sh,v 1.2 2015/09/24 07:15:39 djm Exp $ 1# $OpenBSD: cert-file.sh,v 1.4 2016/12/16 02:48:55 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="ssh with certificates" 4tid="ssh with certificates"
diff --git a/regress/cert-userkey.sh b/regress/cert-userkey.sh
index 319746395..7005fd55e 100644
--- a/regress/cert-userkey.sh
+++ b/regress/cert-userkey.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cert-userkey.sh,v 1.16 2016/05/03 12:15:49 dtucker Exp $ 1# $OpenBSD: cert-userkey.sh,v 1.17 2016/11/30 03:01:33 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="certified user keys" 4tid="certified user keys"
@@ -354,6 +354,20 @@ test_one "principals key option principals" success "-n mekmitasdigoat" \
354test_one "principals key option no principals" failure "" \ 354test_one "principals key option no principals" failure "" \
355 authorized_keys ',principals="mekmitasdigoat"' 355 authorized_keys ',principals="mekmitasdigoat"'
356 356
357# command= options vs. force-command in key
358test_one "force-command match true" success \
359 "-n ${USER} -Oforce-command=true" \
360 authorized_keys ',command="true"'
361test_one "force-command match true" failure \
362 "-n ${USER} -Oforce-command=false" \
363 authorized_keys ',command="false"'
364test_one "force-command mismatch 1" failure \
365 "-n ${USER} -Oforce-command=false" \
366 authorized_keys ',command="true"'
367test_one "force-command mismatch 2" failure \
368 "-n ${USER} -Oforce-command=true" \
369 authorized_keys ',command="false"'
370
357# Wrong certificate 371# Wrong certificate
358cat $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy 372cat $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy
359for ktype in $PLAIN_TYPES ; do 373for ktype in $PLAIN_TYPES ; do
diff --git a/regress/connect-privsep.sh b/regress/connect-privsep.sh
index ea739f614..81cedc7e5 100644
--- a/regress/connect-privsep.sh
+++ b/regress/connect-privsep.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: connect-privsep.sh,v 1.6 2015/03/03 22:35:19 markus Exp $ 1# $OpenBSD: connect-privsep.sh,v 1.8 2016/11/01 13:43:27 tb Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="proxy connect with privsep" 4tid="proxy connect with privsep"
@@ -27,7 +27,7 @@ done
27# Because sandbox is sensitive to changes in libc, especially malloc, retest 27# Because sandbox is sensitive to changes in libc, especially malloc, retest
28# with every malloc.conf option (and none). 28# with every malloc.conf option (and none).
29if [ -z "TEST_MALLOC_OPTIONS" ]; then 29if [ -z "TEST_MALLOC_OPTIONS" ]; then
30 mopts="A F G H J P R S X < >" 30 mopts="C F G J R S U X < >"
31else 31else
32 mopts=`echo $TEST_MALLOC_OPTIONS | sed 's/./& /g'` 32 mopts=`echo $TEST_MALLOC_OPTIONS | sed 's/./& /g'`
33fi 33fi
diff --git a/regress/integrity.sh b/regress/integrity.sh
index bfadc6b48..39d310deb 100644
--- a/regress/integrity.sh
+++ b/regress/integrity.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: integrity.sh,v 1.18 2016/03/04 02:48:06 dtucker Exp $ 1# $OpenBSD: integrity.sh,v 1.19 2016/11/25 02:56:49 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="integrity" 4tid="integrity"
diff --git a/regress/keygen-moduli.sh b/regress/keygen-moduli.sh
new file mode 100644
index 000000000..d4e771383
--- /dev/null
+++ b/regress/keygen-moduli.sh
@@ -0,0 +1,18 @@
1# $OpenBSD: keygen-moduli.sh,v 1.2 2016/09/14 00:45:31 dtucker Exp $
2# Placed in the Public Domain.
3
4tid="keygen moduli"
5
6# Try "start at the beginning and stop after 1", "skip 1 then stop after 1"
7# and "skip 2 and run to the end with checkpointing". Since our test data
8# file has 3 lines, these should always result in 1 line of output.
9for i in "-J1" "-j1 -J1" "-j2 -K $OBJ/moduli.ckpt"; do
10 trace "keygen $i"
11 rm -f $OBJ/moduli.out $OBJ/moduli.ckpt
12 ${SSHKEYGEN} -T $OBJ/moduli.out -f ${SRC}/moduli.in $i 2>/dev/null || \
13 fail "keygen screen failed $i"
14 lines=`wc -l <$OBJ/moduli.out`
15 test "$lines" -eq "1" || fail "expected 1 line, got $lines"
16done
17
18rm -f $OBJ/moduli.out $OBJ/moduli.ckpt
diff --git a/regress/keys-command.sh b/regress/keys-command.sh
index af68cf15c..9c9ada7c7 100644
--- a/regress/keys-command.sh
+++ b/regress/keys-command.sh
@@ -3,7 +3,7 @@
3 3
4tid="authorized keys from command" 4tid="authorized keys from command"
5 5
6if test -z "$SUDO" ; then 6if [ -z "$SUDO" -a ! -w /var/run ]; then
7 echo "skipped (SUDO not set)" 7 echo "skipped (SUDO not set)"
8 echo "need SUDO to create file in /var/run, test won't work without" 8 echo "need SUDO to create file in /var/run, test won't work without"
9 exit 0 9 exit 0
diff --git a/regress/login-timeout.sh b/regress/login-timeout.sh
index eb76f554b..12207fd99 100644
--- a/regress/login-timeout.sh
+++ b/regress/login-timeout.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: login-timeout.sh,v 1.7 2014/03/13 20:44:49 djm Exp $ 1# $OpenBSD: login-timeout.sh,v 1.8 2016/12/16 01:06:27 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="connect after login grace timeout" 4tid="connect after login grace timeout"
@@ -17,7 +17,7 @@ if [ $? -ne 0 ]; then
17 fail "ssh connect after login grace timeout failed with privsep" 17 fail "ssh connect after login grace timeout failed with privsep"
18fi 18fi
19 19
20$SUDO kill `$SUDO cat $PIDFILE` 20stop_sshd
21 21
22trace "test login grace without privsep" 22trace "test login grace without privsep"
23echo "UsePrivilegeSeparation no" >> $OBJ/sshd_config 23echo "UsePrivilegeSeparation no" >> $OBJ/sshd_config
diff --git a/regress/misc/kexfuzz/README b/regress/misc/kexfuzz/README
index 8b215b5bf..abd7b50ee 100644
--- a/regress/misc/kexfuzz/README
+++ b/regress/misc/kexfuzz/README
@@ -26,3 +26,7 @@ A comprehensive KEX fuzz run would fuzz every packet in both
26directions for each key exchange type and every hostkey type. 26directions for each key exchange type and every hostkey type.
27This will take some time. 27This will take some time.
28 28
29Limitations: kexfuzz can't change the ordering of packets at
30present. It is limited to replacing individual packets with
31fuzzed variants with the same type. It really should allow
32insertion, deletion on replacement of packets too.
diff --git a/regress/misc/kexfuzz/kexfuzz.c b/regress/misc/kexfuzz/kexfuzz.c
index 2894d3a1e..67058027f 100644
--- a/regress/misc/kexfuzz/kexfuzz.c
+++ b/regress/misc/kexfuzz/kexfuzz.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexfuzz.c,v 1.1 2016/03/04 02:30:37 djm Exp $ */ 1/* $OpenBSD: kexfuzz.c,v 1.3 2016/10/11 21:49:54 djm Exp $ */
2/* 2/*
3 * Fuzz harness for KEX code 3 * Fuzz harness for KEX code
4 * 4 *
@@ -27,6 +27,7 @@
27#include "packet.h" 27#include "packet.h"
28#include "myproposal.h" 28#include "myproposal.h"
29#include "authfile.h" 29#include "authfile.h"
30#include "log.h"
30 31
31struct ssh *active_state = NULL; /* XXX - needed for linking */ 32struct ssh *active_state = NULL; /* XXX - needed for linking */
32 33
@@ -35,61 +36,93 @@ static int do_debug = 0;
35 36
36enum direction { S2C, C2S }; 37enum direction { S2C, C2S };
37 38
39struct hook_ctx {
40 struct ssh *client, *server, *server2;
41 int *c2s, *s2c;
42 int trigger_direction, packet_index;
43 const char *dump_path;
44 struct sshbuf *replace_data;
45};
46
38static int 47static int
39do_send_and_receive(struct ssh *from, struct ssh *to, int mydirection, 48packet_hook(struct ssh *ssh, struct sshbuf *packet, u_char *typep, void *_ctx)
40 int *packet_count, int trigger_direction, int packet_index, 49{
41 const char *dump_path, struct sshbuf *replace_data) 50 struct hook_ctx *ctx = (struct hook_ctx *)_ctx;
51 int mydirection = ssh == ctx->client ? S2C : C2S;
52 int *packet_count = mydirection == S2C ? ctx->s2c : ctx->c2s;
53 FILE *dumpfile;
54 int r;
55
56 if (do_debug) {
57 printf("%s packet %d type %u:\n",
58 mydirection == S2C ? "s2c" : "c2s",
59 *packet_count, *typep);
60 sshbuf_dump(packet, stdout);
61 }
62 if (mydirection == ctx->trigger_direction &&
63 ctx->packet_index == *packet_count) {
64 if (ctx->replace_data != NULL) {
65 sshbuf_reset(packet);
66 /* Type is first byte of packet */
67 if ((r = sshbuf_get_u8(ctx->replace_data,
68 typep)) != 0 ||
69 (r = sshbuf_putb(packet, ctx->replace_data)) != 0)
70 return r;
71 if (do_debug) {
72 printf("***** replaced packet type %u\n",
73 *typep);
74 sshbuf_dump(packet, stdout);
75 }
76 } else if (ctx->dump_path != NULL) {
77 if ((dumpfile = fopen(ctx->dump_path, "w+")) == NULL)
78 err(1, "fopen %s", ctx->dump_path);
79 /* Write { type, packet } */
80 if (fwrite(typep, 1, 1, dumpfile) != 1)
81 err(1, "fwrite type %s", ctx->dump_path);
82 if (sshbuf_len(packet) != 0 &&
83 fwrite(sshbuf_ptr(packet), sshbuf_len(packet),
84 1, dumpfile) != 1)
85 err(1, "fwrite body %s", ctx->dump_path);
86 if (do_debug) {
87 printf("***** dumped packet type %u len %zu\n",
88 *typep, sshbuf_len(packet));
89 }
90 fclose(dumpfile);
91 /* No point in continuing */
92 exit(0);
93 }
94 }
95 (*packet_count)++;
96 return 0;
97}
98
99static int
100do_send_and_receive(struct ssh *from, struct ssh *to)
42{ 101{
43 u_char type; 102 u_char type;
44 size_t len, olen; 103 size_t len;
45 const u_char *buf; 104 const u_char *buf;
46 int r; 105 int r;
47 FILE *dumpfile;
48 106
49 for (;;) { 107 for (;;) {
50 if ((r = ssh_packet_next(from, &type)) != 0) { 108 if ((r = ssh_packet_next(from, &type)) != 0) {
51 fprintf(stderr, "ssh_packet_next: %s\n", ssh_err(r)); 109 fprintf(stderr, "ssh_packet_next: %s\n", ssh_err(r));
52 return r; 110 return r;
53 } 111 }
112
54 if (type != 0) 113 if (type != 0)
55 return 0; 114 return 0;
56 buf = ssh_output_ptr(from, &len); 115 buf = ssh_output_ptr(from, &len);
57 olen = len;
58 if (do_debug) {
59 printf("%s packet %d type %u len %zu:\n",
60 mydirection == S2C ? "s2c" : "c2s",
61 *packet_count, type, len);
62 sshbuf_dump_data(buf, len, stdout);
63 }
64 if (mydirection == trigger_direction &&
65 packet_index == *packet_count) {
66 if (replace_data != NULL) {
67 buf = sshbuf_ptr(replace_data);
68 len = sshbuf_len(replace_data);
69 if (do_debug) {
70 printf("***** replaced packet "
71 "len %zu\n", len);
72 sshbuf_dump_data(buf, len, stdout);
73 }
74 } else if (dump_path != NULL) {
75 if ((dumpfile = fopen(dump_path, "w+")) == NULL)
76 err(1, "fopen %s", dump_path);
77 if (len != 0 &&
78 fwrite(buf, len, 1, dumpfile) != 1)
79 err(1, "fwrite %s", dump_path);
80 if (do_debug)
81 printf("***** dumped packet "
82 "len %zu\n", len);
83 fclose(dumpfile);
84 exit(0);
85 }
86 }
87 (*packet_count)++;
88 if (len == 0) 116 if (len == 0)
89 return 0; 117 return 0;
90 if ((r = ssh_input_append(to, buf, len)) != 0 || 118 if ((r = ssh_input_append(to, buf, len)) != 0) {
91 (r = ssh_output_consume(from, olen)) != 0) 119 debug("ssh_input_append: %s", ssh_err(r));
120 return r;
121 }
122 if ((r = ssh_output_consume(from, len)) != 0) {
123 debug("ssh_output_consume: %s", ssh_err(r));
92 return r; 124 return r;
125 }
93 } 126 }
94} 127}
95 128
@@ -141,19 +174,19 @@ const char *in_test = NULL;
141 174
142 175
143static void 176static void
144run_kex(struct ssh *client, struct ssh *server, int *s2c, int *c2s, 177run_kex(struct ssh *client, struct ssh *server)
145 int direction, int packet_index,
146 const char *dump_path, struct sshbuf *replace_data)
147{ 178{
148 int r = 0; 179 int r = 0;
149 180
150 while (!server->kex->done || !client->kex->done) { 181 while (!server->kex->done || !client->kex->done) {
151 if ((r = do_send_and_receive(server, client, S2C, s2c, 182 if ((r = do_send_and_receive(server, client)) != 0) {
152 direction, packet_index, dump_path, replace_data))) 183 debug("do_send_and_receive S2C: %s", ssh_err(r));
153 break; 184 break;
154 if ((r = do_send_and_receive(client, server, C2S, c2s, 185 }
155 direction, packet_index, dump_path, replace_data))) 186 if ((r = do_send_and_receive(client, server)) != 0) {
187 debug("do_send_and_receive C2S: %s", ssh_err(r));
156 break; 188 break;
189 }
157 } 190 }
158 if (do_debug) 191 if (do_debug)
159 printf("done: %s\n", ssh_err(r)); 192 printf("done: %s\n", ssh_err(r));
@@ -173,6 +206,7 @@ do_kex_with_key(const char *kex, struct sshkey *prvkey, int *c2s, int *s2c,
173 struct kex_params kex_params; 206 struct kex_params kex_params;
174 char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; 207 char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
175 char *keyname = NULL; 208 char *keyname = NULL;
209 struct hook_ctx hook_ctx;
176 210
177 TEST_START("sshkey_from_private"); 211 TEST_START("sshkey_from_private");
178 ASSERT_INT_EQ(sshkey_from_private(prvkey, &pubkey), 0); 212 ASSERT_INT_EQ(sshkey_from_private(prvkey, &pubkey), 0);
@@ -187,30 +221,42 @@ do_kex_with_key(const char *kex, struct sshkey *prvkey, int *c2s, int *s2c,
187 kex_params.proposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = keyname; 221 kex_params.proposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = keyname;
188 ASSERT_INT_EQ(ssh_init(&client, 0, &kex_params), 0); 222 ASSERT_INT_EQ(ssh_init(&client, 0, &kex_params), 0);
189 ASSERT_INT_EQ(ssh_init(&server, 1, &kex_params), 0); 223 ASSERT_INT_EQ(ssh_init(&server, 1, &kex_params), 0);
224 ASSERT_INT_EQ(ssh_init(&server2, 1, NULL), 0);
190 ASSERT_PTR_NE(client, NULL); 225 ASSERT_PTR_NE(client, NULL);
191 ASSERT_PTR_NE(server, NULL); 226 ASSERT_PTR_NE(server, NULL);
227 ASSERT_PTR_NE(server2, NULL);
192 TEST_DONE(); 228 TEST_DONE();
193 229
230 hook_ctx.c2s = c2s;
231 hook_ctx.s2c = s2c;
232 hook_ctx.trigger_direction = direction;
233 hook_ctx.packet_index = packet_index;
234 hook_ctx.dump_path = dump_path;
235 hook_ctx.replace_data = replace_data;
236 hook_ctx.client = client;
237 hook_ctx.server = server;
238 hook_ctx.server2 = server2;
239 ssh_packet_set_input_hook(client, packet_hook, &hook_ctx);
240 ssh_packet_set_input_hook(server, packet_hook, &hook_ctx);
241 ssh_packet_set_input_hook(server2, packet_hook, &hook_ctx);
242
194 TEST_START("ssh_add_hostkey"); 243 TEST_START("ssh_add_hostkey");
195 ASSERT_INT_EQ(ssh_add_hostkey(server, prvkey), 0); 244 ASSERT_INT_EQ(ssh_add_hostkey(server, prvkey), 0);
196 ASSERT_INT_EQ(ssh_add_hostkey(client, pubkey), 0); 245 ASSERT_INT_EQ(ssh_add_hostkey(client, pubkey), 0);
197 TEST_DONE(); 246 TEST_DONE();
198 247
199 TEST_START("kex"); 248 TEST_START("kex");
200 run_kex(client, server, s2c, c2s, direction, packet_index, 249 run_kex(client, server);
201 dump_path, replace_data);
202 TEST_DONE(); 250 TEST_DONE();
203 251
204 TEST_START("rekeying client"); 252 TEST_START("rekeying client");
205 ASSERT_INT_EQ(kex_send_kexinit(client), 0); 253 ASSERT_INT_EQ(kex_send_kexinit(client), 0);
206 run_kex(client, server, s2c, c2s, direction, packet_index, 254 run_kex(client, server);
207 dump_path, replace_data);
208 TEST_DONE(); 255 TEST_DONE();
209 256
210 TEST_START("rekeying server"); 257 TEST_START("rekeying server");
211 ASSERT_INT_EQ(kex_send_kexinit(server), 0); 258 ASSERT_INT_EQ(kex_send_kexinit(server), 0);
212 run_kex(client, server, s2c, c2s, direction, packet_index, 259 run_kex(client, server);
213 dump_path, replace_data);
214 TEST_DONE(); 260 TEST_DONE();
215 261
216 TEST_START("ssh_packet_get_state"); 262 TEST_START("ssh_packet_get_state");
@@ -221,9 +267,6 @@ do_kex_with_key(const char *kex, struct sshkey *prvkey, int *c2s, int *s2c,
221 TEST_DONE(); 267 TEST_DONE();
222 268
223 TEST_START("ssh_packet_set_state"); 269 TEST_START("ssh_packet_set_state");
224 server2 = NULL;
225 ASSERT_INT_EQ(ssh_init(&server2, 1, NULL), 0);
226 ASSERT_PTR_NE(server2, NULL);
227 ASSERT_INT_EQ(ssh_add_hostkey(server2, prvkey), 0); 270 ASSERT_INT_EQ(ssh_add_hostkey(server2, prvkey), 0);
228 kex_free(server2->kex); /* XXX or should ssh_packet_set_state()? */ 271 kex_free(server2->kex); /* XXX or should ssh_packet_set_state()? */
229 ASSERT_INT_EQ(ssh_packet_set_state(server2, state), 0); 272 ASSERT_INT_EQ(ssh_packet_set_state(server2, state), 0);
@@ -231,12 +274,17 @@ do_kex_with_key(const char *kex, struct sshkey *prvkey, int *c2s, int *s2c,
231 sshbuf_free(state); 274 sshbuf_free(state);
232 ASSERT_PTR_NE(server2->kex, NULL); 275 ASSERT_PTR_NE(server2->kex, NULL);
233 /* XXX we need to set the callbacks */ 276 /* XXX we need to set the callbacks */
277#ifdef WITH_OPENSSL
234 server2->kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; 278 server2->kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server;
235 server2->kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; 279 server2->kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server;
280 server2->kex->kex[KEX_DH_GRP14_SHA256] = kexdh_server;
281 server2->kex->kex[KEX_DH_GRP16_SHA512] = kexdh_server;
282 server2->kex->kex[KEX_DH_GRP18_SHA512] = kexdh_server;
236 server2->kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; 283 server2->kex->kex[KEX_DH_GEX_SHA1] = kexgex_server;
237 server2->kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; 284 server2->kex->kex[KEX_DH_GEX_SHA256] = kexgex_server;
238#ifdef OPENSSL_HAS_ECC 285# ifdef OPENSSL_HAS_ECC
239 server2->kex->kex[KEX_ECDH_SHA2] = kexecdh_server; 286 server2->kex->kex[KEX_ECDH_SHA2] = kexecdh_server;
287# endif
240#endif 288#endif
241 server2->kex->kex[KEX_C25519_SHA256] = kexc25519_server; 289 server2->kex->kex[KEX_C25519_SHA256] = kexc25519_server;
242 server2->kex->load_host_public_key = server->kex->load_host_public_key; 290 server2->kex->load_host_public_key = server->kex->load_host_public_key;
@@ -246,11 +294,9 @@ do_kex_with_key(const char *kex, struct sshkey *prvkey, int *c2s, int *s2c,
246 294
247 TEST_START("rekeying server2"); 295 TEST_START("rekeying server2");
248 ASSERT_INT_EQ(kex_send_kexinit(server2), 0); 296 ASSERT_INT_EQ(kex_send_kexinit(server2), 0);
249 run_kex(client, server2, s2c, c2s, direction, packet_index, 297 run_kex(client, server2);
250 dump_path, replace_data);
251 ASSERT_INT_EQ(kex_send_kexinit(client), 0); 298 ASSERT_INT_EQ(kex_send_kexinit(client), 0);
252 run_kex(client, server2, s2c, c2s, direction, packet_index, 299 run_kex(client, server2);
253 dump_path, replace_data);
254 TEST_DONE(); 300 TEST_DONE();
255 301
256 TEST_START("cleanup"); 302 TEST_START("cleanup");
@@ -352,6 +398,9 @@ main(int argc, char **argv)
352 argc -= optind; 398 argc -= optind;
353 argv += optind; 399 argv += optind;
354 400
401 log_init(argv[0], do_debug ? SYSLOG_LEVEL_DEBUG3 : SYSLOG_LEVEL_INFO,
402 SYSLOG_FACILITY_USER, 1);
403
355 /* Must select a single mode */ 404 /* Must select a single mode */
356 if ((count_flag + dump_flag + replace_flag) != 1) 405 if ((count_flag + dump_flag + replace_flag) != 1)
357 badusage("Must select one mode: -c, -d or -r"); 406 badusage("Must select one mode: -c, -d or -r");
diff --git a/regress/moduli.in b/regress/moduli.in
new file mode 100644
index 000000000..e69c902a2
--- /dev/null
+++ b/regress/moduli.in
@@ -0,0 +1,3 @@
120160301052556 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D19F4647
220160301052601 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1A5C13B
320160301052612 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1B7A3EF
diff --git a/regress/principals-command.sh b/regress/principals-command.sh
index c0be7e747..9b38eb105 100644
--- a/regress/principals-command.sh
+++ b/regress/principals-command.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: principals-command.sh,v 1.1 2015/05/21 06:44:25 djm Exp $ 1# $OpenBSD: principals-command.sh,v 1.3 2016/09/26 21:34:38 bluhm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="authorized principals command" 4tid="authorized principals command"
@@ -6,41 +6,56 @@ tid="authorized principals command"
6rm -f $OBJ/user_ca_key* $OBJ/cert_user_key* 6rm -f $OBJ/user_ca_key* $OBJ/cert_user_key*
7cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak 7cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
8 8
9if test -z "$SUDO" ; then 9if [ -z "$SUDO" -a ! -w /var/run ]; then
10 echo "skipped (SUDO not set)" 10 echo "skipped (SUDO not set)"
11 echo "need SUDO to create file in /var/run, test won't work without" 11 echo "need SUDO to create file in /var/run, test won't work without"
12 exit 0 12 exit 0
13fi 13fi
14 14
15SERIAL=$$
16
17# Create a CA key and a user certificate.
18${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/user_ca_key || \
19 fatal "ssh-keygen of user_ca_key failed"
20${SSHKEYGEN} -q -N '' -t rsa -f $OBJ/cert_user_key || \
21 fatal "ssh-keygen of cert_user_key failed"
22${SSHKEYGEN} -q -s $OBJ/user_ca_key -I "Joanne User" \
23 -z $$ -n ${USER},mekmitasdigoat $OBJ/cert_user_key || \
24 fatal "couldn't sign cert_user_key"
25
26CERT_BODY=`cat $OBJ/cert_user_key-cert.pub | awk '{ print $2 }'`
27CA_BODY=`cat $OBJ/user_ca_key.pub | awk '{ print $2 }'`
28CERT_FP=`${SSHKEYGEN} -lf $OBJ/cert_user_key-cert.pub | awk '{ print $2 }'`
29CA_FP=`${SSHKEYGEN} -lf $OBJ/user_ca_key.pub | awk '{ print $2 }'`
30
15# Establish a AuthorizedPrincipalsCommand in /var/run where it will have 31# Establish a AuthorizedPrincipalsCommand in /var/run where it will have
16# acceptable directory permissions. 32# acceptable directory permissions.
17PRINCIPALS_CMD="/var/run/principals_command_${LOGNAME}" 33PRINCIPALS_COMMAND="/var/run/principals_command_${LOGNAME}"
18cat << _EOF | $SUDO sh -c "cat > '$PRINCIPALS_CMD'" 34cat << _EOF | $SUDO sh -c "cat > '$PRINCIPALS_COMMAND'"
19#!/bin/sh 35#!/bin/sh
20test "x\$1" != "x${LOGNAME}" && exit 1 36test "x\$1" != "x${LOGNAME}" && exit 1
37test "x\$2" != "xssh-rsa-cert-v01@openssh.com" && exit 1
38test "x\$3" != "xssh-ed25519" && exit 1
39test "x\$4" != "xJoanne User" && exit 1
40test "x\$5" != "x${SERIAL}" && exit 1
41test "x\$6" != "x${CA_FP}" && exit 1
42test "x\$7" != "x${CERT_FP}" && exit 1
43test "x\$8" != "x${CERT_BODY}" && exit 1
44test "x\$9" != "x${CA_BODY}" && exit 1
21test -f "$OBJ/authorized_principals_${LOGNAME}" && 45test -f "$OBJ/authorized_principals_${LOGNAME}" &&
22 exec cat "$OBJ/authorized_principals_${LOGNAME}" 46 exec cat "$OBJ/authorized_principals_${LOGNAME}"
23_EOF 47_EOF
24test $? -eq 0 || fatal "couldn't prepare principals command" 48test $? -eq 0 || fatal "couldn't prepare principals command"
25$SUDO chmod 0755 "$PRINCIPALS_CMD" 49$SUDO chmod 0755 "$PRINCIPALS_COMMAND"
26 50
27if ! $OBJ/check-perm -m keys-command $PRINCIPALS_CMD ; then 51if ! $OBJ/check-perm -m keys-command $PRINCIPALS_COMMAND ; then
28 echo "skipping: $PRINCIPALS_CMD is unsuitable as " \ 52 echo "skipping: $PRINCIPALS_COMMAND is unsuitable as " \
29 "AuthorizedPrincipalsCommand" 53 "AuthorizedPrincipalsCommand"
30 $SUDO rm -f $PRINCIPALS_CMD 54 $SUDO rm -f $PRINCIPALS_COMMAND
31 exit 0 55 exit 0
32fi 56fi
33 57
34# Create a CA key and a user certificate. 58if [ -x $PRINCIPALS_COMMAND ]; then
35${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/user_ca_key || \
36 fatal "ssh-keygen of user_ca_key failed"
37${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/cert_user_key || \
38 fatal "ssh-keygen of cert_user_key failed"
39${SSHKEYGEN} -q -s $OBJ/user_ca_key -I "regress user key for $USER" \
40 -z $$ -n ${USER},mekmitasdigoat $OBJ/cert_user_key || \
41 fatal "couldn't sign cert_user_key"
42
43if [ -x $PRINCIPALS_CMD ]; then
44 # Test explicitly-specified principals 59 # Test explicitly-specified principals
45 for privsep in yes no ; do 60 for privsep in yes no ; do
46 _prefix="privsep $privsep" 61 _prefix="privsep $privsep"
@@ -51,7 +66,8 @@ if [ -x $PRINCIPALS_CMD ]; then
51 cat $OBJ/sshd_proxy_bak 66 cat $OBJ/sshd_proxy_bak
52 echo "UsePrivilegeSeparation $privsep" 67 echo "UsePrivilegeSeparation $privsep"
53 echo "AuthorizedKeysFile none" 68 echo "AuthorizedKeysFile none"
54 echo "AuthorizedPrincipalsCommand $PRINCIPALS_CMD %u" 69 echo "AuthorizedPrincipalsCommand $PRINCIPALS_COMMAND" \
70 "%u %t %T %i %s %F %f %k %K"
55 echo "AuthorizedPrincipalsCommandUser ${LOGNAME}" 71 echo "AuthorizedPrincipalsCommandUser ${LOGNAME}"
56 echo "TrustedUserCAKeys $OBJ/user_ca_key.pub" 72 echo "TrustedUserCAKeys $OBJ/user_ca_key.pub"
57 ) > $OBJ/sshd_proxy 73 ) > $OBJ/sshd_proxy
diff --git a/regress/putty-ciphers.sh b/regress/putty-ciphers.sh
index 3775b1d80..9adba674e 100644
--- a/regress/putty-ciphers.sh
+++ b/regress/putty-ciphers.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: putty-ciphers.sh,v 1.4 2013/05/17 04:29:14 dtucker Exp $ 1# $OpenBSD: putty-ciphers.sh,v 1.5 2016/11/25 03:02:01 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="putty ciphers" 4tid="putty ciphers"
diff --git a/regress/putty-kex.sh b/regress/putty-kex.sh
index 6ae229005..9d3c6a9f0 100644
--- a/regress/putty-kex.sh
+++ b/regress/putty-kex.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: putty-kex.sh,v 1.3 2013/05/17 04:29:14 dtucker Exp $ 1# $OpenBSD: putty-kex.sh,v 1.4 2016/11/25 03:02:01 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="putty KEX" 4tid="putty KEX"
diff --git a/regress/putty-transfer.sh b/regress/putty-transfer.sh
index cb1da94fa..8eb6ae0c0 100644
--- a/regress/putty-transfer.sh
+++ b/regress/putty-transfer.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: putty-transfer.sh,v 1.3 2013/05/17 04:29:14 dtucker Exp $ 1# $OpenBSD: putty-transfer.sh,v 1.4 2016/11/25 03:02:01 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="putty transfer data" 4tid="putty transfer data"
diff --git a/regress/reexec.sh b/regress/reexec.sh
index 5c0a7b46f..72957d4cd 100644
--- a/regress/reexec.sh
+++ b/regress/reexec.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: reexec.sh,v 1.8 2015/03/03 22:35:19 markus Exp $ 1# $OpenBSD: reexec.sh,v 1.10 2016/12/16 01:06:27 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="reexec tests" 4tid="reexec tests"
@@ -39,8 +39,7 @@ echo "InvalidXXX=no" >> $OBJ/sshd_config
39 39
40copy_tests 40copy_tests
41 41
42$SUDO kill `$SUDO cat $PIDFILE` 42stop_sshd
43rm -f $PIDFILE
44 43
45cp $OBJ/sshd_config.orig $OBJ/sshd_config 44cp $OBJ/sshd_config.orig $OBJ/sshd_config
46 45
@@ -54,8 +53,7 @@ rm -f $SSHD_COPY
54 53
55copy_tests 54copy_tests
56 55
57$SUDO kill `$SUDO cat $PIDFILE` 56stop_sshd
58rm -f $PIDFILE
59 57
60verbose "test reexec fallback without privsep" 58verbose "test reexec fallback without privsep"
61 59
@@ -67,7 +65,6 @@ rm -f $SSHD_COPY
67 65
68copy_tests 66copy_tests
69 67
70$SUDO kill `$SUDO cat $PIDFILE` 68stop_sshd
71rm -f $PIDFILE
72 69
73fi 70fi
diff --git a/regress/sftp-chroot.sh b/regress/sftp-chroot.sh
index 9c26eb680..4ea2fce85 100644
--- a/regress/sftp-chroot.sh
+++ b/regress/sftp-chroot.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: sftp-chroot.sh,v 1.4 2014/01/20 00:00:30 dtucker Exp $ 1# $OpenBSD: sftp-chroot.sh,v 1.5 2016/09/26 21:34:38 bluhm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="sftp in chroot" 4tid="sftp in chroot"
@@ -7,7 +7,7 @@ CHROOT=/var/run
7FILENAME=testdata_${USER} 7FILENAME=testdata_${USER}
8PRIVDATA=${CHROOT}/${FILENAME} 8PRIVDATA=${CHROOT}/${FILENAME}
9 9
10if [ -z "$SUDO" ]; then 10if [ -z "$SUDO" -a ! -w /var/run ]; then
11 echo "skipped: need SUDO to create file in /var/run, test won't work without" 11 echo "skipped: need SUDO to create file in /var/run, test won't work without"
12 exit 0 12 exit 0
13fi 13fi
diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index 74b365cac..bfa48803b 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: test-exec.sh,v 1.53 2016/04/15 02:57:10 djm Exp $ 1# $OpenBSD: test-exec.sh,v 1.58 2016/12/16 01:06:27 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4#SUDO=sudo 4#SUDO=sudo
@@ -130,7 +130,8 @@ if [ "x$TEST_SSH_CONCH" != "x" ]; then
130 esac 130 esac
131fi 131fi
132 132
133SSH_PROTOCOLS=`$SSH -Q protocol-version` 133SSH_PROTOCOLS=2
134#SSH_PROTOCOLS=`$SSH -Q protocol-version`
134if [ "x$TEST_SSH_PROTOCOLS" != "x" ]; then 135if [ "x$TEST_SSH_PROTOCOLS" != "x" ]; then
135 SSH_PROTOCOLS="${TEST_SSH_PROTOCOLS}" 136 SSH_PROTOCOLS="${TEST_SSH_PROTOCOLS}"
136fi 137fi
@@ -292,16 +293,8 @@ md5 () {
292} 293}
293# End of portable specific functions 294# End of portable specific functions
294 295
295# helper 296stop_sshd ()
296cleanup ()
297{ 297{
298 if [ "x$SSH_PID" != "x" ]; then
299 if [ $SSH_PID -lt 2 ]; then
300 echo bad pid for ssh: $SSH_PID
301 else
302 kill $SSH_PID
303 fi
304 fi
305 if [ -f $PIDFILE ]; then 298 if [ -f $PIDFILE ]; then
306 pid=`$SUDO cat $PIDFILE` 299 pid=`$SUDO cat $PIDFILE`
307 if [ "X$pid" = "X" ]; then 300 if [ "X$pid" = "X" ]; then
@@ -324,6 +317,19 @@ cleanup ()
324 fi 317 fi
325} 318}
326 319
320# helper
321cleanup ()
322{
323 if [ "x$SSH_PID" != "x" ]; then
324 if [ $SSH_PID -lt 2 ]; then
325 echo bad pid for ssh: $SSH_PID
326 else
327 kill $SSH_PID
328 fi
329 fi
330 stop_sshd
331}
332
327start_debug_log () 333start_debug_log ()
328{ 334{
329 echo "trace: $@" >$TEST_REGRESS_LOGFILE 335 echo "trace: $@" >$TEST_REGRESS_LOGFILE
@@ -400,7 +406,6 @@ fi
400cat << EOF > $OBJ/sshd_config 406cat << EOF > $OBJ/sshd_config
401 StrictModes no 407 StrictModes no
402 Port $PORT 408 Port $PORT
403 Protocol $PROTO
404 AddressFamily inet 409 AddressFamily inet
405 ListenAddress 127.0.0.1 410 ListenAddress 127.0.0.1
406 #ListenAddress ::1 411 #ListenAddress ::1
@@ -433,7 +438,6 @@ echo 'StrictModes no' >> $OBJ/sshd_proxy
433# create client config 438# create client config
434cat << EOF > $OBJ/ssh_config 439cat << EOF > $OBJ/ssh_config
435Host * 440Host *
436 Protocol $PROTO
437 Hostname 127.0.0.1 441 Hostname 127.0.0.1
438 HostKeyAlias localhost-with-alias 442 HostKeyAlias localhost-with-alias
439 Port $PORT 443 Port $PORT
diff --git a/regress/unittests/Makefile b/regress/unittests/Makefile
index 0a95d4b20..e70b16644 100644
--- a/regress/unittests/Makefile
+++ b/regress/unittests/Makefile
@@ -1,5 +1,5 @@
1# $OpenBSD: Makefile,v 1.6 2016/05/26 19:14:25 schwarze Exp $ 1# $OpenBSD: Makefile,v 1.7 2016/08/19 06:44:13 djm Exp $
2REGRESS_FAIL_EARLY= yes 2REGRESS_FAIL_EARLY= yes
3SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 3SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 match
4 4
5.include <bsd.subdir.mk> 5.include <bsd.subdir.mk>
diff --git a/regress/unittests/Makefile.inc b/regress/unittests/Makefile.inc
index 7385e2ba3..3d9eaba5c 100644
--- a/regress/unittests/Makefile.inc
+++ b/regress/unittests/Makefile.inc
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile.inc,v 1.6 2015/07/01 23:11:18 djm Exp $ 1# $OpenBSD: Makefile.inc,v 1.9 2016/11/01 13:43:27 tb Exp $
2 2
3.include <bsd.own.mk> 3.include <bsd.own.mk>
4.include <bsd.obj.mk> 4.include <bsd.obj.mk>
@@ -49,11 +49,15 @@ DPADD+=${.CURDIR}/../test_helper/libtest_helper.a
49 49
50.if exists(${.CURDIR}/${SSHREL}/lib/${__objdir}) 50.if exists(${.CURDIR}/${SSHREL}/lib/${__objdir})
51LDADD+=-L${.CURDIR}/${SSHREL}/lib/${__objdir} -lssh 51LDADD+=-L${.CURDIR}/${SSHREL}/lib/${__objdir} -lssh
52DPADD+=${.CURDIR}/${SSHREL}/lib/${__objdir}/libssh.a 52LIBSSH=${.CURDIR}/${SSHREL}/lib/${__objdir}/libssh.a
53.else 53.else
54LDADD+=-L${.CURDIR}/${SSHREL}/lib -lssh 54LDADD+=-L${.CURDIR}/${SSHREL}/lib -lssh
55DPADD+=${.CURDIR}/${SSHREL}/lib/libssh.a 55LIBSSH=${.CURDIR}/${SSHREL}/lib/libssh.a
56.endif 56.endif
57DPADD+=${LIBSSH}
58${PROG}: ${LIBSSH}
59${LIBSSH}:
60 cd ${.CURDIR}/${SSHREL} && ${MAKE} lib
57 61
58LDADD+= -lcrypto 62LDADD+= -lcrypto
59DPADD+= ${LIBCRYPTO} 63DPADD+= ${LIBCRYPTO}
diff --git a/regress/unittests/bitmap/Makefile b/regress/unittests/bitmap/Makefile
index b704d22d6..bd21949f8 100644
--- a/regress/unittests/bitmap/Makefile
+++ b/regress/unittests/bitmap/Makefile
@@ -1,6 +1,4 @@
1# $OpenBSD: Makefile,v 1.1 2015/01/15 07:36:28 djm Exp $ 1# $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $
2
3TEST_ENV= "MALLOC_OPTIONS=AFGJPRX"
4 2
5PROG=test_bitmap 3PROG=test_bitmap
6SRCS=tests.c 4SRCS=tests.c
diff --git a/regress/unittests/hostkeys/Makefile b/regress/unittests/hostkeys/Makefile
index f52a85fb1..ae3c342bd 100644
--- a/regress/unittests/hostkeys/Makefile
+++ b/regress/unittests/hostkeys/Makefile
@@ -1,6 +1,4 @@
1# $OpenBSD: Makefile,v 1.1 2015/02/16 22:18:34 djm Exp $ 1# $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $
2
3TEST_ENV= "MALLOC_OPTIONS=AFGJPRX"
4 2
5PROG=test_hostkeys 3PROG=test_hostkeys
6SRCS=tests.c test_iterate.c 4SRCS=tests.c test_iterate.c
diff --git a/regress/unittests/kex/Makefile b/regress/unittests/kex/Makefile
index 6532cb00a..7ed312675 100644
--- a/regress/unittests/kex/Makefile
+++ b/regress/unittests/kex/Makefile
@@ -1,6 +1,4 @@
1# $OpenBSD: Makefile,v 1.2 2015/01/24 10:39:21 miod Exp $ 1# $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $
2
3TEST_ENV= "MALLOC_OPTIONS=AFGJPRX"
4 2
5PROG=test_kex 3PROG=test_kex
6SRCS=tests.c test_kex.c 4SRCS=tests.c test_kex.c
diff --git a/regress/unittests/match/Makefile b/regress/unittests/match/Makefile
new file mode 100644
index 000000000..bd4aed844
--- /dev/null
+++ b/regress/unittests/match/Makefile
@@ -0,0 +1,10 @@
1# $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $
2
3PROG=test_match
4SRCS=tests.c
5REGRESS_TARGETS=run-regress-${PROG}
6
7run-regress-${PROG}: ${PROG}
8 env ${TEST_ENV} ./${PROG}
9
10.include <bsd.regress.mk>
diff --git a/regress/unittests/match/tests.c b/regress/unittests/match/tests.c
new file mode 100644
index 000000000..7ff319c16
--- /dev/null
+++ b/regress/unittests/match/tests.c
@@ -0,0 +1,113 @@
1/* $OpenBSD: tests.c,v 1.3 2016/09/21 17:03:54 djm Exp $ */
2/*
3 * Regress test for matching functions
4 *
5 * Placed in the public domain
6 */
7
8#include "includes.h"
9
10#include <sys/types.h>
11#include <sys/param.h>
12#include <stdio.h>
13#ifdef HAVE_STDINT_H
14#include <stdint.h>
15#endif
16#include <stdlib.h>
17#include <string.h>
18
19#include "../test_helper/test_helper.h"
20
21#include "match.h"
22
23void
24tests(void)
25{
26 TEST_START("match_pattern");
27 ASSERT_INT_EQ(match_pattern("", ""), 1);
28 ASSERT_INT_EQ(match_pattern("", "aaa"), 0);
29 ASSERT_INT_EQ(match_pattern("aaa", ""), 0);
30 ASSERT_INT_EQ(match_pattern("aaa", "aaaa"), 0);
31 ASSERT_INT_EQ(match_pattern("aaaa", "aaa"), 0);
32 TEST_DONE();
33
34 TEST_START("match_pattern wildcard");
35 ASSERT_INT_EQ(match_pattern("", "*"), 1);
36 ASSERT_INT_EQ(match_pattern("a", "?"), 1);
37 ASSERT_INT_EQ(match_pattern("aa", "a?"), 1);
38 ASSERT_INT_EQ(match_pattern("a", "*"), 1);
39 ASSERT_INT_EQ(match_pattern("aa", "a*"), 1);
40 ASSERT_INT_EQ(match_pattern("aa", "?*"), 1);
41 ASSERT_INT_EQ(match_pattern("aa", "**"), 1);
42 ASSERT_INT_EQ(match_pattern("aa", "?a"), 1);
43 ASSERT_INT_EQ(match_pattern("aa", "*a"), 1);
44 ASSERT_INT_EQ(match_pattern("ba", "a?"), 0);
45 ASSERT_INT_EQ(match_pattern("ba", "a*"), 0);
46 ASSERT_INT_EQ(match_pattern("ab", "?a"), 0);
47 ASSERT_INT_EQ(match_pattern("ab", "*a"), 0);
48 TEST_DONE();
49
50 TEST_START("match_pattern_list");
51 ASSERT_INT_EQ(match_pattern_list("", "", 0), 0); /* no patterns */
52 ASSERT_INT_EQ(match_pattern_list("", "*", 0), 1);
53 ASSERT_INT_EQ(match_pattern_list("", "!*", 0), -1);
54 ASSERT_INT_EQ(match_pattern_list("", "!a,*", 0), 1);
55 ASSERT_INT_EQ(match_pattern_list("", "*,!a", 0), 1);
56 ASSERT_INT_EQ(match_pattern_list("", "a,!*", 0), -1);
57 ASSERT_INT_EQ(match_pattern_list("", "!*,a", 0), -1);
58 ASSERT_INT_EQ(match_pattern_list("a", "", 0), 0);
59 ASSERT_INT_EQ(match_pattern_list("a", "*", 0), 1);
60 ASSERT_INT_EQ(match_pattern_list("a", "!*", 0), -1);
61 ASSERT_INT_EQ(match_pattern_list("a", "!a", 0), -1);
62 /* XXX negated ASSERT_INT_EQ(match_pattern_list("a", "!b", 0), 1); */
63 ASSERT_INT_EQ(match_pattern_list("a", "!a,*", 0), -1);
64 ASSERT_INT_EQ(match_pattern_list("b", "!a,*", 0), 1);
65 ASSERT_INT_EQ(match_pattern_list("a", "*,!a", 0), -1);
66 ASSERT_INT_EQ(match_pattern_list("b", "*,!a", 0), 1);
67 ASSERT_INT_EQ(match_pattern_list("a", "a,!*", 0), -1);
68 ASSERT_INT_EQ(match_pattern_list("b", "a,!*", 0), -1);
69 ASSERT_INT_EQ(match_pattern_list("a", "a,!a", 0), -1);
70 /* XXX negated ASSERT_INT_EQ(match_pattern_list("b", "a,!a", 0), 1); */
71 ASSERT_INT_EQ(match_pattern_list("a", "!*,a", 0), -1);
72 ASSERT_INT_EQ(match_pattern_list("b", "!*,a", 0), -1);
73 TEST_DONE();
74
75 TEST_START("match_pattern_list lowercase");
76 ASSERT_INT_EQ(match_pattern_list("abc", "ABC", 0), 0);
77 ASSERT_INT_EQ(match_pattern_list("ABC", "abc", 0), 0);
78 ASSERT_INT_EQ(match_pattern_list("abc", "ABC", 1), 1);
79 ASSERT_INT_EQ(match_pattern_list("ABC", "abc", 1), 0);
80 TEST_DONE();
81
82 TEST_START("addr_match_list");
83 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.1/44"), -2);
84 ASSERT_INT_EQ(addr_match_list(NULL, "127.0.0.1/44"), -2);
85 ASSERT_INT_EQ(addr_match_list("a", "*"), 0);
86 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "*"), 1);
87 ASSERT_INT_EQ(addr_match_list(NULL, "*"), 0);
88 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.1"), 1);
89 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.2"), 0);
90 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.1"), -1);
91 /* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.2"), 1); */
92 ASSERT_INT_EQ(addr_match_list("127.0.0.255", "127.0.0.0/24"), 1);
93 ASSERT_INT_EQ(addr_match_list("127.0.1.1", "127.0.0.0/24"), 0);
94 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.0/24"), 1);
95 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.1.0/24"), 0);
96 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.0/24"), -1);
97 /* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.1.0/24"), 1); */
98 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,!127.0.0.1"), -1);
99 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.1,10.0.0.1"), -1);
100 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,127.0.0.2"), 0);
101 ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.2,10.0.0.1"), 0);
102 /* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,!127.0.0.2"), 1); */
103 /* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.2,10.0.0.1"), 1); */
104 TEST_DONE();
105
106/*
107 * XXX TODO
108 * int match_host_and_ip(const char *, const char *, const char *);
109 * int match_user(const char *, const char *, const char *, const char *);
110 * char *match_list(const char *, const char *, u_int *);
111 * int addr_match_cidr_list(const char *, const char *);
112 */
113}
diff --git a/regress/unittests/sshbuf/Makefile b/regress/unittests/sshbuf/Makefile
index 85f99ac38..69b27566b 100644
--- a/regress/unittests/sshbuf/Makefile
+++ b/regress/unittests/sshbuf/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.1 2014/04/30 05:32:00 djm Exp $ 1# $OpenBSD: Makefile,v 1.5 2016/11/01 13:43:27 tb Exp $
2 2
3PROG=test_sshbuf 3PROG=test_sshbuf
4SRCS=tests.c 4SRCS=tests.c
diff --git a/regress/unittests/sshkey/Makefile b/regress/unittests/sshkey/Makefile
index 1bcd26676..cfbfcf8f1 100644
--- a/regress/unittests/sshkey/Makefile
+++ b/regress/unittests/sshkey/Makefile
@@ -1,6 +1,4 @@
1# $OpenBSD: Makefile,v 1.1 2014/06/24 01:14:18 djm Exp $ 1# $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $
2
3TEST_ENV= "MALLOC_OPTIONS=AFGJPRX"
4 2
5PROG=test_sshkey 3PROG=test_sshkey
6SRCS=tests.c test_sshkey.c test_file.c test_fuzz.c common.c 4SRCS=tests.c test_sshkey.c test_file.c test_fuzz.c common.c
diff --git a/regress/unittests/utf8/Makefile b/regress/unittests/utf8/Makefile
index 150ea2f2e..a975264fc 100644
--- a/regress/unittests/utf8/Makefile
+++ b/regress/unittests/utf8/Makefile
@@ -1,6 +1,4 @@
1# $OpenBSD: Makefile,v 1.2 2016/05/30 12:14:08 schwarze Exp $ 1# $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $
2
3TEST_ENV= "MALLOC_OPTIONS=CFGJPRSUX"
4 2
5PROG=test_utf8 3PROG=test_utf8
6SRCS=tests.c 4SRCS=tests.c
diff --git a/regress/unittests/utf8/tests.c b/regress/unittests/utf8/tests.c
index fad2ec279..31f9fe9c3 100644
--- a/regress/unittests/utf8/tests.c
+++ b/regress/unittests/utf8/tests.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tests.c,v 1.2 2016/05/30 12:05:56 schwarze Exp $ */ 1/* $OpenBSD: tests.c,v 1.3 2016/12/19 04:55:18 djm Exp $ */
2/* 2/*
3 * Regress test for the utf8.h *mprintf() API 3 * Regress test for the utf8.h *mprintf() API
4 * 4 *
@@ -6,10 +6,12 @@
6 * and placed in the public domain. 6 * and placed in the public domain.
7 */ 7 */
8 8
9#include "includes.h"
10
9#include <locale.h> 11#include <locale.h>
10#include <string.h> 12#include <string.h>
11 13
12#include "test_helper.h" 14#include "../test_helper/test_helper.h"
13 15
14#include "utf8.h" 16#include "utf8.h"
15 17
@@ -63,7 +65,6 @@ tests(void)
63 TEST_DONE(); 65 TEST_DONE();
64 66
65 badarg(); 67 badarg();
66 one("null", NULL, 8, 6, 6, "(null)");
67 one("empty", "", 2, 0, 0, ""); 68 one("empty", "", 2, 0, 0, "");
68 one("ascii", "x", -2, -2, -2, "x"); 69 one("ascii", "x", -2, -2, -2, "x");
69 one("newline", "a\nb", -2, -2, -2, "a\nb"); 70 one("newline", "a\nb", -2, -2, -2, "a\nb");
diff --git a/sandbox-darwin.c b/sandbox-darwin.c
index 35f0c4d1a..a61de7495 100644
--- a/sandbox-darwin.c
+++ b/sandbox-darwin.c
@@ -31,6 +31,7 @@
31 31
32#include "log.h" 32#include "log.h"
33#include "sandbox.h" 33#include "sandbox.h"
34#include "monitor.h"
34#include "xmalloc.h" 35#include "xmalloc.h"
35 36
36/* Darwin/OS X sandbox */ 37/* Darwin/OS X sandbox */
diff --git a/sandbox-rlimit.c b/sandbox-rlimit.c
index bba80778b..0bff3dfba 100644
--- a/sandbox-rlimit.c
+++ b/sandbox-rlimit.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sandbox-rlimit.c,v 1.3 2011/06/23 09:34:13 djm Exp $ */ 1/* $OpenBSD: sandbox-rlimit.c,v 1.4 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -20,7 +20,6 @@
20#ifdef SANDBOX_RLIMIT 20#ifdef SANDBOX_RLIMIT
21 21
22#include <sys/types.h> 22#include <sys/types.h>
23#include <sys/param.h>
24#include <sys/time.h> 23#include <sys/time.h>
25#include <sys/resource.h> 24#include <sys/resource.h>
26 25
diff --git a/scp.c b/scp.c
index 4a7f73ab3..18c277201 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.186 2016/05/25 23:48:45 schwarze Exp $ */ 1/* $OpenBSD: scp.c,v 1.187 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -74,7 +74,6 @@
74#include "includes.h" 74#include "includes.h"
75 75
76#include <sys/types.h> 76#include <sys/types.h>
77#include <sys/param.h>
78#ifdef HAVE_SYS_STAT_H 77#ifdef HAVE_SYS_STAT_H
79# include <sys/stat.h> 78# include <sys/stat.h>
80#endif 79#endif
@@ -388,10 +387,10 @@ main(int argc, char **argv)
388 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ 387 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
389 sanitise_stdfd(); 388 sanitise_stdfd();
390 389
391 setlocale(LC_CTYPE, ""); 390 msetlocale();
392 391
393 /* Copy argv, because we modify it */ 392 /* Copy argv, because we modify it */
394 newargv = xcalloc(MAX(argc + 1, 1), sizeof(*newargv)); 393 newargv = xcalloc(MAXIMUM(argc + 1, 1), sizeof(*newargv));
395 for (n = 0; n < argc; n++) 394 for (n = 0; n < argc; n++)
396 newargv[n] = xstrdup(argv[n]); 395 newargv[n] = xstrdup(argv[n]);
397 argv = newargv; 396 argv = newargv;
@@ -1351,7 +1350,7 @@ allocbuf(BUF *bp, int fd, int blksize)
1351 run_err("fstat: %s", strerror(errno)); 1350 run_err("fstat: %s", strerror(errno));
1352 return (0); 1351 return (0);
1353 } 1352 }
1354 size = roundup(stb.st_blksize, blksize); 1353 size = ROUNDUP(stb.st_blksize, blksize);
1355 if (size == 0) 1354 if (size == 0)
1356 size = blksize; 1355 size = blksize;
1357#else /* HAVE_STRUCT_STAT_ST_BLKSIZE */ 1356#else /* HAVE_STRUCT_STAT_ST_BLKSIZE */
diff --git a/servconf.c b/servconf.c
index a98b30938..1cee3d6c2 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.292 2016/06/23 05:17:51 djm Exp $ */ 2/* $OpenBSD: servconf.c,v 1.301 2016/11/30 03:00:05 djm Exp $ */
3/* 3/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 5 * All rights reserved
@@ -86,9 +86,7 @@ initialize_server_options(ServerOptions *options)
86 options->num_host_cert_files = 0; 86 options->num_host_cert_files = 0;
87 options->host_key_agent = NULL; 87 options->host_key_agent = NULL;
88 options->pid_file = NULL; 88 options->pid_file = NULL;
89 options->server_key_bits = -1;
90 options->login_grace_time = -1; 89 options->login_grace_time = -1;
91 options->key_regeneration_time = -1;
92 options->permit_root_login = PERMIT_NOT_SET; 90 options->permit_root_login = PERMIT_NOT_SET;
93 options->ignore_rhosts = -1; 91 options->ignore_rhosts = -1;
94 options->ignore_user_known_hosts = -1; 92 options->ignore_user_known_hosts = -1;
@@ -104,12 +102,10 @@ initialize_server_options(ServerOptions *options)
104 options->tcp_keep_alive = -1; 102 options->tcp_keep_alive = -1;
105 options->log_facility = SYSLOG_FACILITY_NOT_SET; 103 options->log_facility = SYSLOG_FACILITY_NOT_SET;
106 options->log_level = SYSLOG_LEVEL_NOT_SET; 104 options->log_level = SYSLOG_LEVEL_NOT_SET;
107 options->rhosts_rsa_authentication = -1;
108 options->hostbased_authentication = -1; 105 options->hostbased_authentication = -1;
109 options->hostbased_uses_name_from_packet_only = -1; 106 options->hostbased_uses_name_from_packet_only = -1;
110 options->hostbased_key_types = NULL; 107 options->hostbased_key_types = NULL;
111 options->hostkeyalgorithms = NULL; 108 options->hostkeyalgorithms = NULL;
112 options->rsa_authentication = -1;
113 options->pubkey_authentication = -1; 109 options->pubkey_authentication = -1;
114 options->pubkey_key_types = NULL; 110 options->pubkey_key_types = NULL;
115 options->kerberos_authentication = -1; 111 options->kerberos_authentication = -1;
@@ -126,7 +122,6 @@ initialize_server_options(ServerOptions *options)
126 options->challenge_response_authentication = -1; 122 options->challenge_response_authentication = -1;
127 options->permit_empty_passwd = -1; 123 options->permit_empty_passwd = -1;
128 options->permit_user_env = -1; 124 options->permit_user_env = -1;
129 options->use_login = -1;
130 options->compression = -1; 125 options->compression = -1;
131 options->rekey_limit = -1; 126 options->rekey_limit = -1;
132 options->rekey_interval = -1; 127 options->rekey_interval = -1;
@@ -140,7 +135,6 @@ initialize_server_options(ServerOptions *options)
140 options->ciphers = NULL; 135 options->ciphers = NULL;
141 options->macs = NULL; 136 options->macs = NULL;
142 options->kex_algorithms = NULL; 137 options->kex_algorithms = NULL;
143 options->protocol = SSH_PROTO_UNKNOWN;
144 options->fwd_opts.gateway_ports = -1; 138 options->fwd_opts.gateway_ports = -1;
145 options->fwd_opts.streamlocal_bind_mask = (mode_t)-1; 139 options->fwd_opts.streamlocal_bind_mask = (mode_t)-1;
146 options->fwd_opts.streamlocal_bind_unlink = -1; 140 options->fwd_opts.streamlocal_bind_unlink = -1;
@@ -171,6 +165,7 @@ initialize_server_options(ServerOptions *options)
171 options->ip_qos_bulk = -1; 165 options->ip_qos_bulk = -1;
172 options->version_addendum = NULL; 166 options->version_addendum = NULL;
173 options->fingerprint_hash = -1; 167 options->fingerprint_hash = -1;
168 options->disable_forwarding = -1;
174 options->debian_banner = -1; 169 options->debian_banner = -1;
175} 170}
176 171
@@ -205,25 +200,18 @@ fill_default_server_options(ServerOptions *options)
205 options->use_pam = 0; 200 options->use_pam = 0;
206 201
207 /* Standard Options */ 202 /* Standard Options */
208 if (options->protocol == SSH_PROTO_UNKNOWN)
209 options->protocol = SSH_PROTO_2;
210 if (options->num_host_key_files == 0) { 203 if (options->num_host_key_files == 0) {
211 /* fill default hostkeys for protocols */ 204 /* fill default hostkeys for protocols */
212 if (options->protocol & SSH_PROTO_1) 205 options->host_key_files[options->num_host_key_files++] =
213 options->host_key_files[options->num_host_key_files++] = 206 _PATH_HOST_RSA_KEY_FILE;
214 _PATH_HOST_KEY_FILE; 207 options->host_key_files[options->num_host_key_files++] =
215 if (options->protocol & SSH_PROTO_2) { 208 _PATH_HOST_DSA_KEY_FILE;
216 options->host_key_files[options->num_host_key_files++] =
217 _PATH_HOST_RSA_KEY_FILE;
218 options->host_key_files[options->num_host_key_files++] =
219 _PATH_HOST_DSA_KEY_FILE;
220#ifdef OPENSSL_HAS_ECC 209#ifdef OPENSSL_HAS_ECC
221 options->host_key_files[options->num_host_key_files++] = 210 options->host_key_files[options->num_host_key_files++] =
222 _PATH_HOST_ECDSA_KEY_FILE; 211 _PATH_HOST_ECDSA_KEY_FILE;
223#endif 212#endif
224 options->host_key_files[options->num_host_key_files++] = 213 options->host_key_files[options->num_host_key_files++] =
225 _PATH_HOST_ED25519_KEY_FILE; 214 _PATH_HOST_ED25519_KEY_FILE;
226 }
227 } 215 }
228 /* No certificates by default */ 216 /* No certificates by default */
229 if (options->num_ports == 0) 217 if (options->num_ports == 0)
@@ -234,12 +222,8 @@ fill_default_server_options(ServerOptions *options)
234 add_listen_addr(options, NULL, 0); 222 add_listen_addr(options, NULL, 0);
235 if (options->pid_file == NULL) 223 if (options->pid_file == NULL)
236 options->pid_file = xstrdup(_PATH_SSH_DAEMON_PID_FILE); 224 options->pid_file = xstrdup(_PATH_SSH_DAEMON_PID_FILE);
237 if (options->server_key_bits == -1)
238 options->server_key_bits = 1024;
239 if (options->login_grace_time == -1) 225 if (options->login_grace_time == -1)
240 options->login_grace_time = 120; 226 options->login_grace_time = 120;
241 if (options->key_regeneration_time == -1)
242 options->key_regeneration_time = 3600;
243 if (options->permit_root_login == PERMIT_NOT_SET) 227 if (options->permit_root_login == PERMIT_NOT_SET)
244 options->permit_root_login = PERMIT_NO_PASSWD; 228 options->permit_root_login = PERMIT_NO_PASSWD;
245 if (options->ignore_rhosts == -1) 229 if (options->ignore_rhosts == -1)
@@ -270,14 +254,10 @@ fill_default_server_options(ServerOptions *options)
270 options->log_facility = SYSLOG_FACILITY_AUTH; 254 options->log_facility = SYSLOG_FACILITY_AUTH;
271 if (options->log_level == SYSLOG_LEVEL_NOT_SET) 255 if (options->log_level == SYSLOG_LEVEL_NOT_SET)
272 options->log_level = SYSLOG_LEVEL_INFO; 256 options->log_level = SYSLOG_LEVEL_INFO;
273 if (options->rhosts_rsa_authentication == -1)
274 options->rhosts_rsa_authentication = 0;
275 if (options->hostbased_authentication == -1) 257 if (options->hostbased_authentication == -1)
276 options->hostbased_authentication = 0; 258 options->hostbased_authentication = 0;
277 if (options->hostbased_uses_name_from_packet_only == -1) 259 if (options->hostbased_uses_name_from_packet_only == -1)
278 options->hostbased_uses_name_from_packet_only = 0; 260 options->hostbased_uses_name_from_packet_only = 0;
279 if (options->rsa_authentication == -1)
280 options->rsa_authentication = 1;
281 if (options->pubkey_authentication == -1) 261 if (options->pubkey_authentication == -1)
282 options->pubkey_authentication = 1; 262 options->pubkey_authentication = 1;
283 if (options->kerberos_authentication == -1) 263 if (options->kerberos_authentication == -1)
@@ -308,8 +288,6 @@ fill_default_server_options(ServerOptions *options)
308 options->permit_empty_passwd = 0; 288 options->permit_empty_passwd = 0;
309 if (options->permit_user_env == -1) 289 if (options->permit_user_env == -1)
310 options->permit_user_env = 0; 290 options->permit_user_env = 0;
311 if (options->use_login == -1)
312 options->use_login = 0;
313 if (options->compression == -1) 291 if (options->compression == -1)
314 options->compression = COMP_DELAYED; 292 options->compression = COMP_DELAYED;
315 if (options->rekey_limit == -1) 293 if (options->rekey_limit == -1)
@@ -360,6 +338,8 @@ fill_default_server_options(ServerOptions *options)
360 options->fwd_opts.streamlocal_bind_unlink = 0; 338 options->fwd_opts.streamlocal_bind_unlink = 0;
361 if (options->fingerprint_hash == -1) 339 if (options->fingerprint_hash == -1)
362 options->fingerprint_hash = SSH_FP_HASH_DEFAULT; 340 options->fingerprint_hash = SSH_FP_HASH_DEFAULT;
341 if (options->disable_forwarding == -1)
342 options->disable_forwarding = 0;
363 if (options->debian_banner == -1) 343 if (options->debian_banner == -1)
364 options->debian_banner = 1; 344 options->debian_banner = 1;
365 345
@@ -415,8 +395,8 @@ typedef enum {
415 /* Portable-specific options */ 395 /* Portable-specific options */
416 sUsePAM, 396 sUsePAM,
417 /* Standard Options */ 397 /* Standard Options */
418 sPort, sHostKeyFile, sServerKeyBits, sLoginGraceTime, 398 sPort, sHostKeyFile, sLoginGraceTime,
419 sKeyRegenerationTime, sPermitRootLogin, sLogFacility, sLogLevel, 399 sPermitRootLogin, sLogFacility, sLogLevel,
420 sRhostsRSAAuthentication, sRSAAuthentication, 400 sRhostsRSAAuthentication, sRSAAuthentication,
421 sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup, 401 sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup,
422 sKerberosGetAFSToken, 402 sKerberosGetAFSToken,
@@ -426,9 +406,9 @@ typedef enum {
426 sPrintMotd, sPrintLastLog, sIgnoreRhosts, 406 sPrintMotd, sPrintLastLog, sIgnoreRhosts,
427 sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost, 407 sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost,
428 sPermitTTY, sStrictModes, sEmptyPasswd, sTCPKeepAlive, 408 sPermitTTY, sStrictModes, sEmptyPasswd, sTCPKeepAlive,
429 sPermitUserEnvironment, sUseLogin, sAllowTcpForwarding, sCompression, 409 sPermitUserEnvironment, sAllowTcpForwarding, sCompression,
430 sRekeyLimit, sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups, 410 sRekeyLimit, sAllowUsers, sDenyUsers, sAllowGroups, sDenyGroups,
431 sIgnoreUserKnownHosts, sCiphers, sMacs, sProtocol, sPidFile, 411 sIgnoreUserKnownHosts, sCiphers, sMacs, sPidFile,
432 sGatewayPorts, sPubkeyAuthentication, sPubkeyAcceptedKeyTypes, 412 sGatewayPorts, sPubkeyAuthentication, sPubkeyAcceptedKeyTypes,
433 sXAuthLocation, sSubsystem, sMaxStartups, sMaxAuthTries, sMaxSessions, 413 sXAuthLocation, sSubsystem, sMaxStartups, sMaxAuthTries, sMaxSessions,
434 sBanner, sUseDNS, sHostbasedAuthentication, 414 sBanner, sUseDNS, sHostbasedAuthentication,
@@ -447,9 +427,9 @@ typedef enum {
447 sAuthorizedKeysCommand, sAuthorizedKeysCommandUser, 427 sAuthorizedKeysCommand, sAuthorizedKeysCommandUser,
448 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, 428 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC,
449 sStreamLocalBindMask, sStreamLocalBindUnlink, 429 sStreamLocalBindMask, sStreamLocalBindUnlink,
450 sAllowStreamLocalForwarding, sFingerprintHash, 430 sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding,
451 sDebianBanner, 431 sDebianBanner,
452 sDeprecated, sUnsupported 432 sDeprecated, sIgnore, sUnsupported
453} ServerOpCodes; 433} ServerOpCodes;
454 434
455#define SSHCFG_GLOBAL 0x01 /* allowed in main section of sshd_config */ 435#define SSHCFG_GLOBAL 0x01 /* allowed in main section of sshd_config */
@@ -475,19 +455,19 @@ static struct {
475 { "hostdsakey", sHostKeyFile, SSHCFG_GLOBAL }, /* alias */ 455 { "hostdsakey", sHostKeyFile, SSHCFG_GLOBAL }, /* alias */
476 { "hostkeyagent", sHostKeyAgent, SSHCFG_GLOBAL }, 456 { "hostkeyagent", sHostKeyAgent, SSHCFG_GLOBAL },
477 { "pidfile", sPidFile, SSHCFG_GLOBAL }, 457 { "pidfile", sPidFile, SSHCFG_GLOBAL },
478 { "serverkeybits", sServerKeyBits, SSHCFG_GLOBAL }, 458 { "serverkeybits", sDeprecated, SSHCFG_GLOBAL },
479 { "logingracetime", sLoginGraceTime, SSHCFG_GLOBAL }, 459 { "logingracetime", sLoginGraceTime, SSHCFG_GLOBAL },
480 { "keyregenerationinterval", sKeyRegenerationTime, SSHCFG_GLOBAL }, 460 { "keyregenerationinterval", sDeprecated, SSHCFG_GLOBAL },
481 { "permitrootlogin", sPermitRootLogin, SSHCFG_ALL }, 461 { "permitrootlogin", sPermitRootLogin, SSHCFG_ALL },
482 { "syslogfacility", sLogFacility, SSHCFG_GLOBAL }, 462 { "syslogfacility", sLogFacility, SSHCFG_GLOBAL },
483 { "loglevel", sLogLevel, SSHCFG_GLOBAL }, 463 { "loglevel", sLogLevel, SSHCFG_GLOBAL },
484 { "rhostsauthentication", sDeprecated, SSHCFG_GLOBAL }, 464 { "rhostsauthentication", sDeprecated, SSHCFG_GLOBAL },
485 { "rhostsrsaauthentication", sRhostsRSAAuthentication, SSHCFG_ALL }, 465 { "rhostsrsaauthentication", sDeprecated, SSHCFG_ALL },
486 { "hostbasedauthentication", sHostbasedAuthentication, SSHCFG_ALL }, 466 { "hostbasedauthentication", sHostbasedAuthentication, SSHCFG_ALL },
487 { "hostbasedusesnamefrompacketonly", sHostbasedUsesNameFromPacketOnly, SSHCFG_ALL }, 467 { "hostbasedusesnamefrompacketonly", sHostbasedUsesNameFromPacketOnly, SSHCFG_ALL },
488 { "hostbasedacceptedkeytypes", sHostbasedAcceptedKeyTypes, SSHCFG_ALL }, 468 { "hostbasedacceptedkeytypes", sHostbasedAcceptedKeyTypes, SSHCFG_ALL },
489 { "hostkeyalgorithms", sHostKeyAlgorithms, SSHCFG_GLOBAL }, 469 { "hostkeyalgorithms", sHostKeyAlgorithms, SSHCFG_GLOBAL },
490 { "rsaauthentication", sRSAAuthentication, SSHCFG_ALL }, 470 { "rsaauthentication", sDeprecated, SSHCFG_ALL },
491 { "pubkeyauthentication", sPubkeyAuthentication, SSHCFG_ALL }, 471 { "pubkeyauthentication", sPubkeyAuthentication, SSHCFG_ALL },
492 { "pubkeyacceptedkeytypes", sPubkeyAcceptedKeyTypes, SSHCFG_ALL }, 472 { "pubkeyacceptedkeytypes", sPubkeyAcceptedKeyTypes, SSHCFG_ALL },
493 { "dsaauthentication", sPubkeyAuthentication, SSHCFG_GLOBAL }, /* alias */ 473 { "dsaauthentication", sPubkeyAuthentication, SSHCFG_GLOBAL }, /* alias */
@@ -548,7 +528,7 @@ static struct {
548 { "permitblacklistedkeys", sDeprecated, SSHCFG_GLOBAL }, 528 { "permitblacklistedkeys", sDeprecated, SSHCFG_GLOBAL },
549 { "permitemptypasswords", sEmptyPasswd, SSHCFG_ALL }, 529 { "permitemptypasswords", sEmptyPasswd, SSHCFG_ALL },
550 { "permituserenvironment", sPermitUserEnvironment, SSHCFG_GLOBAL }, 530 { "permituserenvironment", sPermitUserEnvironment, SSHCFG_GLOBAL },
551 { "uselogin", sUseLogin, SSHCFG_GLOBAL }, 531 { "uselogin", sDeprecated, SSHCFG_GLOBAL },
552 { "compression", sCompression, SSHCFG_GLOBAL }, 532 { "compression", sCompression, SSHCFG_GLOBAL },
553 { "rekeylimit", sRekeyLimit, SSHCFG_ALL }, 533 { "rekeylimit", sRekeyLimit, SSHCFG_ALL },
554 { "tcpkeepalive", sTCPKeepAlive, SSHCFG_GLOBAL }, 534 { "tcpkeepalive", sTCPKeepAlive, SSHCFG_GLOBAL },
@@ -561,7 +541,7 @@ static struct {
561 { "denygroups", sDenyGroups, SSHCFG_ALL }, 541 { "denygroups", sDenyGroups, SSHCFG_ALL },
562 { "ciphers", sCiphers, SSHCFG_GLOBAL }, 542 { "ciphers", sCiphers, SSHCFG_GLOBAL },
563 { "macs", sMacs, SSHCFG_GLOBAL }, 543 { "macs", sMacs, SSHCFG_GLOBAL },
564 { "protocol", sProtocol, SSHCFG_GLOBAL }, 544 { "protocol", sIgnore, SSHCFG_GLOBAL },
565 { "gatewayports", sGatewayPorts, SSHCFG_ALL }, 545 { "gatewayports", sGatewayPorts, SSHCFG_ALL },
566 { "subsystem", sSubsystem, SSHCFG_GLOBAL }, 546 { "subsystem", sSubsystem, SSHCFG_GLOBAL },
567 { "maxstartups", sMaxStartups, SSHCFG_GLOBAL }, 547 { "maxstartups", sMaxStartups, SSHCFG_GLOBAL },
@@ -571,8 +551,8 @@ static struct {
571 { "usedns", sUseDNS, SSHCFG_GLOBAL }, 551 { "usedns", sUseDNS, SSHCFG_GLOBAL },
572 { "verifyreversemapping", sDeprecated, SSHCFG_GLOBAL }, 552 { "verifyreversemapping", sDeprecated, SSHCFG_GLOBAL },
573 { "reversemappingcheck", sDeprecated, SSHCFG_GLOBAL }, 553 { "reversemappingcheck", sDeprecated, SSHCFG_GLOBAL },
574 { "clientaliveinterval", sClientAliveInterval, SSHCFG_GLOBAL }, 554 { "clientaliveinterval", sClientAliveInterval, SSHCFG_ALL },
575 { "clientalivecountmax", sClientAliveCountMax, SSHCFG_GLOBAL }, 555 { "clientalivecountmax", sClientAliveCountMax, SSHCFG_ALL },
576 { "authorizedkeysfile", sAuthorizedKeysFile, SSHCFG_ALL }, 556 { "authorizedkeysfile", sAuthorizedKeysFile, SSHCFG_ALL },
577 { "authorizedkeysfile2", sDeprecated, SSHCFG_ALL }, 557 { "authorizedkeysfile2", sDeprecated, SSHCFG_ALL },
578 { "useprivilegeseparation", sUsePrivilegeSeparation, SSHCFG_GLOBAL}, 558 { "useprivilegeseparation", sUsePrivilegeSeparation, SSHCFG_GLOBAL},
@@ -600,6 +580,7 @@ static struct {
600 { "streamlocalbindunlink", sStreamLocalBindUnlink, SSHCFG_ALL }, 580 { "streamlocalbindunlink", sStreamLocalBindUnlink, SSHCFG_ALL },
601 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL }, 581 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL },
602 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, 582 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL },
583 { "disableforwarding", sDisableForwarding, SSHCFG_ALL },
603 { "debianbanner", sDebianBanner, SSHCFG_GLOBAL }, 584 { "debianbanner", sDebianBanner, SSHCFG_GLOBAL },
604 { NULL, sBadOption, 0 } 585 { NULL, sBadOption, 0 }
605}; 586};
@@ -763,7 +744,7 @@ get_connection_info(int populate, int use_dns)
763 * options set are copied into the main server config. 744 * options set are copied into the main server config.
764 * 745 *
765 * Potential additions/improvements: 746 * Potential additions/improvements:
766 * - Add Match support for pre-kex directives, eg Protocol, Ciphers. 747 * - Add Match support for pre-kex directives, eg. Ciphers.
767 * 748 *
768 * - Add a Tag directive (idea from David Leonard) ala pf, eg: 749 * - Add a Tag directive (idea from David Leonard) ala pf, eg:
769 * Match Address 192.168.0.* 750 * Match Address 192.168.0.*
@@ -964,8 +945,8 @@ static const struct multistate multistate_permitrootlogin[] = {
964 { NULL, -1 } 945 { NULL, -1 }
965}; 946};
966static const struct multistate multistate_compression[] = { 947static const struct multistate multistate_compression[] = {
948 { "yes", COMP_DELAYED },
967 { "delayed", COMP_DELAYED }, 949 { "delayed", COMP_DELAYED },
968 { "yes", COMP_ZLIB },
969 { "no", COMP_NONE }, 950 { "no", COMP_NONE },
970 { NULL, -1 } 951 { NULL, -1 }
971}; 952};
@@ -1061,18 +1042,6 @@ process_server_config_line(ServerOptions *options, char *line,
1061 filename, linenum); 1042 filename, linenum);
1062 break; 1043 break;
1063 1044
1064 case sServerKeyBits:
1065 intptr = &options->server_key_bits;
1066 parse_int:
1067 arg = strdelim(&cp);
1068 if (!arg || *arg == '\0')
1069 fatal("%s line %d: missing integer value.",
1070 filename, linenum);
1071 value = atoi(arg);
1072 if (*activep && *intptr == -1)
1073 *intptr = value;
1074 break;
1075
1076 case sLoginGraceTime: 1045 case sLoginGraceTime:
1077 intptr = &options->login_grace_time; 1046 intptr = &options->login_grace_time;
1078 parse_time: 1047 parse_time:
@@ -1087,10 +1056,6 @@ process_server_config_line(ServerOptions *options, char *line,
1087 *intptr = value; 1056 *intptr = value;
1088 break; 1057 break;
1089 1058
1090 case sKeyRegenerationTime:
1091 intptr = &options->key_regeneration_time;
1092 goto parse_time;
1093
1094 case sListenAddress: 1059 case sListenAddress:
1095 arg = strdelim(&cp); 1060 arg = strdelim(&cp);
1096 if (arg == NULL || *arg == '\0') 1061 if (arg == NULL || *arg == '\0')
@@ -1176,7 +1141,6 @@ process_server_config_line(ServerOptions *options, char *line,
1176 MAX_HOSTCERTS); 1141 MAX_HOSTCERTS);
1177 charptr = &options->host_cert_files[*intptr]; 1142 charptr = &options->host_cert_files[*intptr];
1178 goto parse_filename; 1143 goto parse_filename;
1179 break;
1180 1144
1181 case sPidFile: 1145 case sPidFile:
1182 charptr = &options->pid_file; 1146 charptr = &options->pid_file;
@@ -1210,10 +1174,6 @@ process_server_config_line(ServerOptions *options, char *line,
1210 intptr = &options->ignore_user_known_hosts; 1174 intptr = &options->ignore_user_known_hosts;
1211 goto parse_flag; 1175 goto parse_flag;
1212 1176
1213 case sRhostsRSAAuthentication:
1214 intptr = &options->rhosts_rsa_authentication;
1215 goto parse_flag;
1216
1217 case sHostbasedAuthentication: 1177 case sHostbasedAuthentication:
1218 intptr = &options->hostbased_authentication; 1178 intptr = &options->hostbased_authentication;
1219 goto parse_flag; 1179 goto parse_flag;
@@ -1240,10 +1200,6 @@ process_server_config_line(ServerOptions *options, char *line,
1240 charptr = &options->hostkeyalgorithms; 1200 charptr = &options->hostkeyalgorithms;
1241 goto parse_keytypes; 1201 goto parse_keytypes;
1242 1202
1243 case sRSAAuthentication:
1244 intptr = &options->rsa_authentication;
1245 goto parse_flag;
1246
1247 case sPubkeyAuthentication: 1203 case sPubkeyAuthentication:
1248 intptr = &options->pubkey_authentication; 1204 intptr = &options->pubkey_authentication;
1249 goto parse_flag; 1205 goto parse_flag;
@@ -1314,7 +1270,15 @@ process_server_config_line(ServerOptions *options, char *line,
1314 1270
1315 case sX11DisplayOffset: 1271 case sX11DisplayOffset:
1316 intptr = &options->x11_display_offset; 1272 intptr = &options->x11_display_offset;
1317 goto parse_int; 1273 parse_int:
1274 arg = strdelim(&cp);
1275 if (!arg || *arg == '\0')
1276 fatal("%s line %d: missing integer value.",
1277 filename, linenum);
1278 value = atoi(arg);
1279 if (*activep && *intptr == -1)
1280 *intptr = value;
1281 break;
1318 1282
1319 case sX11UseLocalhost: 1283 case sX11UseLocalhost:
1320 intptr = &options->x11_use_localhost; 1284 intptr = &options->x11_use_localhost;
@@ -1348,10 +1312,6 @@ process_server_config_line(ServerOptions *options, char *line,
1348 intptr = &options->permit_user_env; 1312 intptr = &options->permit_user_env;
1349 goto parse_flag; 1313 goto parse_flag;
1350 1314
1351 case sUseLogin:
1352 intptr = &options->use_login;
1353 goto parse_flag;
1354
1355 case sCompression: 1315 case sCompression:
1356 intptr = &options->compression; 1316 intptr = &options->compression;
1357 multistate_ptr = multistate_compression; 1317 multistate_ptr = multistate_compression;
@@ -1429,6 +1389,10 @@ process_server_config_line(ServerOptions *options, char *line,
1429 intptr = &options->allow_agent_forwarding; 1389 intptr = &options->allow_agent_forwarding;
1430 goto parse_flag; 1390 goto parse_flag;
1431 1391
1392 case sDisableForwarding:
1393 intptr = &options->disable_forwarding;
1394 goto parse_flag;
1395
1432 case sUsePrivilegeSeparation: 1396 case sUsePrivilegeSeparation:
1433 intptr = &use_privsep; 1397 intptr = &use_privsep;
1434 multistate_ptr = multistate_privsep; 1398 multistate_ptr = multistate_privsep;
@@ -1439,6 +1403,9 @@ process_server_config_line(ServerOptions *options, char *line,
1439 if (options->num_allow_users >= MAX_ALLOW_USERS) 1403 if (options->num_allow_users >= MAX_ALLOW_USERS)
1440 fatal("%s line %d: too many allow users.", 1404 fatal("%s line %d: too many allow users.",
1441 filename, linenum); 1405 filename, linenum);
1406 if (match_user(NULL, NULL, NULL, arg) == -1)
1407 fatal("%s line %d: invalid AllowUsers pattern: "
1408 "\"%.100s\"", filename, linenum, arg);
1442 if (!*activep) 1409 if (!*activep)
1443 continue; 1410 continue;
1444 options->allow_users[options->num_allow_users++] = 1411 options->allow_users[options->num_allow_users++] =
@@ -1451,6 +1418,9 @@ process_server_config_line(ServerOptions *options, char *line,
1451 if (options->num_deny_users >= MAX_DENY_USERS) 1418 if (options->num_deny_users >= MAX_DENY_USERS)
1452 fatal("%s line %d: too many deny users.", 1419 fatal("%s line %d: too many deny users.",
1453 filename, linenum); 1420 filename, linenum);
1421 if (match_user(NULL, NULL, NULL, arg) == -1)
1422 fatal("%s line %d: invalid DenyUsers pattern: "
1423 "\"%.100s\"", filename, linenum, arg);
1454 if (!*activep) 1424 if (!*activep)
1455 continue; 1425 continue;
1456 options->deny_users[options->num_deny_users++] = 1426 options->deny_users[options->num_deny_users++] =
@@ -1516,19 +1486,6 @@ process_server_config_line(ServerOptions *options, char *line,
1516 options->kex_algorithms = xstrdup(arg); 1486 options->kex_algorithms = xstrdup(arg);
1517 break; 1487 break;
1518 1488
1519 case sProtocol:
1520 intptr = &options->protocol;
1521 arg = strdelim(&cp);
1522 if (!arg || *arg == '\0')
1523 fatal("%s line %d: Missing argument.", filename, linenum);
1524 value = proto_spec(arg);
1525 if (value == SSH_PROTO_UNKNOWN)
1526 fatal("%s line %d: Bad protocol spec '%s'.",
1527 filename, linenum, arg ? arg : "<NONE>");
1528 if (*intptr == SSH_PROTO_UNKNOWN)
1529 *intptr = value;
1530 break;
1531
1532 case sSubsystem: 1489 case sSubsystem:
1533 if (options->num_subsystems >= MAX_SUBSYSTEMS) { 1490 if (options->num_subsystems >= MAX_SUBSYSTEMS) {
1534 fatal("%s line %d: too many subsystems defined.", 1491 fatal("%s line %d: too many subsystems defined.",
@@ -1913,15 +1870,12 @@ process_server_config_line(ServerOptions *options, char *line,
1913 goto parse_int; 1870 goto parse_int;
1914 1871
1915 case sDeprecated: 1872 case sDeprecated:
1916 logit("%s line %d: Deprecated option %s", 1873 case sIgnore:
1917 filename, linenum, arg);
1918 while (arg)
1919 arg = strdelim(&cp);
1920 break;
1921
1922 case sUnsupported: 1874 case sUnsupported:
1923 logit("%s line %d: Unsupported option %s", 1875 do_log2(opcode == sIgnore ?
1924 filename, linenum, arg); 1876 SYSLOG_LEVEL_DEBUG2 : SYSLOG_LEVEL_INFO,
1877 "%s line %d: %s option %s", filename, linenum,
1878 opcode == sUnsupported ? "Unsupported" : "Deprecated", arg);
1925 while (arg) 1879 while (arg)
1926 arg = strdelim(&cp); 1880 arg = strdelim(&cp);
1927 break; 1881 break;
@@ -2041,7 +1995,6 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
2041 1995
2042 M_CP_INTOPT(password_authentication); 1996 M_CP_INTOPT(password_authentication);
2043 M_CP_INTOPT(gss_authentication); 1997 M_CP_INTOPT(gss_authentication);
2044 M_CP_INTOPT(rsa_authentication);
2045 M_CP_INTOPT(pubkey_authentication); 1998 M_CP_INTOPT(pubkey_authentication);
2046 M_CP_INTOPT(kerberos_authentication); 1999 M_CP_INTOPT(kerberos_authentication);
2047 M_CP_INTOPT(hostbased_authentication); 2000 M_CP_INTOPT(hostbased_authentication);
@@ -2053,6 +2006,7 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
2053 M_CP_INTOPT(allow_tcp_forwarding); 2006 M_CP_INTOPT(allow_tcp_forwarding);
2054 M_CP_INTOPT(allow_streamlocal_forwarding); 2007 M_CP_INTOPT(allow_streamlocal_forwarding);
2055 M_CP_INTOPT(allow_agent_forwarding); 2008 M_CP_INTOPT(allow_agent_forwarding);
2009 M_CP_INTOPT(disable_forwarding);
2056 M_CP_INTOPT(permit_tun); 2010 M_CP_INTOPT(permit_tun);
2057 M_CP_INTOPT(fwd_opts.gateway_ports); 2011 M_CP_INTOPT(fwd_opts.gateway_ports);
2058 M_CP_INTOPT(fwd_opts.streamlocal_bind_unlink); 2012 M_CP_INTOPT(fwd_opts.streamlocal_bind_unlink);
@@ -2063,6 +2017,8 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
2063 M_CP_INTOPT(permit_user_rc); 2017 M_CP_INTOPT(permit_user_rc);
2064 M_CP_INTOPT(max_sessions); 2018 M_CP_INTOPT(max_sessions);
2065 M_CP_INTOPT(max_authtries); 2019 M_CP_INTOPT(max_authtries);
2020 M_CP_INTOPT(client_alive_count_max);
2021 M_CP_INTOPT(client_alive_interval);
2066 M_CP_INTOPT(ip_qos_interactive); 2022 M_CP_INTOPT(ip_qos_interactive);
2067 M_CP_INTOPT(ip_qos_bulk); 2023 M_CP_INTOPT(ip_qos_bulk);
2068 M_CP_INTOPT(rekey_limit); 2024 M_CP_INTOPT(rekey_limit);
@@ -2181,17 +2137,6 @@ fmt_intarg(ServerOpCodes code, int val)
2181 return fmt_multistate_int(val, multistate_tcpfwd); 2137 return fmt_multistate_int(val, multistate_tcpfwd);
2182 case sFingerprintHash: 2138 case sFingerprintHash:
2183 return ssh_digest_alg_name(val); 2139 return ssh_digest_alg_name(val);
2184 case sProtocol:
2185 switch (val) {
2186 case SSH_PROTO_1:
2187 return "1";
2188 case SSH_PROTO_2:
2189 return "2";
2190 case (SSH_PROTO_1|SSH_PROTO_2):
2191 return "2,1";
2192 default:
2193 return "UNKNOWN";
2194 }
2195 default: 2140 default:
2196 switch (val) { 2141 switch (val) {
2197 case 0: 2142 case 0:
@@ -2278,7 +2223,6 @@ dump_config(ServerOptions *o)
2278 /* these are usually at the top of the config */ 2223 /* these are usually at the top of the config */
2279 for (i = 0; i < o->num_ports; i++) 2224 for (i = 0; i < o->num_ports; i++)
2280 printf("port %d\n", o->ports[i]); 2225 printf("port %d\n", o->ports[i]);
2281 dump_cfg_fmtint(sProtocol, o->protocol);
2282 dump_cfg_fmtint(sAddressFamily, o->address_family); 2226 dump_cfg_fmtint(sAddressFamily, o->address_family);
2283 2227
2284 /* 2228 /*
@@ -2311,9 +2255,7 @@ dump_config(ServerOptions *o)
2311#ifdef USE_PAM 2255#ifdef USE_PAM
2312 dump_cfg_fmtint(sUsePAM, o->use_pam); 2256 dump_cfg_fmtint(sUsePAM, o->use_pam);
2313#endif 2257#endif
2314 dump_cfg_int(sServerKeyBits, o->server_key_bits);
2315 dump_cfg_int(sLoginGraceTime, o->login_grace_time); 2258 dump_cfg_int(sLoginGraceTime, o->login_grace_time);
2316 dump_cfg_int(sKeyRegenerationTime, o->key_regeneration_time);
2317 dump_cfg_int(sX11DisplayOffset, o->x11_display_offset); 2259 dump_cfg_int(sX11DisplayOffset, o->x11_display_offset);
2318 dump_cfg_int(sMaxAuthTries, o->max_authtries); 2260 dump_cfg_int(sMaxAuthTries, o->max_authtries);
2319 dump_cfg_int(sMaxSessions, o->max_sessions); 2261 dump_cfg_int(sMaxSessions, o->max_sessions);
@@ -2325,11 +2267,9 @@ dump_config(ServerOptions *o)
2325 dump_cfg_fmtint(sPermitRootLogin, o->permit_root_login); 2267 dump_cfg_fmtint(sPermitRootLogin, o->permit_root_login);
2326 dump_cfg_fmtint(sIgnoreRhosts, o->ignore_rhosts); 2268 dump_cfg_fmtint(sIgnoreRhosts, o->ignore_rhosts);
2327 dump_cfg_fmtint(sIgnoreUserKnownHosts, o->ignore_user_known_hosts); 2269 dump_cfg_fmtint(sIgnoreUserKnownHosts, o->ignore_user_known_hosts);
2328 dump_cfg_fmtint(sRhostsRSAAuthentication, o->rhosts_rsa_authentication);
2329 dump_cfg_fmtint(sHostbasedAuthentication, o->hostbased_authentication); 2270 dump_cfg_fmtint(sHostbasedAuthentication, o->hostbased_authentication);
2330 dump_cfg_fmtint(sHostbasedUsesNameFromPacketOnly, 2271 dump_cfg_fmtint(sHostbasedUsesNameFromPacketOnly,
2331 o->hostbased_uses_name_from_packet_only); 2272 o->hostbased_uses_name_from_packet_only);
2332 dump_cfg_fmtint(sRSAAuthentication, o->rsa_authentication);
2333 dump_cfg_fmtint(sPubkeyAuthentication, o->pubkey_authentication); 2273 dump_cfg_fmtint(sPubkeyAuthentication, o->pubkey_authentication);
2334#ifdef KRB5 2274#ifdef KRB5
2335 dump_cfg_fmtint(sKerberosAuthentication, o->kerberos_authentication); 2275 dump_cfg_fmtint(sKerberosAuthentication, o->kerberos_authentication);
@@ -2363,12 +2303,12 @@ dump_config(ServerOptions *o)
2363 dump_cfg_fmtint(sTCPKeepAlive, o->tcp_keep_alive); 2303 dump_cfg_fmtint(sTCPKeepAlive, o->tcp_keep_alive);
2364 dump_cfg_fmtint(sEmptyPasswd, o->permit_empty_passwd); 2304 dump_cfg_fmtint(sEmptyPasswd, o->permit_empty_passwd);
2365 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env); 2305 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env);
2366 dump_cfg_fmtint(sUseLogin, o->use_login);
2367 dump_cfg_fmtint(sCompression, o->compression); 2306 dump_cfg_fmtint(sCompression, o->compression);
2368 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports); 2307 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports);
2369 dump_cfg_fmtint(sUseDNS, o->use_dns); 2308 dump_cfg_fmtint(sUseDNS, o->use_dns);
2370 dump_cfg_fmtint(sAllowTcpForwarding, o->allow_tcp_forwarding); 2309 dump_cfg_fmtint(sAllowTcpForwarding, o->allow_tcp_forwarding);
2371 dump_cfg_fmtint(sAllowAgentForwarding, o->allow_agent_forwarding); 2310 dump_cfg_fmtint(sAllowAgentForwarding, o->allow_agent_forwarding);
2311 dump_cfg_fmtint(sDisableForwarding, o->disable_forwarding);
2372 dump_cfg_fmtint(sAllowStreamLocalForwarding, o->allow_streamlocal_forwarding); 2312 dump_cfg_fmtint(sAllowStreamLocalForwarding, o->allow_streamlocal_forwarding);
2373 dump_cfg_fmtint(sStreamLocalBindUnlink, o->fwd_opts.streamlocal_bind_unlink); 2313 dump_cfg_fmtint(sStreamLocalBindUnlink, o->fwd_opts.streamlocal_bind_unlink);
2374 dump_cfg_fmtint(sUsePrivilegeSeparation, use_privsep); 2314 dump_cfg_fmtint(sUsePrivilegeSeparation, use_privsep);
diff --git a/servconf.h b/servconf.h
index 161fa37c4..913a21b39 100644
--- a/servconf.h
+++ b/servconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: servconf.h,v 1.120 2015/07/10 06:21:53 markus Exp $ */ 1/* $OpenBSD: servconf.h,v 1.123 2016/11/30 03:00:05 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -69,10 +69,8 @@ typedef struct {
69 int num_host_cert_files; /* Number of files for host certs. */ 69 int num_host_cert_files; /* Number of files for host certs. */
70 char *host_key_agent; /* ssh-agent socket for host keys. */ 70 char *host_key_agent; /* ssh-agent socket for host keys. */
71 char *pid_file; /* Where to put our pid */ 71 char *pid_file; /* Where to put our pid */
72 int server_key_bits;/* Size of the server key. */
73 int login_grace_time; /* Disconnect if no auth in this time 72 int login_grace_time; /* Disconnect if no auth in this time
74 * (sec). */ 73 * (sec). */
75 int key_regeneration_time; /* Server key lifetime (seconds). */
76 int permit_root_login; /* PERMIT_*, see above */ 74 int permit_root_login; /* PERMIT_*, see above */
77 int ignore_rhosts; /* Ignore .rhosts and .shosts. */ 75 int ignore_rhosts; /* Ignore .rhosts and .shosts. */
78 int ignore_user_known_hosts; /* Ignore ~/.ssh/known_hosts 76 int ignore_user_known_hosts; /* Ignore ~/.ssh/known_hosts
@@ -93,17 +91,13 @@ typedef struct {
93 char *ciphers; /* Supported SSH2 ciphers. */ 91 char *ciphers; /* Supported SSH2 ciphers. */
94 char *macs; /* Supported SSH2 macs. */ 92 char *macs; /* Supported SSH2 macs. */
95 char *kex_algorithms; /* SSH2 kex methods in order of preference. */ 93 char *kex_algorithms; /* SSH2 kex methods in order of preference. */
96 int protocol; /* Supported protocol versions. */
97 struct ForwardOptions fwd_opts; /* forwarding options */ 94 struct ForwardOptions fwd_opts; /* forwarding options */
98 SyslogFacility log_facility; /* Facility for system logging. */ 95 SyslogFacility log_facility; /* Facility for system logging. */
99 LogLevel log_level; /* Level for system logging. */ 96 LogLevel log_level; /* Level for system logging. */
100 int rhosts_rsa_authentication; /* If true, permit rhosts RSA
101 * authentication. */
102 int hostbased_authentication; /* If true, permit ssh2 hostbased auth */ 97 int hostbased_authentication; /* If true, permit ssh2 hostbased auth */
103 int hostbased_uses_name_from_packet_only; /* experimental */ 98 int hostbased_uses_name_from_packet_only; /* experimental */
104 char *hostbased_key_types; /* Key types allowed for hostbased */ 99 char *hostbased_key_types; /* Key types allowed for hostbased */
105 char *hostkeyalgorithms; /* SSH2 server key types */ 100 char *hostkeyalgorithms; /* SSH2 server key types */
106 int rsa_authentication; /* If true, permit RSA authentication. */
107 int pubkey_authentication; /* If true, permit ssh2 pubkey authentication. */ 101 int pubkey_authentication; /* If true, permit ssh2 pubkey authentication. */
108 char *pubkey_key_types; /* Key types allowed for public key */ 102 char *pubkey_key_types; /* Key types allowed for public key */
109 int kerberos_authentication; /* If true, permit Kerberos 103 int kerberos_authentication; /* If true, permit Kerberos
@@ -129,11 +123,11 @@ typedef struct {
129 int permit_empty_passwd; /* If false, do not permit empty 123 int permit_empty_passwd; /* If false, do not permit empty
130 * passwords. */ 124 * passwords. */
131 int permit_user_env; /* If true, read ~/.ssh/environment */ 125 int permit_user_env; /* If true, read ~/.ssh/environment */
132 int use_login; /* If true, login(1) is used */
133 int compression; /* If true, compression is allowed */ 126 int compression; /* If true, compression is allowed */
134 int allow_tcp_forwarding; /* One of FORWARD_* */ 127 int allow_tcp_forwarding; /* One of FORWARD_* */
135 int allow_streamlocal_forwarding; /* One of FORWARD_* */ 128 int allow_streamlocal_forwarding; /* One of FORWARD_* */
136 int allow_agent_forwarding; 129 int allow_agent_forwarding;
130 int disable_forwarding;
137 u_int num_allow_users; 131 u_int num_allow_users;
138 char *allow_users[MAX_ALLOW_USERS]; 132 char *allow_users[MAX_ALLOW_USERS];
139 u_int num_deny_users; 133 u_int num_deny_users;
diff --git a/serverloop.c b/serverloop.c
index c4e1d1d61..c4e4699da 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: serverloop.c,v 1.184 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: serverloop.c,v 1.189 2016/12/14 00:36:34 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -37,7 +37,6 @@
37 37
38#include "includes.h" 38#include "includes.h"
39 39
40#include <sys/param.h> /* MIN MAX */
41#include <sys/types.h> 40#include <sys/types.h>
42#include <sys/wait.h> 41#include <sys/wait.h>
43#include <sys/socket.h> 42#include <sys/socket.h>
@@ -67,7 +66,6 @@
67#include "sshpty.h" 66#include "sshpty.h"
68#include "channels.h" 67#include "channels.h"
69#include "compat.h" 68#include "compat.h"
70#include "ssh1.h"
71#include "ssh2.h" 69#include "ssh2.h"
72#include "key.h" 70#include "key.h"
73#include "cipher.h" 71#include "cipher.h"
@@ -86,25 +84,6 @@ extern ServerOptions options;
86extern Authctxt *the_authctxt; 84extern Authctxt *the_authctxt;
87extern int use_privsep; 85extern int use_privsep;
88 86
89static Buffer stdin_buffer; /* Buffer for stdin data. */
90static Buffer stdout_buffer; /* Buffer for stdout data. */
91static Buffer stderr_buffer; /* Buffer for stderr data. */
92static int fdin; /* Descriptor for stdin (for writing) */
93static int fdout; /* Descriptor for stdout (for reading);
94 May be same number as fdin. */
95static int fderr; /* Descriptor for stderr. May be -1. */
96static long stdin_bytes = 0; /* Number of bytes written to stdin. */
97static long stdout_bytes = 0; /* Number of stdout bytes sent to client. */
98static long stderr_bytes = 0; /* Number of stderr bytes sent to client. */
99static long fdout_bytes = 0; /* Number of stdout bytes read from program. */
100static int stdin_eof = 0; /* EOF message received from client. */
101static int fdout_eof = 0; /* EOF encountered reading from fdout. */
102static int fderr_eof = 0; /* EOF encountered readung from fderr. */
103static int fdin_is_tty = 0; /* fdin points to a tty. */
104static int connection_in; /* Connection to client (input). */
105static int connection_out; /* Connection to client (output). */
106static int connection_closed = 0; /* Connection to client closed. */
107static u_int buffer_high; /* "Soft" max buffer size. */
108static int no_more_sessions = 0; /* Disallow further sessions. */ 87static int no_more_sessions = 0; /* Disallow further sessions. */
109 88
110/* 89/*
@@ -185,64 +164,6 @@ sigterm_handler(int sig)
185 received_sigterm = sig; 164 received_sigterm = sig;
186} 165}
187 166
188/*
189 * Make packets from buffered stderr data, and buffer it for sending
190 * to the client.
191 */
192static void
193make_packets_from_stderr_data(void)
194{
195 u_int len;
196
197 /* Send buffered stderr data to the client. */
198 while (buffer_len(&stderr_buffer) > 0 &&
199 packet_not_very_much_data_to_write()) {
200 len = buffer_len(&stderr_buffer);
201 if (packet_is_interactive()) {
202 if (len > 512)
203 len = 512;
204 } else {
205 /* Keep the packets at reasonable size. */
206 if (len > packet_get_maxsize())
207 len = packet_get_maxsize();
208 }
209 packet_start(SSH_SMSG_STDERR_DATA);
210 packet_put_string(buffer_ptr(&stderr_buffer), len);
211 packet_send();
212 buffer_consume(&stderr_buffer, len);
213 stderr_bytes += len;
214 }
215}
216
217/*
218 * Make packets from buffered stdout data, and buffer it for sending to the
219 * client.
220 */
221static void
222make_packets_from_stdout_data(void)
223{
224 u_int len;
225
226 /* Send buffered stdout data to the client. */
227 while (buffer_len(&stdout_buffer) > 0 &&
228 packet_not_very_much_data_to_write()) {
229 len = buffer_len(&stdout_buffer);
230 if (packet_is_interactive()) {
231 if (len > 512)
232 len = 512;
233 } else {
234 /* Keep the packets at reasonable size. */
235 if (len > packet_get_maxsize())
236 len = packet_get_maxsize();
237 }
238 packet_start(SSH_SMSG_STDOUT_DATA);
239 packet_put_string(buffer_ptr(&stdout_buffer), len);
240 packet_send();
241 buffer_consume(&stdout_buffer, len);
242 stdout_bytes += len;
243 }
244}
245
246static void 167static void
247client_alive_check(void) 168client_alive_check(void)
248{ 169{
@@ -275,14 +196,14 @@ client_alive_check(void)
275 * for the duration of the wait (0 = infinite). 196 * for the duration of the wait (0 = infinite).
276 */ 197 */
277static void 198static void
278wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp, 199wait_until_can_do_something(int connection_in, int connection_out,
200 fd_set **readsetp, fd_set **writesetp, int *maxfdp,
279 u_int *nallocp, u_int64_t max_time_ms) 201 u_int *nallocp, u_int64_t max_time_ms)
280{ 202{
281 struct timeval tv, *tvp; 203 struct timeval tv, *tvp;
282 int ret; 204 int ret;
283 time_t minwait_secs = 0; 205 time_t minwait_secs = 0;
284 int client_alive_scheduled = 0; 206 int client_alive_scheduled = 0;
285 int program_alive_scheduled = 0;
286 207
287 /* Allocate and update select() masks for channel descriptors. */ 208 /* Allocate and update select() masks for channel descriptors. */
288 channel_prepare_select(readsetp, writesetp, maxfdp, nallocp, 209 channel_prepare_select(readsetp, writesetp, maxfdp, nallocp,
@@ -290,7 +211,7 @@ wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
290 211
291 /* XXX need proper deadline system for rekey/client alive */ 212 /* XXX need proper deadline system for rekey/client alive */
292 if (minwait_secs != 0) 213 if (minwait_secs != 0)
293 max_time_ms = MIN(max_time_ms, (u_int)minwait_secs * 1000); 214 max_time_ms = MINIMUM(max_time_ms, (u_int)minwait_secs * 1000);
294 215
295 /* 216 /*
296 * if using client_alive, set the max timeout accordingly, 217 * if using client_alive, set the max timeout accordingly,
@@ -300,7 +221,7 @@ wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
300 * this could be randomized somewhat to make traffic 221 * this could be randomized somewhat to make traffic
301 * analysis more difficult, but we're not doing it yet. 222 * analysis more difficult, but we're not doing it yet.
302 */ 223 */
303 if (compat20 && options.client_alive_interval) { 224 if (options.client_alive_interval) {
304 uint64_t keepalive_ms = 225 uint64_t keepalive_ms =
305 (uint64_t)options.client_alive_interval * 1000; 226 (uint64_t)options.client_alive_interval * 1000;
306 227
@@ -309,38 +230,11 @@ wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
309 max_time_ms = keepalive_ms; 230 max_time_ms = keepalive_ms;
310 } 231 }
311 232
312 if (compat20) {
313#if 0 233#if 0
314 /* wrong: bad condition XXX */ 234 /* wrong: bad condition XXX */
315 if (channel_not_very_much_buffered_data()) 235 if (channel_not_very_much_buffered_data())
316#endif 236#endif
317 FD_SET(connection_in, *readsetp); 237 FD_SET(connection_in, *readsetp);
318 } else {
319 /*
320 * Read packets from the client unless we have too much
321 * buffered stdin or channel data.
322 */
323 if (buffer_len(&stdin_buffer) < buffer_high &&
324 channel_not_very_much_buffered_data())
325 FD_SET(connection_in, *readsetp);
326 /*
327 * If there is not too much data already buffered going to
328 * the client, try to get some more data from the program.
329 */
330 if (packet_not_very_much_data_to_write()) {
331 program_alive_scheduled = child_terminated;
332 if (!fdout_eof)
333 FD_SET(fdout, *readsetp);
334 if (!fderr_eof)
335 FD_SET(fderr, *readsetp);
336 }
337 /*
338 * If we have buffered data, try to write some of that data
339 * to the program.
340 */
341 if (fdin != -1 && buffer_len(&stdin_buffer) > 0)
342 FD_SET(fdin, *writesetp);
343 }
344 notify_prepare(*readsetp); 238 notify_prepare(*readsetp);
345 239
346 /* 240 /*
@@ -374,16 +268,8 @@ wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
374 memset(*writesetp, 0, *nallocp); 268 memset(*writesetp, 0, *nallocp);
375 if (errno != EINTR) 269 if (errno != EINTR)
376 error("select: %.100s", strerror(errno)); 270 error("select: %.100s", strerror(errno));
377 } else { 271 } else if (ret == 0 && client_alive_scheduled)
378 if (ret == 0 && client_alive_scheduled) 272 client_alive_check();
379 client_alive_check();
380 if (!compat20 && program_alive_scheduled && fdin_is_tty) {
381 if (!fdout_eof)
382 FD_SET(fdout, *readsetp);
383 if (!fderr_eof)
384 FD_SET(fderr, *readsetp);
385 }
386 }
387 273
388 notify_done(*readsetp); 274 notify_done(*readsetp);
389} 275}
@@ -392,8 +278,8 @@ wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
392 * Processes input from the client and the program. Input data is stored 278 * Processes input from the client and the program. Input data is stored
393 * in buffers and processed later. 279 * in buffers and processed later.
394 */ 280 */
395static void 281static int
396process_input(fd_set *readset) 282process_input(fd_set *readset, int connection_in)
397{ 283{
398 struct ssh *ssh = active_state; /* XXX */ 284 struct ssh *ssh = active_state; /* XXX */
399 int len; 285 int len;
@@ -405,10 +291,7 @@ process_input(fd_set *readset)
405 if (len == 0) { 291 if (len == 0) {
406 verbose("Connection closed by %.100s port %d", 292 verbose("Connection closed by %.100s port %d",
407 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh)); 293 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh));
408 connection_closed = 1; 294 return -1;
409 if (compat20)
410 return;
411 cleanup_exit(255);
412 } else if (len < 0) { 295 } else if (len < 0) {
413 if (errno != EINTR && errno != EAGAIN && 296 if (errno != EINTR && errno != EAGAIN &&
414 errno != EWOULDBLOCK) { 297 errno != EWOULDBLOCK) {
@@ -423,381 +306,26 @@ process_input(fd_set *readset)
423 packet_process_incoming(buf, len); 306 packet_process_incoming(buf, len);
424 } 307 }
425 } 308 }
426 if (compat20) 309 return 0;
427 return;
428
429 /* Read and buffer any available stdout data from the program. */
430 if (!fdout_eof && FD_ISSET(fdout, readset)) {
431 errno = 0;
432 len = read(fdout, buf, sizeof(buf));
433 if (len < 0 && (errno == EINTR || ((errno == EAGAIN ||
434 errno == EWOULDBLOCK) && !child_terminated))) {
435 /* do nothing */
436#ifndef PTY_ZEROREAD
437 } else if (len <= 0) {
438#else
439 } else if ((!isatty(fdout) && len <= 0) ||
440 (isatty(fdout) && (len < 0 || (len == 0 && errno != 0)))) {
441#endif
442 fdout_eof = 1;
443 } else {
444 buffer_append(&stdout_buffer, buf, len);
445 fdout_bytes += len;
446 }
447 }
448 /* Read and buffer any available stderr data from the program. */
449 if (!fderr_eof && FD_ISSET(fderr, readset)) {
450 errno = 0;
451 len = read(fderr, buf, sizeof(buf));
452 if (len < 0 && (errno == EINTR || ((errno == EAGAIN ||
453 errno == EWOULDBLOCK) && !child_terminated))) {
454 /* do nothing */
455#ifndef PTY_ZEROREAD
456 } else if (len <= 0) {
457#else
458 } else if ((!isatty(fderr) && len <= 0) ||
459 (isatty(fderr) && (len < 0 || (len == 0 && errno != 0)))) {
460#endif
461 fderr_eof = 1;
462 } else {
463 buffer_append(&stderr_buffer, buf, len);
464 }
465 }
466} 310}
467 311
468/* 312/*
469 * Sends data from internal buffers to client program stdin. 313 * Sends data from internal buffers to client program stdin.
470 */ 314 */
471static void 315static void
472process_output(fd_set *writeset) 316process_output(fd_set *writeset, int connection_out)
473{ 317{
474 struct termios tio;
475 u_char *data;
476 u_int dlen;
477 int len;
478
479 /* Write buffered data to program stdin. */
480 if (!compat20 && fdin != -1 && FD_ISSET(fdin, writeset)) {
481 data = buffer_ptr(&stdin_buffer);
482 dlen = buffer_len(&stdin_buffer);
483 len = write(fdin, data, dlen);
484 if (len < 0 &&
485 (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)) {
486 /* do nothing */
487 } else if (len <= 0) {
488 if (fdin != fdout)
489 close(fdin);
490 else
491 shutdown(fdin, SHUT_WR); /* We will no longer send. */
492 fdin = -1;
493 } else {
494 /* Successful write. */
495 if (fdin_is_tty && dlen >= 1 && data[0] != '\r' &&
496 tcgetattr(fdin, &tio) == 0 &&
497 !(tio.c_lflag & ECHO) && (tio.c_lflag & ICANON)) {
498 /*
499 * Simulate echo to reduce the impact of
500 * traffic analysis
501 */
502 packet_send_ignore(len);
503 packet_send();
504 }
505 /* Consume the data from the buffer. */
506 buffer_consume(&stdin_buffer, len);
507 /* Update the count of bytes written to the program. */
508 stdin_bytes += len;
509 }
510 }
511 /* Send any buffered packet data to the client. */ 318 /* Send any buffered packet data to the client. */
512 if (FD_ISSET(connection_out, writeset)) 319 if (FD_ISSET(connection_out, writeset))
513 packet_write_poll(); 320 packet_write_poll();
514} 321}
515 322
516/*
517 * Wait until all buffered output has been sent to the client.
518 * This is used when the program terminates.
519 */
520static void
521drain_output(void)
522{
523 /* Send any buffered stdout data to the client. */
524 if (buffer_len(&stdout_buffer) > 0) {
525 packet_start(SSH_SMSG_STDOUT_DATA);
526 packet_put_string(buffer_ptr(&stdout_buffer),
527 buffer_len(&stdout_buffer));
528 packet_send();
529 /* Update the count of sent bytes. */
530 stdout_bytes += buffer_len(&stdout_buffer);
531 }
532 /* Send any buffered stderr data to the client. */
533 if (buffer_len(&stderr_buffer) > 0) {
534 packet_start(SSH_SMSG_STDERR_DATA);
535 packet_put_string(buffer_ptr(&stderr_buffer),
536 buffer_len(&stderr_buffer));
537 packet_send();
538 /* Update the count of sent bytes. */
539 stderr_bytes += buffer_len(&stderr_buffer);
540 }
541 /* Wait until all buffered data has been written to the client. */
542 packet_write_wait();
543}
544
545static void 323static void
546process_buffered_input_packets(void) 324process_buffered_input_packets(void)
547{ 325{
548 dispatch_run(DISPATCH_NONBLOCK, NULL, active_state); 326 dispatch_run(DISPATCH_NONBLOCK, NULL, active_state);
549} 327}
550 328
551/*
552 * Performs the interactive session. This handles data transmission between
553 * the client and the program. Note that the notion of stdin, stdout, and
554 * stderr in this function is sort of reversed: this function writes to
555 * stdin (of the child program), and reads from stdout and stderr (of the
556 * child program).
557 */
558void
559server_loop(pid_t pid, int fdin_arg, int fdout_arg, int fderr_arg)
560{
561 fd_set *readset = NULL, *writeset = NULL;
562 int max_fd = 0;
563 u_int nalloc = 0;
564 int wait_status; /* Status returned by wait(). */
565 pid_t wait_pid; /* pid returned by wait(). */
566 int waiting_termination = 0; /* Have displayed waiting close message. */
567 u_int64_t max_time_milliseconds;
568 u_int previous_stdout_buffer_bytes;
569 u_int stdout_buffer_bytes;
570 int type;
571
572 debug("Entering interactive session.");
573
574 /* Initialize the SIGCHLD kludge. */
575 child_terminated = 0;
576 mysignal(SIGCHLD, sigchld_handler);
577
578 if (!use_privsep) {
579 signal(SIGTERM, sigterm_handler);
580 signal(SIGINT, sigterm_handler);
581 signal(SIGQUIT, sigterm_handler);
582 }
583
584 /* Initialize our global variables. */
585 fdin = fdin_arg;
586 fdout = fdout_arg;
587 fderr = fderr_arg;
588
589 /* nonblocking IO */
590 set_nonblock(fdin);
591 set_nonblock(fdout);
592 /* we don't have stderr for interactive terminal sessions, see below */
593 if (fderr != -1)
594 set_nonblock(fderr);
595
596 if (!(datafellows & SSH_BUG_IGNOREMSG) && isatty(fdin))
597 fdin_is_tty = 1;
598
599 connection_in = packet_get_connection_in();
600 connection_out = packet_get_connection_out();
601
602 notify_setup();
603
604 previous_stdout_buffer_bytes = 0;
605
606 /* Set approximate I/O buffer size. */
607 if (packet_is_interactive())
608 buffer_high = 4096;
609 else
610 buffer_high = 64 * 1024;
611
612#if 0
613 /* Initialize max_fd to the maximum of the known file descriptors. */
614 max_fd = MAX(connection_in, connection_out);
615 max_fd = MAX(max_fd, fdin);
616 max_fd = MAX(max_fd, fdout);
617 if (fderr != -1)
618 max_fd = MAX(max_fd, fderr);
619#endif
620
621 /* Initialize Initialize buffers. */
622 buffer_init(&stdin_buffer);
623 buffer_init(&stdout_buffer);
624 buffer_init(&stderr_buffer);
625
626 /*
627 * If we have no separate fderr (which is the case when we have a pty
628 * - there we cannot make difference between data sent to stdout and
629 * stderr), indicate that we have seen an EOF from stderr. This way
630 * we don't need to check the descriptor everywhere.
631 */
632 if (fderr == -1)
633 fderr_eof = 1;
634
635 server_init_dispatch();
636
637 /* Main loop of the server for the interactive session mode. */
638 for (;;) {
639
640 /* Process buffered packets from the client. */
641 process_buffered_input_packets();
642
643 /*
644 * If we have received eof, and there is no more pending
645 * input data, cause a real eof by closing fdin.
646 */
647 if (stdin_eof && fdin != -1 && buffer_len(&stdin_buffer) == 0) {
648 if (fdin != fdout)
649 close(fdin);
650 else
651 shutdown(fdin, SHUT_WR); /* We will no longer send. */
652 fdin = -1;
653 }
654 /* Make packets from buffered stderr data to send to the client. */
655 make_packets_from_stderr_data();
656
657 /*
658 * Make packets from buffered stdout data to send to the
659 * client. If there is very little to send, this arranges to
660 * not send them now, but to wait a short while to see if we
661 * are getting more data. This is necessary, as some systems
662 * wake up readers from a pty after each separate character.
663 */
664 max_time_milliseconds = 0;
665 stdout_buffer_bytes = buffer_len(&stdout_buffer);
666 if (stdout_buffer_bytes != 0 && stdout_buffer_bytes < 256 &&
667 stdout_buffer_bytes != previous_stdout_buffer_bytes) {
668 /* try again after a while */
669 max_time_milliseconds = 10;
670 } else {
671 /* Send it now. */
672 make_packets_from_stdout_data();
673 }
674 previous_stdout_buffer_bytes = buffer_len(&stdout_buffer);
675
676 /* Send channel data to the client. */
677 if (packet_not_very_much_data_to_write())
678 channel_output_poll();
679
680 /*
681 * Bail out of the loop if the program has closed its output
682 * descriptors, and we have no more data to send to the
683 * client, and there is no pending buffered data.
684 */
685 if (fdout_eof && fderr_eof && !packet_have_data_to_write() &&
686 buffer_len(&stdout_buffer) == 0 && buffer_len(&stderr_buffer) == 0) {
687 if (!channel_still_open())
688 break;
689 if (!waiting_termination) {
690 const char *s = "Waiting for forwarded connections to terminate... (press ~& to background)\r\n";
691 char *cp;
692 waiting_termination = 1;
693 buffer_append(&stderr_buffer, s, strlen(s));
694
695 /* Display list of open channels. */
696 cp = channel_open_message();
697 buffer_append(&stderr_buffer, cp, strlen(cp));
698 free(cp);
699 }
700 }
701 max_fd = MAX(connection_in, connection_out);
702 max_fd = MAX(max_fd, fdin);
703 max_fd = MAX(max_fd, fdout);
704 max_fd = MAX(max_fd, fderr);
705 max_fd = MAX(max_fd, notify_pipe[0]);
706
707 /* Sleep in select() until we can do something. */
708 wait_until_can_do_something(&readset, &writeset, &max_fd,
709 &nalloc, max_time_milliseconds);
710
711 if (received_sigterm) {
712 logit("Exiting on signal %d", (int)received_sigterm);
713 /* Clean up sessions, utmp, etc. */
714 cleanup_exit(255);
715 }
716
717 /* Process any channel events. */
718 channel_after_select(readset, writeset);
719
720 /* Process input from the client and from program stdout/stderr. */
721 process_input(readset);
722
723 /* Process output to the client and to program stdin. */
724 process_output(writeset);
725 }
726 free(readset);
727 free(writeset);
728
729 /* Cleanup and termination code. */
730
731 /* Wait until all output has been sent to the client. */
732 drain_output();
733
734 debug("End of interactive session; stdin %ld, stdout (read %ld, sent %ld), stderr %ld bytes.",
735 stdin_bytes, fdout_bytes, stdout_bytes, stderr_bytes);
736
737 /* Free and clear the buffers. */
738 buffer_free(&stdin_buffer);
739 buffer_free(&stdout_buffer);
740 buffer_free(&stderr_buffer);
741
742 /* Close the file descriptors. */
743 if (fdout != -1)
744 close(fdout);
745 fdout = -1;
746 fdout_eof = 1;
747 if (fderr != -1)
748 close(fderr);
749 fderr = -1;
750 fderr_eof = 1;
751 if (fdin != -1)
752 close(fdin);
753 fdin = -1;
754
755 channel_free_all();
756
757 /* We no longer want our SIGCHLD handler to be called. */
758 mysignal(SIGCHLD, SIG_DFL);
759
760 while ((wait_pid = waitpid(-1, &wait_status, 0)) < 0)
761 if (errno != EINTR)
762 packet_disconnect("wait: %.100s", strerror(errno));
763 if (wait_pid != pid)
764 error("Strange, wait returned pid %ld, expected %ld",
765 (long)wait_pid, (long)pid);
766
767 /* Check if it exited normally. */
768 if (WIFEXITED(wait_status)) {
769 /* Yes, normal exit. Get exit status and send it to the client. */
770 debug("Command exited with status %d.", WEXITSTATUS(wait_status));
771 packet_start(SSH_SMSG_EXITSTATUS);
772 packet_put_int(WEXITSTATUS(wait_status));
773 packet_send();
774 packet_write_wait();
775
776 /*
777 * Wait for exit confirmation. Note that there might be
778 * other packets coming before it; however, the program has
779 * already died so we just ignore them. The client is
780 * supposed to respond with the confirmation when it receives
781 * the exit status.
782 */
783 do {
784 type = packet_read();
785 }
786 while (type != SSH_CMSG_EXIT_CONFIRMATION);
787
788 debug("Received exit confirmation.");
789 return;
790 }
791 /* Check if the program terminated due to a signal. */
792 if (WIFSIGNALED(wait_status))
793 packet_disconnect("Command terminated on signal %d.",
794 WTERMSIG(wait_status));
795
796 /* Some weird exit cause. Just exit. */
797 packet_disconnect("wait returned status %04x.", wait_status);
798 /* NOTREACHED */
799}
800
801static void 329static void
802collect_children(void) 330collect_children(void)
803{ 331{
@@ -825,7 +353,7 @@ server_loop2(Authctxt *authctxt)
825{ 353{
826 fd_set *readset = NULL, *writeset = NULL; 354 fd_set *readset = NULL, *writeset = NULL;
827 int max_fd; 355 int max_fd;
828 u_int nalloc = 0; 356 u_int nalloc = 0, connection_in, connection_out;
829 u_int64_t rekey_timeout_ms = 0; 357 u_int64_t rekey_timeout_ms = 0;
830 358
831 debug("Entering interactive session for SSH2."); 359 debug("Entering interactive session for SSH2.");
@@ -843,8 +371,8 @@ server_loop2(Authctxt *authctxt)
843 371
844 notify_setup(); 372 notify_setup();
845 373
846 max_fd = MAX(connection_in, connection_out); 374 max_fd = MAXIMUM(connection_in, connection_out);
847 max_fd = MAX(max_fd, notify_pipe[0]); 375 max_fd = MAXIMUM(max_fd, notify_pipe[0]);
848 376
849 server_init_dispatch(); 377 server_init_dispatch();
850 378
@@ -854,14 +382,14 @@ server_loop2(Authctxt *authctxt)
854 if (!ssh_packet_is_rekeying(active_state) && 382 if (!ssh_packet_is_rekeying(active_state) &&
855 packet_not_very_much_data_to_write()) 383 packet_not_very_much_data_to_write())
856 channel_output_poll(); 384 channel_output_poll();
857 if (options.rekey_interval > 0 && compat20 && 385 if (options.rekey_interval > 0 &&
858 !ssh_packet_is_rekeying(active_state)) 386 !ssh_packet_is_rekeying(active_state))
859 rekey_timeout_ms = packet_get_rekey_timeout() * 1000; 387 rekey_timeout_ms = packet_get_rekey_timeout() * 1000;
860 else 388 else
861 rekey_timeout_ms = 0; 389 rekey_timeout_ms = 0;
862 390
863 wait_until_can_do_something(&readset, &writeset, &max_fd, 391 wait_until_can_do_something(connection_in, connection_out,
864 &nalloc, rekey_timeout_ms); 392 &readset, &writeset, &max_fd, &nalloc, rekey_timeout_ms);
865 393
866 if (received_sigterm) { 394 if (received_sigterm) {
867 logit("Exiting on signal %d", (int)received_sigterm); 395 logit("Exiting on signal %d", (int)received_sigterm);
@@ -872,10 +400,9 @@ server_loop2(Authctxt *authctxt)
872 collect_children(); 400 collect_children();
873 if (!ssh_packet_is_rekeying(active_state)) 401 if (!ssh_packet_is_rekeying(active_state))
874 channel_after_select(readset, writeset); 402 channel_after_select(readset, writeset);
875 process_input(readset); 403 if (process_input(readset, connection_in) < 0)
876 if (connection_closed)
877 break; 404 break;
878 process_output(writeset); 405 process_output(writeset, connection_out);
879 } 406 }
880 collect_children(); 407 collect_children();
881 408
@@ -902,53 +429,6 @@ server_input_keep_alive(int type, u_int32_t seq, void *ctxt)
902 return 0; 429 return 0;
903} 430}
904 431
905static int
906server_input_stdin_data(int type, u_int32_t seq, void *ctxt)
907{
908 char *data;
909 u_int data_len;
910
911 /* Stdin data from the client. Append it to the buffer. */
912 /* Ignore any data if the client has closed stdin. */
913 if (fdin == -1)
914 return 0;
915 data = packet_get_string(&data_len);
916 packet_check_eom();
917 buffer_append(&stdin_buffer, data, data_len);
918 explicit_bzero(data, data_len);
919 free(data);
920 return 0;
921}
922
923static int
924server_input_eof(int type, u_int32_t seq, void *ctxt)
925{
926 /*
927 * Eof from the client. The stdin descriptor to the
928 * program will be closed when all buffered data has
929 * drained.
930 */
931 debug("EOF received for stdin.");
932 packet_check_eom();
933 stdin_eof = 1;
934 return 0;
935}
936
937static int
938server_input_window_size(int type, u_int32_t seq, void *ctxt)
939{
940 u_int row = packet_get_int();
941 u_int col = packet_get_int();
942 u_int xpixel = packet_get_int();
943 u_int ypixel = packet_get_int();
944
945 debug("Window change received.");
946 packet_check_eom();
947 if (fdin != -1)
948 pty_change_window_size(fdin, row, col, xpixel, ypixel);
949 return 0;
950}
951
952static Channel * 432static Channel *
953server_request_direct_tcpip(void) 433server_request_direct_tcpip(void)
954{ 434{
@@ -967,7 +447,7 @@ server_request_direct_tcpip(void)
967 447
968 /* XXX fine grained permissions */ 448 /* XXX fine grained permissions */
969 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0 && 449 if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0 &&
970 !no_port_forwarding_flag) { 450 !no_port_forwarding_flag && !options.disable_forwarding) {
971 c = channel_connect_to_port(target, target_port, 451 c = channel_connect_to_port(target, target_port,
972 "direct-tcpip", "direct-tcpip"); 452 "direct-tcpip", "direct-tcpip");
973 } else { 453 } else {
@@ -999,7 +479,8 @@ server_request_direct_streamlocal(void)
999 479
1000 /* XXX fine grained permissions */ 480 /* XXX fine grained permissions */
1001 if ((options.allow_streamlocal_forwarding & FORWARD_LOCAL) != 0 && 481 if ((options.allow_streamlocal_forwarding & FORWARD_LOCAL) != 0 &&
1002 !no_port_forwarding_flag) { 482 !no_port_forwarding_flag && !options.disable_forwarding &&
483 use_privsep) {
1003 c = channel_connect_to_path(target, 484 c = channel_connect_to_path(target,
1004 "direct-streamlocal@openssh.com", "direct-streamlocal"); 485 "direct-streamlocal@openssh.com", "direct-streamlocal");
1005 } else { 486 } else {
@@ -1242,10 +723,10 @@ server_input_global_request(int type, u_int32_t seq, void *ctxt)
1242 723
1243 /* check permissions */ 724 /* check permissions */
1244 if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0 || 725 if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0 ||
1245 no_port_forwarding_flag || 726 no_port_forwarding_flag || options.disable_forwarding ||
1246 (!want_reply && fwd.listen_port == 0) || 727 (!want_reply && fwd.listen_port == 0) ||
1247 (fwd.listen_port != 0 && fwd.listen_port < IPPORT_RESERVED && 728 (fwd.listen_port != 0 &&
1248 pw->pw_uid != 0)) { 729 !bind_permitted(fwd.listen_port, pw->pw_uid))) {
1249 success = 0; 730 success = 0;
1250 packet_send_debug("Server has disabled port forwarding."); 731 packet_send_debug("Server has disabled port forwarding.");
1251 } else { 732 } else {
@@ -1280,7 +761,8 @@ server_input_global_request(int type, u_int32_t seq, void *ctxt)
1280 761
1281 /* check permissions */ 762 /* check permissions */
1282 if ((options.allow_streamlocal_forwarding & FORWARD_REMOTE) == 0 763 if ((options.allow_streamlocal_forwarding & FORWARD_REMOTE) == 0
1283 || no_port_forwarding_flag) { 764 || no_port_forwarding_flag || options.disable_forwarding ||
765 !use_privsep) {
1284 success = 0; 766 success = 0;
1285 packet_send_debug("Server has disabled port forwarding."); 767 packet_send_debug("Server has disabled port forwarding.");
1286 } else { 768 } else {
@@ -1353,9 +835,9 @@ server_input_channel_req(int type, u_int32_t seq, void *ctxt)
1353} 835}
1354 836
1355static void 837static void
1356server_init_dispatch_20(void) 838server_init_dispatch(void)
1357{ 839{
1358 debug("server_init_dispatch_20"); 840 debug("server_init_dispatch");
1359 dispatch_init(&dispatch_protocol_error); 841 dispatch_init(&dispatch_protocol_error);
1360 dispatch_set(SSH2_MSG_CHANNEL_CLOSE, &channel_input_oclose); 842 dispatch_set(SSH2_MSG_CHANNEL_CLOSE, &channel_input_oclose);
1361 dispatch_set(SSH2_MSG_CHANNEL_DATA, &channel_input_data); 843 dispatch_set(SSH2_MSG_CHANNEL_DATA, &channel_input_data);
@@ -1375,36 +857,3 @@ server_init_dispatch_20(void)
1375 /* rekeying */ 857 /* rekeying */
1376 dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit); 858 dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit);
1377} 859}
1378static void
1379server_init_dispatch_13(void)
1380{
1381 debug("server_init_dispatch_13");
1382 dispatch_init(NULL);
1383 dispatch_set(SSH_CMSG_EOF, &server_input_eof);
1384 dispatch_set(SSH_CMSG_STDIN_DATA, &server_input_stdin_data);
1385 dispatch_set(SSH_CMSG_WINDOW_SIZE, &server_input_window_size);
1386 dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_close);
1387 dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, &channel_input_close_confirmation);
1388 dispatch_set(SSH_MSG_CHANNEL_DATA, &channel_input_data);
1389 dispatch_set(SSH_MSG_CHANNEL_OPEN_CONFIRMATION, &channel_input_open_confirmation);
1390 dispatch_set(SSH_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure);
1391 dispatch_set(SSH_MSG_PORT_OPEN, &channel_input_port_open);
1392}
1393static void
1394server_init_dispatch_15(void)
1395{
1396 server_init_dispatch_13();
1397 debug("server_init_dispatch_15");
1398 dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_ieof);
1399 dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, &channel_input_oclose);
1400}
1401static void
1402server_init_dispatch(void)
1403{
1404 if (compat20)
1405 server_init_dispatch_20();
1406 else if (compat13)
1407 server_init_dispatch_13();
1408 else
1409 server_init_dispatch_15();
1410}
diff --git a/serverloop.h b/serverloop.h
index 7311558f9..d5fbda16f 100644
--- a/serverloop.h
+++ b/serverloop.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: serverloop.h,v 1.6 2006/03/25 22:22:43 djm Exp $ */ 1/* $OpenBSD: serverloop.h,v 1.7 2016/08/13 17:47:41 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -21,7 +21,6 @@
21#ifndef SERVERLOOP_H 21#ifndef SERVERLOOP_H
22#define SERVERLOOP_H 22#define SERVERLOOP_H
23 23
24void server_loop(pid_t, int, int, int);
25void server_loop2(Authctxt *); 24void server_loop2(Authctxt *);
26 25
27#endif 26#endif
diff --git a/session.c b/session.c
index 6dfcf842f..ea3871eb8 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.282 2016/03/10 11:47:57 djm Exp $ */ 1/* $OpenBSD: session.c,v 1.286 2016/11/30 03:00:05 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -66,7 +66,6 @@
66#include "openbsd-compat/sys-queue.h" 66#include "openbsd-compat/sys-queue.h"
67#include "xmalloc.h" 67#include "xmalloc.h"
68#include "ssh.h" 68#include "ssh.h"
69#include "ssh1.h"
70#include "ssh2.h" 69#include "ssh2.h"
71#include "sshpty.h" 70#include "sshpty.h"
72#include "packet.h" 71#include "packet.h"
@@ -128,7 +127,6 @@ void do_child(Session *, const char *);
128void do_motd(void); 127void do_motd(void);
129int check_quietlogin(Session *, const char *); 128int check_quietlogin(Session *, const char *);
130 129
131static void do_authenticated1(Authctxt *);
132static void do_authenticated2(Authctxt *); 130static void do_authenticated2(Authctxt *);
133 131
134static int session_pty_req(Session *); 132static int session_pty_req(Session *);
@@ -259,7 +257,7 @@ do_authenticated(Authctxt *authctxt)
259 257
260 /* setup the channel layer */ 258 /* setup the channel layer */
261 /* XXX - streamlocal? */ 259 /* XXX - streamlocal? */
262 if (no_port_forwarding_flag || 260 if (no_port_forwarding_flag || options.disable_forwarding ||
263 (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) 261 (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0)
264 channel_disable_adm_local_opens(); 262 channel_disable_adm_local_opens();
265 else 263 else
@@ -267,11 +265,7 @@ do_authenticated(Authctxt *authctxt)
267 265
268 auth_debug_send(); 266 auth_debug_send();
269 267
270 if (compat20) 268 do_authenticated2(authctxt);
271 do_authenticated2(authctxt);
272 else
273 do_authenticated1(authctxt);
274
275 do_cleanup(authctxt); 269 do_cleanup(authctxt);
276} 270}
277 271
@@ -290,164 +284,6 @@ xauth_valid_string(const char *s)
290 return 1; 284 return 1;
291} 285}
292 286
293/*
294 * Prepares for an interactive session. This is called after the user has
295 * been successfully authenticated. During this message exchange, pseudo
296 * terminals are allocated, X11, TCP/IP, and authentication agent forwardings
297 * are requested, etc.
298 */
299static void
300do_authenticated1(Authctxt *authctxt)
301{
302 Session *s;
303 char *command;
304 int success, type, screen_flag;
305 int enable_compression_after_reply = 0;
306 u_int proto_len, data_len, dlen, compression_level = 0;
307
308 s = session_new();
309 if (s == NULL) {
310 error("no more sessions");
311 return;
312 }
313 s->authctxt = authctxt;
314 s->pw = authctxt->pw;
315
316 /*
317 * We stay in this loop until the client requests to execute a shell
318 * or a command.
319 */
320 for (;;) {
321 success = 0;
322
323 /* Get a packet from the client. */
324 type = packet_read();
325
326 /* Process the packet. */
327 switch (type) {
328 case SSH_CMSG_REQUEST_COMPRESSION:
329 compression_level = packet_get_int();
330 packet_check_eom();
331 if (compression_level < 1 || compression_level > 9) {
332 packet_send_debug("Received invalid compression level %d.",
333 compression_level);
334 break;
335 }
336 if (options.compression == COMP_NONE) {
337 debug2("compression disabled");
338 break;
339 }
340 /* Enable compression after we have responded with SUCCESS. */
341 enable_compression_after_reply = 1;
342 success = 1;
343 break;
344
345 case SSH_CMSG_REQUEST_PTY:
346 success = session_pty_req(s);
347 break;
348
349 case SSH_CMSG_X11_REQUEST_FORWARDING:
350 s->auth_proto = packet_get_string(&proto_len);
351 s->auth_data = packet_get_string(&data_len);
352
353 screen_flag = packet_get_protocol_flags() &
354 SSH_PROTOFLAG_SCREEN_NUMBER;
355 debug2("SSH_PROTOFLAG_SCREEN_NUMBER: %d", screen_flag);
356
357 if (packet_remaining() == 4) {
358 if (!screen_flag)
359 debug2("Buggy client: "
360 "X11 screen flag missing");
361 s->screen = packet_get_int();
362 } else {
363 s->screen = 0;
364 }
365 packet_check_eom();
366 if (xauth_valid_string(s->auth_proto) &&
367 xauth_valid_string(s->auth_data))
368 success = session_setup_x11fwd(s);
369 else {
370 success = 0;
371 error("Invalid X11 forwarding data");
372 }
373 if (!success) {
374 free(s->auth_proto);
375 free(s->auth_data);
376 s->auth_proto = NULL;
377 s->auth_data = NULL;
378 }
379 break;
380
381 case SSH_CMSG_AGENT_REQUEST_FORWARDING:
382 if (!options.allow_agent_forwarding ||
383 no_agent_forwarding_flag || compat13) {
384 debug("Authentication agent forwarding not permitted for this authentication.");
385 break;
386 }
387 debug("Received authentication agent forwarding request.");
388 success = auth_input_request_forwarding(s->pw);
389 break;
390
391 case SSH_CMSG_PORT_FORWARD_REQUEST:
392 if (no_port_forwarding_flag) {
393 debug("Port forwarding not permitted for this authentication.");
394 break;
395 }
396 if (!(options.allow_tcp_forwarding & FORWARD_REMOTE)) {
397 debug("Port forwarding not permitted.");
398 break;
399 }
400 debug("Received TCP/IP port forwarding request.");
401 if (channel_input_port_forward_request(s->pw->pw_uid == 0,
402 &options.fwd_opts) < 0) {
403 debug("Port forwarding failed.");
404 break;
405 }
406 success = 1;
407 break;
408
409 case SSH_CMSG_MAX_PACKET_SIZE:
410 if (packet_set_maxsize(packet_get_int()) > 0)
411 success = 1;
412 break;
413
414 case SSH_CMSG_EXEC_SHELL:
415 case SSH_CMSG_EXEC_CMD:
416 if (type == SSH_CMSG_EXEC_CMD) {
417 command = packet_get_string(&dlen);
418 debug("Exec command '%.500s'", command);
419 if (do_exec(s, command) != 0)
420 packet_disconnect(
421 "command execution failed");
422 free(command);
423 } else {
424 if (do_exec(s, NULL) != 0)
425 packet_disconnect(
426 "shell execution failed");
427 }
428 packet_check_eom();
429 session_close(s);
430 return;
431
432 default:
433 /*
434 * Any unknown messages in this phase are ignored,
435 * and a failure message is returned.
436 */
437 logit("Unknown packet type received after authentication: %d", type);
438 }
439 packet_start(success ? SSH_SMSG_SUCCESS : SSH_SMSG_FAILURE);
440 packet_send();
441 packet_write_wait();
442
443 /* Enable compression now that we have replied if appropriate. */
444 if (enable_compression_after_reply) {
445 enable_compression_after_reply = 0;
446 packet_start_compression(compression_level);
447 }
448 }
449}
450
451#define USE_PIPES 1 287#define USE_PIPES 1
452/* 288/*
453 * This is called to fork and execute a command when we have no tty. This 289 * This is called to fork and execute a command when we have no tty. This
@@ -615,14 +451,8 @@ do_exec_no_pty(Session *s, const char *command)
615 close(pout[1]); 451 close(pout[1]);
616 close(perr[1]); 452 close(perr[1]);
617 453
618 if (compat20) { 454 session_set_fds(s, pin[1], pout[0], perr[0],
619 session_set_fds(s, pin[1], pout[0], perr[0], 455 s->is_subsystem, 0);
620 s->is_subsystem, 0);
621 } else {
622 /* Enter the interactive session. */
623 server_loop(pid, pin[1], pout[0], perr[0]);
624 /* server_loop has closed pin[1], pout[0], and perr[0]. */
625 }
626#else 456#else
627 /* We are the parent. Close the child sides of the socket pairs. */ 457 /* We are the parent. Close the child sides of the socket pairs. */
628 close(inout[0]); 458 close(inout[0]);
@@ -632,13 +462,8 @@ do_exec_no_pty(Session *s, const char *command)
632 * Enter the interactive session. Note: server_loop must be able to 462 * Enter the interactive session. Note: server_loop must be able to
633 * handle the case that fdin and fdout are the same. 463 * handle the case that fdin and fdout are the same.
634 */ 464 */
635 if (compat20) { 465 session_set_fds(s, inout[1], inout[1], err[1],
636 session_set_fds(s, inout[1], inout[1], err[1], 466 s->is_subsystem, 0);
637 s->is_subsystem, 0);
638 } else {
639 server_loop(pid, inout[1], inout[1], err[1]);
640 /* server_loop has closed inout[1] and err[1]. */
641 }
642#endif 467#endif
643 return 0; 468 return 0;
644} 469}
@@ -718,17 +543,11 @@ do_exec_pty(Session *s, const char *command)
718 close(ttyfd); 543 close(ttyfd);
719 544
720 /* record login, etc. similar to login(1) */ 545 /* record login, etc. similar to login(1) */
721#ifndef HAVE_OSF_SIA
722 if (!(options.use_login && command == NULL)) {
723#ifdef _UNICOS 546#ifdef _UNICOS
724 cray_init_job(s->pw); /* set up cray jid and tmpdir */ 547 cray_init_job(s->pw); /* set up cray jid and tmpdir */
725#endif /* _UNICOS */ 548#endif /* _UNICOS */
726 do_login(s, command); 549#ifndef HAVE_OSF_SIA
727 } 550 do_login(s, command);
728# ifdef LOGIN_NEEDS_UTMPX
729 else
730 do_pre_login(s);
731# endif
732#endif 551#endif
733 /* 552 /*
734 * Do common processing for the child, such as execing 553 * Do common processing for the child, such as execing
@@ -756,12 +575,7 @@ do_exec_pty(Session *s, const char *command)
756 s->ptymaster = ptymaster; 575 s->ptymaster = ptymaster;
757 packet_set_interactive(1, 576 packet_set_interactive(1,
758 options.ip_qos_interactive, options.ip_qos_bulk); 577 options.ip_qos_interactive, options.ip_qos_bulk);
759 if (compat20) { 578 session_set_fds(s, ptyfd, fdout, -1, 1, 1);
760 session_set_fds(s, ptyfd, fdout, -1, 1, 1);
761 } else {
762 server_loop(pid, ptyfd, fdout, -1);
763 /* server_loop _has_ closed ptyfd and fdout. */
764 }
765 return 0; 579 return 0;
766} 580}
767 581
@@ -1199,69 +1013,63 @@ do_setup_env(Session *s, const char *shell)
1199 ssh_gssapi_do_child(&env, &envsize); 1013 ssh_gssapi_do_child(&env, &envsize);
1200#endif 1014#endif
1201 1015
1202 if (!options.use_login) { 1016 /* Set basic environment. */
1203 /* Set basic environment. */ 1017 for (i = 0; i < s->num_env; i++)
1204 for (i = 0; i < s->num_env; i++) 1018 child_set_env(&env, &envsize, s->env[i].name, s->env[i].val);
1205 child_set_env(&env, &envsize, s->env[i].name,
1206 s->env[i].val);
1207 1019
1208 child_set_env(&env, &envsize, "USER", pw->pw_name); 1020 child_set_env(&env, &envsize, "USER", pw->pw_name);
1209 child_set_env(&env, &envsize, "LOGNAME", pw->pw_name); 1021 child_set_env(&env, &envsize, "LOGNAME", pw->pw_name);
1210#ifdef _AIX 1022#ifdef _AIX
1211 child_set_env(&env, &envsize, "LOGIN", pw->pw_name); 1023 child_set_env(&env, &envsize, "LOGIN", pw->pw_name);
1212#endif 1024#endif
1213 child_set_env(&env, &envsize, "HOME", pw->pw_dir); 1025 child_set_env(&env, &envsize, "HOME", pw->pw_dir);
1214#ifdef HAVE_LOGIN_CAP 1026#ifdef HAVE_LOGIN_CAP
1215 if (setusercontext(lc, pw, pw->pw_uid, LOGIN_SETPATH) < 0) 1027 if (setusercontext(lc, pw, pw->pw_uid, LOGIN_SETPATH) < 0)
1216 child_set_env(&env, &envsize, "PATH", _PATH_STDPATH); 1028 child_set_env(&env, &envsize, "PATH", _PATH_STDPATH);
1217 else 1029 else
1218 child_set_env(&env, &envsize, "PATH", getenv("PATH")); 1030 child_set_env(&env, &envsize, "PATH", getenv("PATH"));
1219#else /* HAVE_LOGIN_CAP */ 1031#else /* HAVE_LOGIN_CAP */
1220# ifndef HAVE_CYGWIN 1032# ifndef HAVE_CYGWIN
1221 /* 1033 /*
1222 * There's no standard path on Windows. The path contains 1034 * There's no standard path on Windows. The path contains
1223 * important components pointing to the system directories, 1035 * important components pointing to the system directories,
1224 * needed for loading shared libraries. So the path better 1036 * needed for loading shared libraries. So the path better
1225 * remains intact here. 1037 * remains intact here.
1226 */ 1038 */
1227# ifdef HAVE_ETC_DEFAULT_LOGIN 1039# ifdef HAVE_ETC_DEFAULT_LOGIN
1228 read_etc_default_login(&env, &envsize, pw->pw_uid); 1040 read_etc_default_login(&env, &envsize, pw->pw_uid);
1229 path = child_get_env(env, "PATH"); 1041 path = child_get_env(env, "PATH");
1230# endif /* HAVE_ETC_DEFAULT_LOGIN */ 1042# endif /* HAVE_ETC_DEFAULT_LOGIN */
1231 if (path == NULL || *path == '\0') { 1043 if (path == NULL || *path == '\0') {
1232 child_set_env(&env, &envsize, "PATH", 1044 child_set_env(&env, &envsize, "PATH",
1233 s->pw->pw_uid == 0 ? 1045 s->pw->pw_uid == 0 ? SUPERUSER_PATH : _PATH_STDPATH);
1234 SUPERUSER_PATH : _PATH_STDPATH); 1046 }
1235 }
1236# endif /* HAVE_CYGWIN */ 1047# endif /* HAVE_CYGWIN */
1237#endif /* HAVE_LOGIN_CAP */ 1048#endif /* HAVE_LOGIN_CAP */
1238 1049
1239 snprintf(buf, sizeof buf, "%.200s/%.50s", 1050 snprintf(buf, sizeof buf, "%.200s/%.50s", _PATH_MAILDIR, pw->pw_name);
1240 _PATH_MAILDIR, pw->pw_name); 1051 child_set_env(&env, &envsize, "MAIL", buf);
1241 child_set_env(&env, &envsize, "MAIL", buf); 1052
1053 /* Normal systems set SHELL by default. */
1054 child_set_env(&env, &envsize, "SHELL", shell);
1242 1055
1243 /* Normal systems set SHELL by default. */
1244 child_set_env(&env, &envsize, "SHELL", shell);
1245 }
1246 if (getenv("TZ")) 1056 if (getenv("TZ"))
1247 child_set_env(&env, &envsize, "TZ", getenv("TZ")); 1057 child_set_env(&env, &envsize, "TZ", getenv("TZ"));
1248 1058
1249 /* Set custom environment options from RSA authentication. */ 1059 /* Set custom environment options from RSA authentication. */
1250 if (!options.use_login) { 1060 while (custom_environment) {
1251 while (custom_environment) { 1061 struct envstring *ce = custom_environment;
1252 struct envstring *ce = custom_environment; 1062 char *str = ce->s;
1253 char *str = ce->s; 1063
1254 1064 for (i = 0; str[i] != '=' && str[i]; i++)
1255 for (i = 0; str[i] != '=' && str[i]; i++) 1065 ;
1256 ; 1066 if (str[i] == '=') {
1257 if (str[i] == '=') { 1067 str[i] = 0;
1258 str[i] = 0; 1068 child_set_env(&env, &envsize, str, str + i + 1);
1259 child_set_env(&env, &envsize, str, str + i + 1);
1260 }
1261 custom_environment = ce->next;
1262 free(ce->s);
1263 free(ce);
1264 } 1069 }
1070 custom_environment = ce->next;
1071 free(ce->s);
1072 free(ce);
1265 } 1073 }
1266 1074
1267 /* SSH_CLIENT deprecated */ 1075 /* SSH_CLIENT deprecated */
@@ -1323,7 +1131,7 @@ do_setup_env(Session *s, const char *shell)
1323 * Pull in any environment variables that may have 1131 * Pull in any environment variables that may have
1324 * been set by PAM. 1132 * been set by PAM.
1325 */ 1133 */
1326 if (options.use_pam && !options.use_login) { 1134 if (options.use_pam) {
1327 char **p; 1135 char **p;
1328 1136
1329 p = fetch_pam_child_environment(); 1137 p = fetch_pam_child_environment();
@@ -1341,7 +1149,7 @@ do_setup_env(Session *s, const char *shell)
1341 auth_sock_name); 1149 auth_sock_name);
1342 1150
1343 /* read $HOME/.ssh/environment. */ 1151 /* read $HOME/.ssh/environment. */
1344 if (options.permit_user_env && !options.use_login) { 1152 if (options.permit_user_env) {
1345 snprintf(buf, sizeof buf, "%.200s/.ssh/environment", 1153 snprintf(buf, sizeof buf, "%.200s/.ssh/environment",
1346 strcmp(pw->pw_dir, "/") ? pw->pw_dir : ""); 1154 strcmp(pw->pw_dir, "/") ? pw->pw_dir : "");
1347 read_environment_file(&env, &envsize, buf); 1155 read_environment_file(&env, &envsize, buf);
@@ -1623,27 +1431,6 @@ do_pwchange(Session *s)
1623} 1431}
1624 1432
1625static void 1433static void
1626launch_login(struct passwd *pw, const char *hostname)
1627{
1628 /* Launch login(1). */
1629
1630 execl(LOGIN_PROGRAM, "login", "-h", hostname,
1631#ifdef xxxLOGIN_NEEDS_TERM
1632 (s->term ? s->term : "unknown"),
1633#endif /* LOGIN_NEEDS_TERM */
1634#ifdef LOGIN_NO_ENDOPT
1635 "-p", "-f", pw->pw_name, (char *)NULL);
1636#else
1637 "-p", "-f", "--", pw->pw_name, (char *)NULL);
1638#endif
1639
1640 /* Login couldn't be executed, die. */
1641
1642 perror("login");
1643 exit(1);
1644}
1645
1646static void
1647child_close_fds(void) 1434child_close_fds(void)
1648{ 1435{
1649 extern int auth_sock; 1436 extern int auth_sock;
@@ -1690,11 +1477,10 @@ child_close_fds(void)
1690void 1477void
1691do_child(Session *s, const char *command) 1478do_child(Session *s, const char *command)
1692{ 1479{
1693 struct ssh *ssh = active_state; /* XXX */
1694 extern char **environ; 1480 extern char **environ;
1695 char **env; 1481 char **env;
1696 char *argv[ARGV_MAX]; 1482 char *argv[ARGV_MAX];
1697 const char *shell, *shell0, *hostname = NULL; 1483 const char *shell, *shell0;
1698 struct passwd *pw = s->pw; 1484 struct passwd *pw = s->pw;
1699 int r = 0; 1485 int r = 0;
1700 1486
@@ -1709,10 +1495,6 @@ do_child(Session *s, const char *command)
1709 exit(1); 1495 exit(1);
1710 } 1496 }
1711 1497
1712 /* login(1) is only called if we execute the login shell */
1713 if (options.use_login && command != NULL)
1714 options.use_login = 0;
1715
1716#ifdef _UNICOS 1498#ifdef _UNICOS
1717 cray_setup(pw->pw_uid, pw->pw_name, command); 1499 cray_setup(pw->pw_uid, pw->pw_name, command);
1718#endif /* _UNICOS */ 1500#endif /* _UNICOS */
@@ -1721,28 +1503,26 @@ do_child(Session *s, const char *command)
1721 * Login(1) does this as well, and it needs uid 0 for the "-h" 1503 * Login(1) does this as well, and it needs uid 0 for the "-h"
1722 * switch, so we let login(1) to this for us. 1504 * switch, so we let login(1) to this for us.
1723 */ 1505 */
1724 if (!options.use_login) {
1725#ifdef HAVE_OSF_SIA 1506#ifdef HAVE_OSF_SIA
1726 session_setup_sia(pw, s->ttyfd == -1 ? NULL : s->tty); 1507 session_setup_sia(pw, s->ttyfd == -1 ? NULL : s->tty);
1727 if (!check_quietlogin(s, command)) 1508 if (!check_quietlogin(s, command))
1728 do_motd(); 1509 do_motd();
1729#else /* HAVE_OSF_SIA */ 1510#else /* HAVE_OSF_SIA */
1730 /* When PAM is enabled we rely on it to do the nologin check */ 1511 /* When PAM is enabled we rely on it to do the nologin check */
1731 if (!options.use_pam) 1512 if (!options.use_pam)
1732 do_nologin(pw); 1513 do_nologin(pw);
1733 do_setusercontext(pw, s->authctxt->role); 1514 do_setusercontext(pw, s->authctxt->role);
1734 /* 1515 /*
1735 * PAM session modules in do_setusercontext may have 1516 * PAM session modules in do_setusercontext may have
1736 * generated messages, so if this in an interactive 1517 * generated messages, so if this in an interactive
1737 * login then display them too. 1518 * login then display them too.
1738 */ 1519 */
1739 if (!check_quietlogin(s, command)) 1520 if (!check_quietlogin(s, command))
1740 display_loginmsg(); 1521 display_loginmsg();
1741#endif /* HAVE_OSF_SIA */ 1522#endif /* HAVE_OSF_SIA */
1742 }
1743 1523
1744#ifdef USE_PAM 1524#ifdef USE_PAM
1745 if (options.use_pam && !options.use_login && !is_pam_session_open()) { 1525 if (options.use_pam && !is_pam_session_open()) {
1746 debug3("PAM session not opened, exiting"); 1526 debug3("PAM session not opened, exiting");
1747 display_loginmsg(); 1527 display_loginmsg();
1748 exit(254); 1528 exit(254);
@@ -1765,10 +1545,6 @@ do_child(Session *s, const char *command)
1765 shell = login_getcapstr(lc, "shell", (char *)shell, (char *)shell); 1545 shell = login_getcapstr(lc, "shell", (char *)shell, (char *)shell);
1766#endif 1546#endif
1767 1547
1768 /* we have to stash the hostname before we close our socket. */
1769 if (options.use_login)
1770 hostname = session_get_remote_name_or_ip(ssh, utmp_len,
1771 options.use_dns);
1772 /* 1548 /*
1773 * Close the connection descriptors; note that this is the child, and 1549 * Close the connection descriptors; note that this is the child, and
1774 * the server will still have the socket open, and it is important 1550 * the server will still have the socket open, and it is important
@@ -1827,8 +1603,7 @@ do_child(Session *s, const char *command)
1827 1603
1828 closefrom(STDERR_FILENO + 1); 1604 closefrom(STDERR_FILENO + 1);
1829 1605
1830 if (!options.use_login) 1606 do_rc_files(s, shell);
1831 do_rc_files(s, shell);
1832 1607
1833 /* restore SIGPIPE for child */ 1608 /* restore SIGPIPE for child */
1834 signal(SIGPIPE, SIG_DFL); 1609 signal(SIGPIPE, SIG_DFL);
@@ -1858,11 +1633,6 @@ do_child(Session *s, const char *command)
1858 1633
1859 fflush(NULL); 1634 fflush(NULL);
1860 1635
1861 if (options.use_login) {
1862 launch_login(pw, hostname);
1863 /* NEVERREACHED */
1864 }
1865
1866 /* Get the last component of the shell name. */ 1636 /* Get the last component of the shell name. */
1867 if ((shell0 = strrchr(shell, '/')) != NULL) 1637 if ((shell0 = strrchr(shell, '/')) != NULL)
1868 shell0++; 1638 shell0++;
@@ -2106,14 +1876,8 @@ session_pty_req(Session *s)
2106 } 1876 }
2107 1877
2108 s->term = packet_get_string(&len); 1878 s->term = packet_get_string(&len);
2109 1879 s->col = packet_get_int();
2110 if (compat20) { 1880 s->row = packet_get_int();
2111 s->col = packet_get_int();
2112 s->row = packet_get_int();
2113 } else {
2114 s->row = packet_get_int();
2115 s->col = packet_get_int();
2116 }
2117 s->xpixel = packet_get_int(); 1881 s->xpixel = packet_get_int();
2118 s->ypixel = packet_get_int(); 1882 s->ypixel = packet_get_int();
2119 1883
@@ -2135,9 +1899,7 @@ session_pty_req(Session *s)
2135 } 1899 }
2136 debug("session_pty_req: session %d alloc %s", s->self, s->tty); 1900 debug("session_pty_req: session %d alloc %s", s->self, s->tty);
2137 1901
2138 /* for SSH1 the tty modes length is not given */ 1902 n_bytes = packet_remaining();
2139 if (!compat20)
2140 n_bytes = packet_remaining();
2141 tty_parse_modes(s->ttyfd, &n_bytes); 1903 tty_parse_modes(s->ttyfd, &n_bytes);
2142 1904
2143 if (!use_privsep) 1905 if (!use_privsep)
@@ -2353,8 +2115,6 @@ void
2353session_set_fds(Session *s, int fdin, int fdout, int fderr, int ignore_fderr, 2115session_set_fds(Session *s, int fdin, int fdout, int fderr, int ignore_fderr,
2354 int is_tty) 2116 int is_tty)
2355{ 2117{
2356 if (!compat20)
2357 fatal("session_set_fds: called for proto != 2.0");
2358 /* 2118 /*
2359 * now that have a child and a pipe to the child, 2119 * now that have a child and a pipe to the child,
2360 * we can activate our channel and register the fd's 2120 * we can activate our channel and register the fd's
@@ -2692,11 +2452,6 @@ session_setup_x11fwd(Session *s)
2692 packet_send_debug("No xauth program; cannot forward with spoofing."); 2452 packet_send_debug("No xauth program; cannot forward with spoofing.");
2693 return 0; 2453 return 0;
2694 } 2454 }
2695 if (options.use_login) {
2696 packet_send_debug("X11 forwarding disabled; "
2697 "not compatible with UseLogin=yes.");
2698 return 0;
2699 }
2700 if (s->display != NULL) { 2455 if (s->display != NULL) {
2701 debug("X11 display already set."); 2456 debug("X11 display already set.");
2702 return 0; 2457 return 0;
@@ -2794,7 +2549,7 @@ do_cleanup(Authctxt *authctxt)
2794#endif 2549#endif
2795 2550
2796#ifdef GSSAPI 2551#ifdef GSSAPI
2797 if (compat20 && options.gss_cleanup_creds) 2552 if (options.gss_cleanup_creds)
2798 ssh_gssapi_cleanup_creds(); 2553 ssh_gssapi_cleanup_creds();
2799#endif 2554#endif
2800 2555
diff --git a/session.h b/session.h
index 2b7d939c8..0a31dce4d 100644
--- a/session.h
+++ b/session.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.h,v 1.32 2016/03/07 19:02:43 djm Exp $ */ 1/* $OpenBSD: session.h,v 1.33 2016/08/13 17:47:41 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -51,7 +51,6 @@ struct Session {
51 char *auth_data; 51 char *auth_data;
52 int single_connection; 52 int single_connection;
53 53
54 /* proto 2 */
55 int chanid; 54 int chanid;
56 int *x11_chanids; 55 int *x11_chanids;
57 int is_subsystem; 56 int is_subsystem;
diff --git a/sftp-client.c b/sftp-client.c
index 0ca44a4d6..e65c15c8f 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.c,v 1.124 2016/05/25 23:48:45 schwarze Exp $ */ 1/* $OpenBSD: sftp-client.c,v 1.125 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -22,7 +22,6 @@
22 22
23#include "includes.h" 23#include "includes.h"
24 24
25#include <sys/param.h> /* MIN MAX */
26#include <sys/types.h> 25#include <sys/types.h>
27#ifdef HAVE_SYS_STATVFS_H 26#ifdef HAVE_SYS_STATVFS_H
28#include <sys/statvfs.h> 27#include <sys/statvfs.h>
@@ -462,7 +461,7 @@ do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests,
462 461
463 /* Some filexfer v.0 servers don't support large packets */ 462 /* Some filexfer v.0 servers don't support large packets */
464 if (ret->version == 0) 463 if (ret->version == 0)
465 ret->transfer_buflen = MIN(ret->transfer_buflen, 20480); 464 ret->transfer_buflen = MINIMUM(ret->transfer_buflen, 20480);
466 465
467 ret->limit_kbps = limit_kbps; 466 ret->limit_kbps = limit_kbps;
468 if (ret->limit_kbps > 0) { 467 if (ret->limit_kbps > 0) {
@@ -1351,7 +1350,7 @@ do_download(struct sftp_conn *conn, const char *remote_path,
1351 req->offset, req->len, handle, handle_len); 1350 req->offset, req->len, handle, handle_len);
1352 /* Reduce the request size */ 1351 /* Reduce the request size */
1353 if (len < buflen) 1352 if (len < buflen)
1354 buflen = MAX(MIN_READ_SIZE, len); 1353 buflen = MAXIMUM(MIN_READ_SIZE, len);
1355 } 1354 }
1356 if (max_req > 0) { /* max_req = 0 iff EOF received */ 1355 if (max_req > 0) { /* max_req = 0 iff EOF received */
1357 if (size > 0 && offset > size) { 1356 if (size > 0 && offset > size) {
diff --git a/sftp-common.c b/sftp-common.c
index 9dc1f9831..3a70c52dd 100644
--- a/sftp-common.c
+++ b/sftp-common.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-common.c,v 1.28 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: sftp-common.c,v 1.29 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2001 Damien Miller. All rights reserved. 4 * Copyright (c) 2001 Damien Miller. All rights reserved.
@@ -26,7 +26,6 @@
26 26
27#include "includes.h" 27#include "includes.h"
28 28
29#include <sys/param.h> /* MAX */
30#include <sys/types.h> 29#include <sys/types.h>
31#include <sys/stat.h> 30#include <sys/stat.h>
32 31
@@ -45,6 +44,7 @@
45#include "ssherr.h" 44#include "ssherr.h"
46#include "sshbuf.h" 45#include "sshbuf.h"
47#include "log.h" 46#include "log.h"
47#include "misc.h"
48 48
49#include "sftp.h" 49#include "sftp.h"
50#include "sftp-common.h" 50#include "sftp-common.h"
@@ -243,8 +243,8 @@ ls_file(const char *name, const struct stat *st, int remote, int si_units)
243 } 243 }
244 if (sz == 0) 244 if (sz == 0)
245 tbuf[0] = '\0'; 245 tbuf[0] = '\0';
246 ulen = MAX(strlen(user), 8); 246 ulen = MAXIMUM(strlen(user), 8);
247 glen = MAX(strlen(group), 8); 247 glen = MAXIMUM(strlen(group), 8);
248 if (si_units) { 248 if (si_units) {
249 fmt_scaled((long long)st->st_size, sbuf); 249 fmt_scaled((long long)st->st_size, sbuf);
250 snprintf(buf, sizeof buf, "%s %3u %-*s %-*s %8s %s %s", mode, 250 snprintf(buf, sizeof buf, "%s %3u %-*s %-*s %8s %s %s", mode,
diff --git a/sftp-server.c b/sftp-server.c
index 646286a3c..3619cdfc0 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-server.c,v 1.109 2016/02/15 09:47:49 dtucker Exp $ */ 1/* $OpenBSD: sftp-server.c,v 1.110 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
4 * 4 *
@@ -17,7 +17,6 @@
17 17
18#include "includes.h" 18#include "includes.h"
19 19
20#include <sys/param.h> /* MIN */
21#include <sys/types.h> 20#include <sys/types.h>
22#include <sys/stat.h> 21#include <sys/stat.h>
23#ifdef HAVE_SYS_TIME_H 22#ifdef HAVE_SYS_TIME_H
@@ -505,7 +504,7 @@ status_to_message(u_int32_t status)
505 "Operation unsupported", /* SSH_FX_OP_UNSUPPORTED */ 504 "Operation unsupported", /* SSH_FX_OP_UNSUPPORTED */
506 "Unknown error" /* Others */ 505 "Unknown error" /* Others */
507 }; 506 };
508 return (status_messages[MIN(status,SSH2_FX_MAX)]); 507 return (status_messages[MINIMUM(status,SSH2_FX_MAX)]);
509} 508}
510 509
511static void 510static void
diff --git a/sftp.c b/sftp.c
index 08e13a733..2b8fdabfb 100644
--- a/sftp.c
+++ b/sftp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp.c,v 1.175 2016/07/22 03:47:36 djm Exp $ */ 1/* $OpenBSD: sftp.c,v 1.177 2016/10/18 12:41:22 millert Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -17,7 +17,6 @@
17 17
18#include "includes.h" 18#include "includes.h"
19 19
20#include <sys/param.h> /* MIN MAX */
21#include <sys/types.h> 20#include <sys/types.h>
22#include <sys/ioctl.h> 21#include <sys/ioctl.h>
23#ifdef HAVE_SYS_STAT_H 22#ifdef HAVE_SYS_STAT_H
@@ -233,6 +232,18 @@ killchild(int signo)
233 232
234/* ARGSUSED */ 233/* ARGSUSED */
235static void 234static void
235suspchild(int signo)
236{
237 if (sshpid > 1) {
238 kill(sshpid, signo);
239 while (waitpid(sshpid, NULL, WUNTRACED) == -1 && errno == EINTR)
240 continue;
241 }
242 kill(getpid(), SIGSTOP);
243}
244
245/* ARGSUSED */
246static void
236cmd_interrupt(int signo) 247cmd_interrupt(int signo)
237{ 248{
238 const char msg[] = "\rInterrupt \n"; 249 const char msg[] = "\rInterrupt \n";
@@ -802,7 +813,7 @@ do_ls_dir(struct sftp_conn *conn, const char *path,
802 /* Count entries for sort and find longest filename */ 813 /* Count entries for sort and find longest filename */
803 for (n = 0; d[n] != NULL; n++) { 814 for (n = 0; d[n] != NULL; n++) {
804 if (d[n]->filename[0] != '.' || (lflag & LS_SHOW_ALL)) 815 if (d[n]->filename[0] != '.' || (lflag & LS_SHOW_ALL))
805 m = MAX(m, strlen(d[n]->filename)); 816 m = MAXIMUM(m, strlen(d[n]->filename));
806 } 817 }
807 818
808 /* Add any subpath that also needs to be counted */ 819 /* Add any subpath that also needs to be counted */
@@ -814,9 +825,9 @@ do_ls_dir(struct sftp_conn *conn, const char *path,
814 width = ws.ws_col; 825 width = ws.ws_col;
815 826
816 columns = width / (m + 2); 827 columns = width / (m + 2);
817 columns = MAX(columns, 1); 828 columns = MAXIMUM(columns, 1);
818 colspace = width / columns; 829 colspace = width / columns;
819 colspace = MIN(colspace, width); 830 colspace = MINIMUM(colspace, width);
820 } 831 }
821 832
822 if (lflag & SORT_FLAGS) { 833 if (lflag & SORT_FLAGS) {
@@ -915,10 +926,10 @@ do_globbed_ls(struct sftp_conn *conn, const char *path,
915 if (!(lflag & LS_SHORT_VIEW)) { 926 if (!(lflag & LS_SHORT_VIEW)) {
916 /* Count entries for sort and find longest filename */ 927 /* Count entries for sort and find longest filename */
917 for (i = 0; g.gl_pathv[i]; i++) 928 for (i = 0; g.gl_pathv[i]; i++)
918 m = MAX(m, strlen(g.gl_pathv[i])); 929 m = MAXIMUM(m, strlen(g.gl_pathv[i]));
919 930
920 columns = width / (m + 2); 931 columns = width / (m + 2);
921 columns = MAX(columns, 1); 932 columns = MAXIMUM(columns, 1);
922 colspace = width / columns; 933 colspace = width / columns;
923 } 934 }
924 935
@@ -1669,16 +1680,16 @@ complete_display(char **list, u_int len)
1669 1680
1670 /* Count entries for sort and find longest */ 1681 /* Count entries for sort and find longest */
1671 for (y = 0; list[y]; y++) 1682 for (y = 0; list[y]; y++)
1672 m = MAX(m, strlen(list[y])); 1683 m = MAXIMUM(m, strlen(list[y]));
1673 1684
1674 if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1) 1685 if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) != -1)
1675 width = ws.ws_col; 1686 width = ws.ws_col;
1676 1687
1677 m = m > len ? m - len : 0; 1688 m = m > len ? m - len : 0;
1678 columns = width / (m + 2); 1689 columns = width / (m + 2);
1679 columns = MAX(columns, 1); 1690 columns = MAXIMUM(columns, 1);
1680 colspace = width / columns; 1691 colspace = width / columns;
1681 colspace = MIN(colspace, width); 1692 colspace = MINIMUM(colspace, width);
1682 1693
1683 printf("\n"); 1694 printf("\n");
1684 m = 1; 1695 m = 1;
@@ -2214,6 +2225,9 @@ connect_to_server(char *path, char **args, int *in, int *out)
2214 signal(SIGTERM, killchild); 2225 signal(SIGTERM, killchild);
2215 signal(SIGINT, killchild); 2226 signal(SIGINT, killchild);
2216 signal(SIGHUP, killchild); 2227 signal(SIGHUP, killchild);
2228 signal(SIGTSTP, suspchild);
2229 signal(SIGTTIN, suspchild);
2230 signal(SIGTTOU, suspchild);
2217 close(c_in); 2231 close(c_in);
2218 close(c_out); 2232 close(c_out);
2219} 2233}
@@ -2258,7 +2272,7 @@ main(int argc, char **argv)
2258 ssh_malloc_init(); /* must be called before any mallocs */ 2272 ssh_malloc_init(); /* must be called before any mallocs */
2259 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ 2273 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
2260 sanitise_stdfd(); 2274 sanitise_stdfd();
2261 setlocale(LC_CTYPE, ""); 2275 msetlocale();
2262 2276
2263 __progname = ssh_get_progname(argv[0]); 2277 __progname = ssh_get_progname(argv[0]);
2264 memset(&args, '\0', sizeof(args)); 2278 memset(&args, '\0', sizeof(args));
diff --git a/ssh-agent.0 b/ssh-agent.0
index b6abf9b4e..bb3c8d605 100644
--- a/ssh-agent.0
+++ b/ssh-agent.0
@@ -5,7 +5,7 @@ NAME
5 5
6SYNOPSIS 6SYNOPSIS
7 ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash] 7 ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]
8 [-t life] [command [arg ...]] 8 [-P pkcs11_whitelist] [-t life] [command [arg ...]]
9 ssh-agent [-c | -s] -k 9 ssh-agent [-c | -s] -k
10 10
11DESCRIPTION 11DESCRIPTION
@@ -46,6 +46,14 @@ DESCRIPTION
46 -k Kill the current agent (given by the SSH_AGENT_PID environment 46 -k Kill the current agent (given by the SSH_AGENT_PID environment
47 variable). 47 variable).
48 48
49 -P pkcs11_whitelist
50 Specify a pattern-list of acceptable paths for PKCS#11 shared
51 libraries that may be added using the -s option to ssh-add(1).
52 The default is to allow loading PKCS#11 libraries from
53 M-bM-^@M-^\/usr/lib/*,/usr/local/lib/*M-bM-^@M-^]. PKCS#11 libraries that do not
54 match the whitelist will be refused. See PATTERNS in
55 ssh_config(5) for a description of pattern-list syntax.
56
49 -s Generate Bourne shell commands on stdout. This is the default if 57 -s Generate Bourne shell commands on stdout. This is the default if
50 SHELL does not look like it's a csh style of shell. 58 SHELL does not look like it's a csh style of shell.
51 59
@@ -109,4 +117,4 @@ AUTHORS
109 created OpenSSH. Markus Friedl contributed the support for SSH protocol 117 created OpenSSH. Markus Friedl contributed the support for SSH protocol
110 versions 1.5 and 2.0. 118 versions 1.5 and 2.0.
111 119
112OpenBSD 6.0 November 15, 2015 OpenBSD 6.0 120OpenBSD 6.0 November 30, 2016 OpenBSD 6.0
diff --git a/ssh-agent.1 b/ssh-agent.1
index 2fe22013a..7230704a3 100644
--- a/ssh-agent.1
+++ b/ssh-agent.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-agent.1,v 1.62 2015/11/15 23:54:15 jmc Exp $ 1.\" $OpenBSD: ssh-agent.1,v 1.64 2016/11/30 06:54:26 jmc Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -34,7 +34,7 @@
34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36.\" 36.\"
37.Dd $Mdocdate: November 15 2015 $ 37.Dd $Mdocdate: November 30 2016 $
38.Dt SSH-AGENT 1 38.Dt SSH-AGENT 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -46,6 +46,7 @@
46.Op Fl \&Dd 46.Op Fl \&Dd
47.Op Fl a Ar bind_address 47.Op Fl a Ar bind_address
48.Op Fl E Ar fingerprint_hash 48.Op Fl E Ar fingerprint_hash
49.Op Fl P Ar pkcs11_whitelist
49.Op Fl t Ar life 50.Op Fl t Ar life
50.Op Ar command Op Ar arg ... 51.Op Ar command Op Ar arg ...
51.Nm ssh-agent 52.Nm ssh-agent
@@ -121,6 +122,18 @@ The default is
121Kill the current agent (given by the 122Kill the current agent (given by the
122.Ev SSH_AGENT_PID 123.Ev SSH_AGENT_PID
123environment variable). 124environment variable).
125.It Fl P Ar pkcs11_whitelist
126Specify a pattern-list of acceptable paths for PKCS#11 shared libraries
127that may be added using the
128.Fl s
129option to
130.Xr ssh-add 1 .
131The default is to allow loading PKCS#11 libraries from
132.Dq /usr/lib/*,/usr/local/lib/* .
133PKCS#11 libraries that do not match the whitelist will be refused.
134See PATTERNS in
135.Xr ssh_config 5
136for a description of pattern-list syntax.
124.It Fl s 137.It Fl s
125Generate Bourne shell commands on 138Generate Bourne shell commands on
126.Dv stdout . 139.Dv stdout .
@@ -210,7 +223,7 @@ If you need to set any of these environment variables, you will need to do
210so in the program executed by ssh-agent. 223so in the program executed by ssh-agent.
211.Sh FILES 224.Sh FILES
212.Bl -tag -width Ds 225.Bl -tag -width Ds
213.It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.\*(Ltppid\*(Gt 226.It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>
214.Ux Ns -domain 227.Ux Ns -domain
215sockets used to contain the connection to the authentication agent. 228sockets used to contain the connection to the authentication agent.
216These sockets should only be readable by the owner. 229These sockets should only be readable by the owner.
@@ -222,11 +235,12 @@ The sockets should get automatically removed when the agent exits.
222.Xr ssh-keygen 1 , 235.Xr ssh-keygen 1 ,
223.Xr sshd 8 236.Xr sshd 8
224.Sh AUTHORS 237.Sh AUTHORS
225OpenSSH is a derivative of the original and free 238.An -nosplit
226ssh 1.2.12 release by Tatu Ylonen. 239OpenSSH is a derivative of the original and free ssh 1.2.12 release by
227Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, 240.An Tatu Ylonen .
228Theo de Raadt and Dug Song 241.An Aaron Campbell , Bob Beck , Markus Friedl , Niels Provos , Theo de Raadt
229removed many bugs, re-added newer features and 242and
230created OpenSSH. 243.An Dug Song
231Markus Friedl contributed the support for SSH 244removed many bugs, re-added newer features and created OpenSSH.
232protocol versions 1.5 and 2.0. 245.An Markus Friedl
246contributed the support for SSH protocol versions 1.5 and 2.0.
diff --git a/ssh-agent.c b/ssh-agent.c
index 25d6ebc53..395213553 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.213 2016/05/02 08:49:03 djm Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.215 2016/11/30 03:07:37 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -36,7 +36,6 @@
36 36
37#include "includes.h" 37#include "includes.h"
38 38
39#include <sys/param.h> /* MIN MAX */
40#include <sys/types.h> 39#include <sys/types.h>
41#include <sys/param.h> 40#include <sys/param.h>
42#include <sys/resource.h> 41#include <sys/resource.h>
@@ -83,11 +82,16 @@
83#include "misc.h" 82#include "misc.h"
84#include "digest.h" 83#include "digest.h"
85#include "ssherr.h" 84#include "ssherr.h"
85#include "match.h"
86 86
87#ifdef ENABLE_PKCS11 87#ifdef ENABLE_PKCS11
88#include "ssh-pkcs11.h" 88#include "ssh-pkcs11.h"
89#endif 89#endif
90 90
91#ifndef DEFAULT_PKCS11_WHITELIST
92# define DEFAULT_PKCS11_WHITELIST "/usr/lib/*,/usr/local/lib/*"
93#endif
94
91typedef enum { 95typedef enum {
92 AUTH_UNUSED, 96 AUTH_UNUSED,
93 AUTH_SOCKET, 97 AUTH_SOCKET,
@@ -135,6 +139,9 @@ pid_t cleanup_pid = 0;
135char socket_name[PATH_MAX]; 139char socket_name[PATH_MAX];
136char socket_dir[PATH_MAX]; 140char socket_dir[PATH_MAX];
137 141
142/* PKCS#11 path whitelist */
143static char *pkcs11_whitelist;
144
138/* locking */ 145/* locking */
139#define LOCK_SIZE 32 146#define LOCK_SIZE 32
140#define LOCK_SALT_SIZE 16 147#define LOCK_SALT_SIZE 16
@@ -539,7 +546,7 @@ reaper(void)
539 tab->nentries--; 546 tab->nentries--;
540 } else 547 } else
541 deadline = (deadline == 0) ? id->death : 548 deadline = (deadline == 0) ? id->death :
542 MIN(deadline, id->death); 549 MINIMUM(deadline, id->death);
543 } 550 }
544 } 551 }
545 if (deadline == 0 || deadline <= now) 552 if (deadline == 0 || deadline <= now)
@@ -738,7 +745,7 @@ no_identities(SocketEntry *e, u_int type)
738static void 745static void
739process_add_smartcard_key(SocketEntry *e) 746process_add_smartcard_key(SocketEntry *e)
740{ 747{
741 char *provider = NULL, *pin; 748 char *provider = NULL, *pin, canonical_provider[PATH_MAX];
742 int r, i, version, count = 0, success = 0, confirm = 0; 749 int r, i, version, count = 0, success = 0, confirm = 0;
743 u_int seconds; 750 u_int seconds;
744 time_t death = 0; 751 time_t death = 0;
@@ -770,10 +777,21 @@ process_add_smartcard_key(SocketEntry *e)
770 goto send; 777 goto send;
771 } 778 }
772 } 779 }
780 if (realpath(provider, canonical_provider) == NULL) {
781 verbose("failed PKCS#11 add of \"%.100s\": realpath: %s",
782 provider, strerror(errno));
783 goto send;
784 }
785 if (match_pattern_list(canonical_provider, pkcs11_whitelist, 0) != 1) {
786 verbose("refusing PKCS#11 add of \"%.100s\": "
787 "provider not whitelisted", canonical_provider);
788 goto send;
789 }
790 debug("%s: add %.100s", __func__, canonical_provider);
773 if (lifetime && !death) 791 if (lifetime && !death)
774 death = monotime() + lifetime; 792 death = monotime() + lifetime;
775 793
776 count = pkcs11_add_provider(provider, pin, &keys); 794 count = pkcs11_add_provider(canonical_provider, pin, &keys);
777 for (i = 0; i < count; i++) { 795 for (i = 0; i < count; i++) {
778 k = keys[i]; 796 k = keys[i];
779 version = k->type == KEY_RSA1 ? 1 : 2; 797 version = k->type == KEY_RSA1 ? 1 : 2;
@@ -781,8 +799,8 @@ process_add_smartcard_key(SocketEntry *e)
781 if (lookup_identity(k, version) == NULL) { 799 if (lookup_identity(k, version) == NULL) {
782 id = xcalloc(1, sizeof(Identity)); 800 id = xcalloc(1, sizeof(Identity));
783 id->key = k; 801 id->key = k;
784 id->provider = xstrdup(provider); 802 id->provider = xstrdup(canonical_provider);
785 id->comment = xstrdup(provider); /* XXX */ 803 id->comment = xstrdup(canonical_provider); /* XXX */
786 id->death = death; 804 id->death = death;
787 id->confirm = confirm; 805 id->confirm = confirm;
788 TAILQ_INSERT_TAIL(&tab->idlist, id, next); 806 TAILQ_INSERT_TAIL(&tab->idlist, id, next);
@@ -991,7 +1009,7 @@ prepare_select(fd_set **fdrp, fd_set **fdwp, int *fdl, u_int *nallocp,
991 switch (sockets[i].type) { 1009 switch (sockets[i].type) {
992 case AUTH_SOCKET: 1010 case AUTH_SOCKET:
993 case AUTH_CONNECTION: 1011 case AUTH_CONNECTION:
994 n = MAX(n, sockets[i].fd); 1012 n = MAXIMUM(n, sockets[i].fd);
995 break; 1013 break;
996 case AUTH_UNUSED: 1014 case AUTH_UNUSED:
997 break; 1015 break;
@@ -1030,7 +1048,7 @@ prepare_select(fd_set **fdrp, fd_set **fdwp, int *fdl, u_int *nallocp,
1030 deadline = reaper(); 1048 deadline = reaper();
1031 if (parent_alive_interval != 0) 1049 if (parent_alive_interval != 0)
1032 deadline = (deadline == 0) ? parent_alive_interval : 1050 deadline = (deadline == 0) ? parent_alive_interval :
1033 MIN(deadline, parent_alive_interval); 1051 MINIMUM(deadline, parent_alive_interval);
1034 if (deadline == 0) { 1052 if (deadline == 0) {
1035 *tvpp = NULL; 1053 *tvpp = NULL;
1036 } else { 1054 } else {
@@ -1173,7 +1191,7 @@ usage(void)
1173{ 1191{
1174 fprintf(stderr, 1192 fprintf(stderr,
1175 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n" 1193 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n"
1176 " [-t life] [command [arg ...]]\n" 1194 " [-P pkcs11_whitelist] [-t life] [command [arg ...]]\n"
1177 " ssh-agent [-c | -s] -k\n"); 1195 " ssh-agent [-c | -s] -k\n");
1178 exit(1); 1196 exit(1);
1179} 1197}
@@ -1214,7 +1232,7 @@ main(int ac, char **av)
1214 __progname = ssh_get_progname(av[0]); 1232 __progname = ssh_get_progname(av[0]);
1215 seed_rng(); 1233 seed_rng();
1216 1234
1217 while ((ch = getopt(ac, av, "cDdksE:a:t:")) != -1) { 1235 while ((ch = getopt(ac, av, "cDdksE:a:P:t:")) != -1) {
1218 switch (ch) { 1236 switch (ch) {
1219 case 'E': 1237 case 'E':
1220 fingerprint_hash = ssh_digest_alg_by_name(optarg); 1238 fingerprint_hash = ssh_digest_alg_by_name(optarg);
@@ -1229,6 +1247,11 @@ main(int ac, char **av)
1229 case 'k': 1247 case 'k':
1230 k_flag++; 1248 k_flag++;
1231 break; 1249 break;
1250 case 'P':
1251 if (pkcs11_whitelist != NULL)
1252 fatal("-P option already specified");
1253 pkcs11_whitelist = xstrdup(optarg);
1254 break;
1232 case 's': 1255 case 's':
1233 if (c_flag) 1256 if (c_flag)
1234 usage(); 1257 usage();
@@ -1263,6 +1286,9 @@ main(int ac, char **av)
1263 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag)) 1286 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag))
1264 usage(); 1287 usage();
1265 1288
1289 if (pkcs11_whitelist == NULL)
1290 pkcs11_whitelist = xstrdup(DEFAULT_PKCS11_WHITELIST);
1291
1266 if (ac == 0 && !c_flag && !s_flag) { 1292 if (ac == 0 && !c_flag && !s_flag) {
1267 shell = getenv("SHELL"); 1293 shell = getenv("SHELL");
1268 if (shell != NULL && (len = strlen(shell)) > 2 && 1294 if (shell != NULL && (len = strlen(shell)) > 2 &&
@@ -1410,7 +1436,7 @@ skip:
1410 signal(SIGTERM, cleanup_handler); 1436 signal(SIGTERM, cleanup_handler);
1411 nalloc = 0; 1437 nalloc = 0;
1412 1438
1413 if (pledge("stdio cpath unix id proc exec", NULL) == -1) 1439 if (pledge("stdio rpath cpath unix id proc exec", NULL) == -1)
1414 fatal("%s: pledge: %s", __progname, strerror(errno)); 1440 fatal("%s: pledge: %s", __progname, strerror(errno));
1415 platform_pledge_agent(); 1441 platform_pledge_agent();
1416 1442
diff --git a/ssh-keygen.c b/ssh-keygen.c
index 0bd5fc93a..2a7939bfc 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keygen.c,v 1.290 2016/05/02 09:36:42 djm Exp $ */ 1/* $OpenBSD: ssh-keygen.c,v 1.292 2016/09/12 03:29:16 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2448,40 +2448,47 @@ main(int argc, char **argv)
2448 break; 2448 break;
2449#ifdef WITH_OPENSSL 2449#ifdef WITH_OPENSSL
2450 /* Moduli generation/screening */ 2450 /* Moduli generation/screening */
2451 case 'W':
2452 generator_wanted = (u_int32_t)strtonum(optarg, 1,
2453 UINT_MAX, &errstr);
2454 if (errstr)
2455 fatal("Desired generator has bad value: %s (%s)",
2456 optarg, errstr);
2457 break;
2458 case 'M':
2459 memory = (u_int32_t)strtonum(optarg, 1, UINT_MAX, &errstr);
2460 if (errstr)
2461 fatal("Memory limit is %s: %s", errstr, optarg);
2462 break;
2463 case 'G': 2451 case 'G':
2464 do_gen_candidates = 1; 2452 do_gen_candidates = 1;
2465 if (strlcpy(out_file, optarg, sizeof(out_file)) >= 2453 if (strlcpy(out_file, optarg, sizeof(out_file)) >=
2466 sizeof(out_file)) 2454 sizeof(out_file))
2467 fatal("Output filename too long"); 2455 fatal("Output filename too long");
2468 break; 2456 break;
2469 case 'T': 2457 case 'J':
2470 do_screen_candidates = 1; 2458 lines_to_process = strtoul(optarg, NULL, 10);
2471 if (strlcpy(out_file, optarg, sizeof(out_file)) >= 2459 break;
2472 sizeof(out_file)) 2460 case 'j':
2473 fatal("Output filename too long"); 2461 start_lineno = strtoul(optarg, NULL, 10);
2474 break; 2462 break;
2475 case 'K': 2463 case 'K':
2476 if (strlen(optarg) >= PATH_MAX) 2464 if (strlen(optarg) >= PATH_MAX)
2477 fatal("Checkpoint filename too long"); 2465 fatal("Checkpoint filename too long");
2478 checkpoint = xstrdup(optarg); 2466 checkpoint = xstrdup(optarg);
2479 break; 2467 break;
2468 case 'M':
2469 memory = (u_int32_t)strtonum(optarg, 1, UINT_MAX,
2470 &errstr);
2471 if (errstr)
2472 fatal("Memory limit is %s: %s", errstr, optarg);
2473 break;
2480 case 'S': 2474 case 'S':
2481 /* XXX - also compare length against bits */ 2475 /* XXX - also compare length against bits */
2482 if (BN_hex2bn(&start, optarg) == 0) 2476 if (BN_hex2bn(&start, optarg) == 0)
2483 fatal("Invalid start point."); 2477 fatal("Invalid start point.");
2484 break; 2478 break;
2479 case 'T':
2480 do_screen_candidates = 1;
2481 if (strlcpy(out_file, optarg, sizeof(out_file)) >=
2482 sizeof(out_file))
2483 fatal("Output filename too long");
2484 break;
2485 case 'W':
2486 generator_wanted = (u_int32_t)strtonum(optarg, 1,
2487 UINT_MAX, &errstr);
2488 if (errstr != NULL)
2489 fatal("Desired generator invalid: %s (%s)",
2490 optarg, errstr);
2491 break;
2485#endif /* WITH_OPENSSL */ 2492#endif /* WITH_OPENSSL */
2486 case '?': 2493 case '?':
2487 default: 2494 default:
diff --git a/ssh-pkcs11.c b/ssh-pkcs11.c
index d1f750db0..aaf712d9a 100644
--- a/ssh-pkcs11.c
+++ b/ssh-pkcs11.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-pkcs11.c,v 1.22 2016/02/12 00:20:30 djm Exp $ */ 1/* $OpenBSD: ssh-pkcs11.c,v 1.23 2016/10/28 03:33:52 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2010 Markus Friedl. All rights reserved. 3 * Copyright (c) 2010 Markus Friedl. All rights reserved.
4 * 4 *
@@ -577,7 +577,8 @@ pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp)
577 577
578 *keyp = NULL; 578 *keyp = NULL;
579 if (pkcs11_provider_lookup(provider_id) != NULL) { 579 if (pkcs11_provider_lookup(provider_id) != NULL) {
580 error("provider already registered: %s", provider_id); 580 debug("%s: provider already registered: %s",
581 __func__, provider_id);
581 goto fail; 582 goto fail;
582 } 583 }
583 /* open shared pkcs11-libarary */ 584 /* open shared pkcs11-libarary */
@@ -594,23 +595,27 @@ pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp)
594 p->handle = handle; 595 p->handle = handle;
595 /* setup the pkcs11 callbacks */ 596 /* setup the pkcs11 callbacks */
596 if ((rv = (*getfunctionlist)(&f)) != CKR_OK) { 597 if ((rv = (*getfunctionlist)(&f)) != CKR_OK) {
597 error("C_GetFunctionList failed: %lu", rv); 598 error("C_GetFunctionList for provider %s failed: %lu",
599 provider_id, rv);
598 goto fail; 600 goto fail;
599 } 601 }
600 p->function_list = f; 602 p->function_list = f;
601 if ((rv = f->C_Initialize(NULL)) != CKR_OK) { 603 if ((rv = f->C_Initialize(NULL)) != CKR_OK) {
602 error("C_Initialize failed: %lu", rv); 604 error("C_Initialize for provider %s failed: %lu",
605 provider_id, rv);
603 goto fail; 606 goto fail;
604 } 607 }
605 need_finalize = 1; 608 need_finalize = 1;
606 if ((rv = f->C_GetInfo(&p->info)) != CKR_OK) { 609 if ((rv = f->C_GetInfo(&p->info)) != CKR_OK) {
607 error("C_GetInfo failed: %lu", rv); 610 error("C_GetInfo for provider %s failed: %lu",
611 provider_id, rv);
608 goto fail; 612 goto fail;
609 } 613 }
610 rmspace(p->info.manufacturerID, sizeof(p->info.manufacturerID)); 614 rmspace(p->info.manufacturerID, sizeof(p->info.manufacturerID));
611 rmspace(p->info.libraryDescription, sizeof(p->info.libraryDescription)); 615 rmspace(p->info.libraryDescription, sizeof(p->info.libraryDescription));
612 debug("manufacturerID <%s> cryptokiVersion %d.%d" 616 debug("provider %s: manufacturerID <%s> cryptokiVersion %d.%d"
613 " libraryDescription <%s> libraryVersion %d.%d", 617 " libraryDescription <%s> libraryVersion %d.%d",
618 provider_id,
614 p->info.manufacturerID, 619 p->info.manufacturerID,
615 p->info.cryptokiVersion.major, 620 p->info.cryptokiVersion.major,
616 p->info.cryptokiVersion.minor, 621 p->info.cryptokiVersion.minor,
@@ -622,13 +627,15 @@ pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp)
622 goto fail; 627 goto fail;
623 } 628 }
624 if (p->nslots == 0) { 629 if (p->nslots == 0) {
625 error("no slots"); 630 debug("%s: provider %s returned no slots", __func__,
631 provider_id);
626 goto fail; 632 goto fail;
627 } 633 }
628 p->slotlist = xcalloc(p->nslots, sizeof(CK_SLOT_ID)); 634 p->slotlist = xcalloc(p->nslots, sizeof(CK_SLOT_ID));
629 if ((rv = f->C_GetSlotList(CK_TRUE, p->slotlist, &p->nslots)) 635 if ((rv = f->C_GetSlotList(CK_TRUE, p->slotlist, &p->nslots))
630 != CKR_OK) { 636 != CKR_OK) {
631 error("C_GetSlotList failed: %lu", rv); 637 error("C_GetSlotList for provider %s failed: %lu",
638 provider_id, rv);
632 goto fail; 639 goto fail;
633 } 640 }
634 p->slotinfo = xcalloc(p->nslots, sizeof(struct pkcs11_slotinfo)); 641 p->slotinfo = xcalloc(p->nslots, sizeof(struct pkcs11_slotinfo));
@@ -638,20 +645,23 @@ pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp)
638 token = &p->slotinfo[i].token; 645 token = &p->slotinfo[i].token;
639 if ((rv = f->C_GetTokenInfo(p->slotlist[i], token)) 646 if ((rv = f->C_GetTokenInfo(p->slotlist[i], token))
640 != CKR_OK) { 647 != CKR_OK) {
641 error("C_GetTokenInfo failed: %lu", rv); 648 error("C_GetTokenInfo for provider %s slot %lu "
649 "failed: %lu", provider_id, (unsigned long)i, rv);
642 continue; 650 continue;
643 } 651 }
644 if ((token->flags & CKF_TOKEN_INITIALIZED) == 0) { 652 if ((token->flags & CKF_TOKEN_INITIALIZED) == 0) {
645 debug2("%s: ignoring uninitialised token in slot %lu", 653 debug2("%s: ignoring uninitialised token in "
646 __func__, (unsigned long)i); 654 "provider %s slot %lu", __func__,
655 provider_id, (unsigned long)i);
647 continue; 656 continue;
648 } 657 }
649 rmspace(token->label, sizeof(token->label)); 658 rmspace(token->label, sizeof(token->label));
650 rmspace(token->manufacturerID, sizeof(token->manufacturerID)); 659 rmspace(token->manufacturerID, sizeof(token->manufacturerID));
651 rmspace(token->model, sizeof(token->model)); 660 rmspace(token->model, sizeof(token->model));
652 rmspace(token->serialNumber, sizeof(token->serialNumber)); 661 rmspace(token->serialNumber, sizeof(token->serialNumber));
653 debug("label <%s> manufacturerID <%s> model <%s> serial <%s>" 662 debug("provider %s slot %lu: label <%s> manufacturerID <%s> "
654 " flags 0x%lx", 663 "model <%s> serial <%s> flags 0x%lx",
664 provider_id, (unsigned long)i,
655 token->label, token->manufacturerID, token->model, 665 token->label, token->manufacturerID, token->model,
656 token->serialNumber, token->flags); 666 token->serialNumber, token->flags);
657 /* open session, login with pin and retrieve public keys */ 667 /* open session, login with pin and retrieve public keys */
@@ -663,11 +673,12 @@ pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp)
663 p->refcount++; /* add to provider list */ 673 p->refcount++; /* add to provider list */
664 return (nkeys); 674 return (nkeys);
665 } 675 }
666 error("no keys"); 676 debug("%s: provider %s returned no keys", __func__, provider_id);
667 /* don't add the provider, since it does not have any keys */ 677 /* don't add the provider, since it does not have any keys */
668fail: 678fail:
669 if (need_finalize && (rv = f->C_Finalize(NULL)) != CKR_OK) 679 if (need_finalize && (rv = f->C_Finalize(NULL)) != CKR_OK)
670 error("C_Finalize failed: %lu", rv); 680 error("C_Finalize for provider %s failed: %lu",
681 provider_id, rv);
671 if (p) { 682 if (p) {
672 free(p->slotlist); 683 free(p->slotlist);
673 free(p->slotinfo); 684 free(p->slotinfo);
diff --git a/ssh-rsa.c b/ssh-rsa.c
index a6db2a06b..cde05df10 100644
--- a/ssh-rsa.c
+++ b/ssh-rsa.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-rsa.c,v 1.59 2016/04/21 06:08:02 djm Exp $ */ 1/* $OpenBSD: ssh-rsa.c,v 1.60 2016/09/12 23:39:34 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org> 3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org>
4 * 4 *
@@ -53,7 +53,8 @@ rsa_hash_alg_ident(int hash_alg)
53static int 53static int
54rsa_hash_alg_from_ident(const char *ident) 54rsa_hash_alg_from_ident(const char *ident)
55{ 55{
56 if (strcmp(ident, "ssh-rsa") == 0) 56 if (strcmp(ident, "ssh-rsa") == 0 ||
57 strcmp(ident, "ssh-rsa-cert-v01@openssh.com") == 0)
57 return SSH_DIGEST_SHA1; 58 return SSH_DIGEST_SHA1;
58 if (strcmp(ident, "rsa-sha2-256") == 0) 59 if (strcmp(ident, "rsa-sha2-256") == 0)
59 return SSH_DIGEST_SHA256; 60 return SSH_DIGEST_SHA256;
@@ -93,8 +94,7 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
93 if (sigp != NULL) 94 if (sigp != NULL)
94 *sigp = NULL; 95 *sigp = NULL;
95 96
96 if (alg_ident == NULL || strlen(alg_ident) == 0 || 97 if (alg_ident == NULL || strlen(alg_ident) == 0)
97 strncmp(alg_ident, "ssh-rsa-cert", strlen("ssh-rsa-cert")) == 0)
98 hash_alg = SSH_DIGEST_SHA1; 98 hash_alg = SSH_DIGEST_SHA1;
99 else 99 else
100 hash_alg = rsa_hash_alg_from_ident(alg_ident); 100 hash_alg = rsa_hash_alg_from_ident(alg_ident);
diff --git a/ssh.c b/ssh.c
index 1febb04c9..39609e796 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.445 2016/07/17 04:20:16 djm Exp $ */ 1/* $OpenBSD: ssh.c,v 1.448 2016/12/06 07:48:01 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -109,6 +109,7 @@
109#include "version.h" 109#include "version.h"
110#include "ssherr.h" 110#include "ssherr.h"
111#include "myproposal.h" 111#include "myproposal.h"
112#include "utf8.h"
112 113
113#ifdef ENABLE_PKCS11 114#ifdef ENABLE_PKCS11
114#include "ssh-pkcs11.h" 115#include "ssh-pkcs11.h"
@@ -213,10 +214,6 @@ static int ssh_session2(void);
213static void load_public_identity_files(void); 214static void load_public_identity_files(void);
214static void main_sigchld_handler(int); 215static void main_sigchld_handler(int);
215 216
216/* from muxclient.c */
217void muxclient(const char *);
218void muxserver_listen(void);
219
220/* ~/ expand a list of paths. NB. assumes path[n] is heap-allocated. */ 217/* ~/ expand a list of paths. NB. assumes path[n] is heap-allocated. */
221static void 218static void
222tilde_expand_paths(char **paths, u_int num_paths) 219tilde_expand_paths(char **paths, u_int num_paths)
@@ -593,7 +590,7 @@ main(int ac, char **av)
593 */ 590 */
594 umask(022); 591 umask(022);
595 592
596 setlocale(LC_CTYPE, ""); 593 msetlocale();
597 594
598 /* 595 /*
599 * Initialize option structure to indicate that no values have been 596 * Initialize option structure to indicate that no values have been
@@ -668,6 +665,8 @@ main(int ac, char **av)
668 muxclient_command = SSHMUX_COMMAND_STOP; 665 muxclient_command = SSHMUX_COMMAND_STOP;
669 else if (strcmp(optarg, "cancel") == 0) 666 else if (strcmp(optarg, "cancel") == 0)
670 muxclient_command = SSHMUX_COMMAND_CANCEL_FWD; 667 muxclient_command = SSHMUX_COMMAND_CANCEL_FWD;
668 else if (strcmp(optarg, "proxy") == 0)
669 muxclient_command = SSHMUX_COMMAND_PROXY;
671 else 670 else
672 fatal("Invalid multiplex command."); 671 fatal("Invalid multiplex command.");
673 break; 672 break;
@@ -685,11 +684,11 @@ main(int ac, char **av)
685 else if (strcmp(optarg, "kex") == 0) 684 else if (strcmp(optarg, "kex") == 0)
686 cp = kex_alg_list('\n'); 685 cp = kex_alg_list('\n');
687 else if (strcmp(optarg, "key") == 0) 686 else if (strcmp(optarg, "key") == 0)
688 cp = key_alg_list(0, 0); 687 cp = sshkey_alg_list(0, 0, '\n');
689 else if (strcmp(optarg, "key-cert") == 0) 688 else if (strcmp(optarg, "key-cert") == 0)
690 cp = key_alg_list(1, 0); 689 cp = sshkey_alg_list(1, 0, '\n');
691 else if (strcmp(optarg, "key-plain") == 0) 690 else if (strcmp(optarg, "key-plain") == 0)
692 cp = key_alg_list(0, 1); 691 cp = sshkey_alg_list(0, 1, '\n');
693 else if (strcmp(optarg, "protocol-version") == 0) { 692 else if (strcmp(optarg, "protocol-version") == 0) {
694#ifdef WITH_SSH1 693#ifdef WITH_SSH1
695 cp = xstrdup("1\n2"); 694 cp = xstrdup("1\n2");
@@ -1162,7 +1161,8 @@ main(int ac, char **av)
1162 tty_flag = options.request_tty != REQUEST_TTY_NO; 1161 tty_flag = options.request_tty != REQUEST_TTY_NO;
1163 1162
1164 /* Force no tty */ 1163 /* Force no tty */
1165 if (options.request_tty == REQUEST_TTY_NO || muxclient_command != 0) 1164 if (options.request_tty == REQUEST_TTY_NO ||
1165 (muxclient_command && muxclient_command != SSHMUX_COMMAND_PROXY))
1166 tty_flag = 0; 1166 tty_flag = 0;
1167 /* Do not allocate a tty if stdin is not a tty. */ 1167 /* Do not allocate a tty if stdin is not a tty. */
1168 if ((!isatty(fileno(stdin)) || stdin_null_flag) && 1168 if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
@@ -1239,8 +1239,16 @@ main(int ac, char **av)
1239 1239
1240 if (muxclient_command != 0 && options.control_path == NULL) 1240 if (muxclient_command != 0 && options.control_path == NULL)
1241 fatal("No ControlPath specified for \"-O\" command"); 1241 fatal("No ControlPath specified for \"-O\" command");
1242 if (options.control_path != NULL) 1242 if (options.control_path != NULL) {
1243 muxclient(options.control_path); 1243 int sock;
1244 if ((sock = muxclient(options.control_path)) >= 0) {
1245 packet_set_connection(sock, sock);
1246 ssh = active_state; /* XXX */
1247 enable_compat20(); /* XXX */
1248 packet_set_mux();
1249 goto skip_connect;
1250 }
1251 }
1244 1252
1245 /* 1253 /*
1246 * If hostname canonicalisation was not enabled, then we may not 1254 * If hostname canonicalisation was not enabled, then we may not
@@ -1443,6 +1451,7 @@ main(int ac, char **av)
1443 options.certificate_files[i] = NULL; 1451 options.certificate_files[i] = NULL;
1444 } 1452 }
1445 1453
1454 skip_connect:
1446 exit_status = compat20 ? ssh_session2() : ssh_session(); 1455 exit_status = compat20 ? ssh_session2() : ssh_session();
1447 packet_close(); 1456 packet_close();
1448 1457
@@ -1953,7 +1962,8 @@ ssh_session2(void)
1953 ssh_init_forwarding(); 1962 ssh_init_forwarding();
1954 1963
1955 /* Start listening for multiplex clients */ 1964 /* Start listening for multiplex clients */
1956 muxserver_listen(); 1965 if (!packet_get_mux())
1966 muxserver_listen();
1957 1967
1958 /* 1968 /*
1959 * If we are in control persist mode and have a working mux listen 1969 * If we are in control persist mode and have a working mux listen
@@ -2118,8 +2128,9 @@ load_public_identity_files(void)
2118 free(cp); 2128 free(cp);
2119 continue; 2129 continue;
2120 } 2130 }
2131 /* NB. leave filename pointing to private key */
2132 identity_files[n_ids] = xstrdup(filename);
2121 identity_keys[n_ids] = public; 2133 identity_keys[n_ids] = public;
2122 identity_files[n_ids] = cp;
2123 n_ids++; 2134 n_ids++;
2124 } 2135 }
2125 2136
diff --git a/ssh_config.0 b/ssh_config.0
index 8733281f5..4ca9a5ff8 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -16,25 +16,23 @@ DESCRIPTION
16 3. system-wide configuration file (/etc/ssh/ssh_config) 16 3. system-wide configuration file (/etc/ssh/ssh_config)
17 17
18 For each parameter, the first obtained value will be used. The 18 For each parameter, the first obtained value will be used. The
19 configuration files contain sections separated by M-bM-^@M-^\HostM-bM-^@M-^] specifications, 19 configuration files contain sections separated by Host specifications,
20 and that section is only applied for hosts that match one of the patterns 20 and that section is only applied for hosts that match one of the patterns
21 given in the specification. The matched host name is usually the one 21 given in the specification. The matched host name is usually the one
22 given on the command line (see the CanonicalizeHostname option for 22 given on the command line (see the CanonicalizeHostname option for
23 exceptions.) 23 exceptions).
24 24
25 Since the first obtained value for each parameter is used, more host- 25 Since the first obtained value for each parameter is used, more host-
26 specific declarations should be given near the beginning of the file, and 26 specific declarations should be given near the beginning of the file, and
27 general defaults at the end. 27 general defaults at the end.
28 28
29 The configuration file has the following format: 29 The file contains keyword-argument pairs, one per line. Lines starting
30 30 with M-bM-^@M-^X#M-bM-^@M-^Y and empty lines are interpreted as comments. Arguments may
31 Empty lines and lines starting with M-bM-^@M-^X#M-bM-^@M-^Y are comments. Otherwise a line 31 optionally be enclosed in double quotes (") in order to represent
32 is of the format M-bM-^@M-^\keyword argumentsM-bM-^@M-^]. Configuration options may be 32 arguments containing spaces. Configuration options may be separated by
33 separated by whitespace or optional whitespace and exactly one M-bM-^@M-^X=M-bM-^@M-^Y; the 33 whitespace or optional whitespace and exactly one M-bM-^@M-^X=M-bM-^@M-^Y; the latter format
34 latter format is useful to avoid the need to quote whitespace when 34 is useful to avoid the need to quote whitespace when specifying
35 specifying configuration options using the ssh, scp, and sftp -o option. 35 configuration options using the ssh, scp, and sftp -o option.
36 Arguments may optionally be enclosed in double quotes (") in order to
37 represent arguments containing spaces.
38 36
39 The possible keywords and their meanings are as follows (note that 37 The possible keywords and their meanings are as follows (note that
40 keywords are case-insensitive and arguments are case-sensitive): 38 keywords are case-insensitive and arguments are case-sensitive):
@@ -45,8 +43,8 @@ DESCRIPTION
45 provided, they should be separated by whitespace. A single M-bM-^@M-^X*M-bM-^@M-^Y 43 provided, they should be separated by whitespace. A single M-bM-^@M-^X*M-bM-^@M-^Y
46 as a pattern can be used to provide global defaults for all 44 as a pattern can be used to provide global defaults for all
47 hosts. The host is usually the hostname argument given on the 45 hosts. The host is usually the hostname argument given on the
48 command line (see the CanonicalizeHostname option for 46 command line (see the CanonicalizeHostname keyword for
49 exceptions.) 47 exceptions).
50 48
51 A pattern entry may be negated by prefixing it with an 49 A pattern entry may be negated by prefixing it with an
52 exclamation mark (M-bM-^@M-^X!M-bM-^@M-^Y). If a negated entry is matched, then the 50 exclamation mark (M-bM-^@M-^X!M-bM-^@M-^Y). If a negated entry is matched, then the
@@ -74,14 +72,8 @@ DESCRIPTION
74 keyword executes the specified command under the user's shell. 72 keyword executes the specified command under the user's shell.
75 If the command returns a zero exit status then the condition is 73 If the command returns a zero exit status then the condition is
76 considered true. Commands containing whitespace characters must 74 considered true. Commands containing whitespace characters must
77 be quoted. The following character sequences in the command will 75 be quoted. Arguments to exec accept the tokens described in the
78 be expanded prior to execution: M-bM-^@M-^X%LM-bM-^@M-^Y will be substituted by the 76 TOKENS section.
79 first component of the local host name, M-bM-^@M-^X%lM-bM-^@M-^Y will be substituted
80 by the local host name (including any domain name), M-bM-^@M-^X%hM-bM-^@M-^Y will be
81 substituted by the target host name, M-bM-^@M-^X%nM-bM-^@M-^Y will be substituted by
82 the original target host name specified on the command-line, M-bM-^@M-^X%pM-bM-^@M-^Y
83 the destination port, M-bM-^@M-^X%rM-bM-^@M-^Y by the remote login username, and M-bM-^@M-^X%uM-bM-^@M-^Y
84 by the username of the user running ssh(1).
85 77
86 The other keywords' criteria must be single entries or comma- 78 The other keywords' criteria must be single entries or comma-
87 separated lists and may use the wildcard and negation operators 79 separated lists and may use the wildcard and negation operators
@@ -96,33 +88,33 @@ DESCRIPTION
96 88
97 AddKeysToAgent 89 AddKeysToAgent
98 Specifies whether keys should be automatically added to a running 90 Specifies whether keys should be automatically added to a running
99 ssh-agent(1). If this option is set to M-bM-^@M-^\yesM-bM-^@M-^] and a key is loaded 91 ssh-agent(1). If this option is set to yes and a key is loaded
100 from a file, the key and its passphrase are added to the agent 92 from a file, the key and its passphrase are added to the agent
101 with the default lifetime, as if by ssh-add(1). If this option 93 with the default lifetime, as if by ssh-add(1). If this option
102 is set to M-bM-^@M-^\askM-bM-^@M-^], ssh will require confirmation using the 94 is set to ask, ssh(1) will require confirmation using the
103 SSH_ASKPASS program before adding a key (see ssh-add(1) for 95 SSH_ASKPASS program before adding a key (see ssh-add(1) for
104 details). If this option is set to M-bM-^@M-^\confirmM-bM-^@M-^], each use of the 96 details). If this option is set to confirm, each use of the key
105 key must be confirmed, as if the -c option was specified to 97 must be confirmed, as if the -c option was specified to
106 ssh-add(1). If this option is set to M-bM-^@M-^\noM-bM-^@M-^], no keys are added to 98 ssh-add(1). If this option is set to no, no keys are added to
107 the agent. The argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\confirmM-bM-^@M-^], M-bM-^@M-^\askM-bM-^@M-^], or 99 the agent. The argument must be yes, confirm, ask, or no (the
108 M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 100 default).
109 101
110 AddressFamily 102 AddressFamily
111 Specifies which address family to use when connecting. Valid 103 Specifies which address family to use when connecting. Valid
112 arguments are M-bM-^@M-^\anyM-bM-^@M-^], M-bM-^@M-^\inetM-bM-^@M-^] (use IPv4 only), or M-bM-^@M-^\inet6M-bM-^@M-^] (use IPv6 104 arguments are any (the default), inet (use IPv4 only), or inet6
113 only). The default is M-bM-^@M-^\anyM-bM-^@M-^]. 105 (use IPv6 only).
114 106
115 BatchMode 107 BatchMode
116 If set to M-bM-^@M-^\yesM-bM-^@M-^], passphrase/password querying will be disabled. 108 If set to yes, passphrase/password querying will be disabled.
117 This option is useful in scripts and other batch jobs where no 109 This option is useful in scripts and other batch jobs where no
118 user is present to supply the password. The argument must be 110 user is present to supply the password. The argument must be yes
119 M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 111 or no (the default).
120 112
121 BindAddress 113 BindAddress
122 Use the specified address on the local machine as the source 114 Use the specified address on the local machine as the source
123 address of the connection. Only useful on systems with more than 115 address of the connection. Only useful on systems with more than
124 one address. Note that this option does not work if 116 one address. Note that this option does not work if
125 UsePrivilegedPort is set to M-bM-^@M-^\yesM-bM-^@M-^]. 117 UsePrivilegedPort is set to yes.
126 118
127 CanonicalDomains 119 CanonicalDomains
128 When CanonicalizeHostname is enabled, this option specifies the 120 When CanonicalizeHostname is enabled, this option specifies the
@@ -131,21 +123,21 @@ DESCRIPTION
131 123
132 CanonicalizeFallbackLocal 124 CanonicalizeFallbackLocal
133 Specifies whether to fail with an error when hostname 125 Specifies whether to fail with an error when hostname
134 canonicalization fails. The default, M-bM-^@M-^\yesM-bM-^@M-^], will attempt to look 126 canonicalization fails. The default, yes, will attempt to look
135 up the unqualified hostname using the system resolver's search 127 up the unqualified hostname using the system resolver's search
136 rules. A value of M-bM-^@M-^\noM-bM-^@M-^] will cause ssh(1) to fail instantly if 128 rules. A value of no will cause ssh(1) to fail instantly if
137 CanonicalizeHostname is enabled and the target hostname cannot be 129 CanonicalizeHostname is enabled and the target hostname cannot be
138 found in any of the domains specified by CanonicalDomains. 130 found in any of the domains specified by CanonicalDomains.
139 131
140 CanonicalizeHostname 132 CanonicalizeHostname
141 Controls whether explicit hostname canonicalization is performed. 133 Controls whether explicit hostname canonicalization is performed.
142 The default, M-bM-^@M-^\noM-bM-^@M-^], is not to perform any name rewriting and let 134 The default, no, is not to perform any name rewriting and let the
143 the system resolver handle all hostname lookups. If set to M-bM-^@M-^\yesM-bM-^@M-^] 135 system resolver handle all hostname lookups. If set to yes then,
144 then, for connections that do not use a ProxyCommand, ssh(1) will 136 for connections that do not use a ProxyCommand, ssh(1) will
145 attempt to canonicalize the hostname specified on the command 137 attempt to canonicalize the hostname specified on the command
146 line using the CanonicalDomains suffixes and 138 line using the CanonicalDomains suffixes and
147 CanonicalizePermittedCNAMEs rules. If CanonicalizeHostname is 139 CanonicalizePermittedCNAMEs rules. If CanonicalizeHostname is
148 set to M-bM-^@M-^\alwaysM-bM-^@M-^], then canonicalization is applied to proxied 140 set to always, then canonicalization is applied to proxied
149 connections too. 141 connections too.
150 142
151 If this option is enabled, then the configuration files are 143 If this option is enabled, then the configuration files are
@@ -154,7 +146,7 @@ DESCRIPTION
154 146
155 CanonicalizeMaxDots 147 CanonicalizeMaxDots
156 Specifies the maximum number of dot characters in a hostname 148 Specifies the maximum number of dot characters in a hostname
157 before canonicalization is disabled. The default, M-bM-^@M-^\1M-bM-^@M-^], allows a 149 before canonicalization is disabled. The default, 1, allows a
158 single dot (i.e. hostname.subdomain). 150 single dot (i.e. hostname.subdomain).
159 151
160 CanonicalizePermittedCNAMEs 152 CanonicalizePermittedCNAMEs
@@ -165,10 +157,10 @@ DESCRIPTION
165 CNAMEs in canonicalization, and target_domain_list is a pattern- 157 CNAMEs in canonicalization, and target_domain_list is a pattern-
166 list of domains that they may resolve to. 158 list of domains that they may resolve to.
167 159
168 For example, M-bM-^@M-^\*.a.example.com:*.b.example.com,*.c.example.comM-bM-^@M-^] 160 For example, "*.a.example.com:*.b.example.com,*.c.example.com"
169 will allow hostnames matching M-bM-^@M-^\*.a.example.comM-bM-^@M-^] to be 161 will allow hostnames matching "*.a.example.com" to be
170 canonicalized to names in the M-bM-^@M-^\*.b.example.comM-bM-^@M-^] or 162 canonicalized to names in the "*.b.example.com" or
171 M-bM-^@M-^\*.c.example.comM-bM-^@M-^] domains. 163 "*.c.example.com" domains.
172 164
173 CertificateFile 165 CertificateFile
174 Specifies a file from which the user's certificate is read. A 166 Specifies a file from which the user's certificate is read. A
@@ -176,10 +168,9 @@ DESCRIPTION
176 use this certificate either from an IdentityFile directive or -i 168 use this certificate either from an IdentityFile directive or -i
177 flag to ssh(1), via ssh-agent(1), or via a PKCS11Provider. 169 flag to ssh(1), via ssh-agent(1), or via a PKCS11Provider.
178 170
179 The file name may use the tilde syntax to refer to a user's home 171 Arguments to CertificateFile may use the tilde syntax to refer to
180 directory or one of the following escape characters: M-bM-^@M-^X%dM-bM-^@M-^Y (local 172 a user's home directory or the tokens described in the TOKENS
181 user's home directory), M-bM-^@M-^X%uM-bM-^@M-^Y (local user name), M-bM-^@M-^X%lM-bM-^@M-^Y (local host 173 section.
182 name), M-bM-^@M-^X%hM-bM-^@M-^Y (remote host name) or M-bM-^@M-^X%rM-bM-^@M-^Y (remote user name).
183 174
184 It is possible to have multiple certificate files specified in 175 It is possible to have multiple certificate files specified in
185 configuration files; these certificates will be tried in 176 configuration files; these certificates will be tried in
@@ -188,24 +179,22 @@ DESCRIPTION
188 179
189 ChallengeResponseAuthentication 180 ChallengeResponseAuthentication
190 Specifies whether to use challenge-response authentication. The 181 Specifies whether to use challenge-response authentication. The
191 argument to this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is 182 argument to this keyword must be yes (the default) or no.
192 M-bM-^@M-^\yesM-bM-^@M-^].
193 183
194 CheckHostIP 184 CheckHostIP
195 If this flag is set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) will additionally check the 185 If set to yes (the default), ssh(1) will additionally check the
196 host IP address in the known_hosts file. This allows ssh to 186 host IP address in the known_hosts file. This allows it to
197 detect if a host key changed due to DNS spoofing and will add 187 detect if a host key changed due to DNS spoofing and will add
198 addresses of destination hosts to ~/.ssh/known_hosts in the 188 addresses of destination hosts to ~/.ssh/known_hosts in the
199 process, regardless of the setting of StrictHostKeyChecking. If 189 process, regardless of the setting of StrictHostKeyChecking. If
200 the option is set to M-bM-^@M-^\noM-bM-^@M-^], the check will not be executed. The 190 the option is set to no, the check will not be executed.
201 default is M-bM-^@M-^\yesM-bM-^@M-^].
202 191
203 Cipher Specifies the cipher to use for encrypting the session in 192 Cipher Specifies the cipher to use for encrypting the session in
204 protocol version 1. Currently, M-bM-^@M-^\blowfishM-bM-^@M-^], M-bM-^@M-^\3desM-bM-^@M-^], and M-bM-^@M-^\desM-bM-^@M-^] are 193 protocol version 1. Currently, blowfish, 3des (the default), and
205 supported. des is only supported in the ssh(1) client for 194 des are supported, though des is only supported in the ssh(1)
206 interoperability with legacy protocol 1 implementations that do 195 client for interoperability with legacy protocol 1
207 not support the 3des cipher. Its use is strongly discouraged due 196 implementations; its use is strongly discouraged due to
208 to cryptographic weaknesses. The default is M-bM-^@M-^\3desM-bM-^@M-^]. 197 cryptographic weaknesses.
209 198
210 Ciphers 199 Ciphers
211 Specifies the ciphers allowed for protocol version 2 in order of 200 Specifies the ciphers allowed for protocol version 2 in order of
@@ -237,10 +226,10 @@ DESCRIPTION
237 chacha20-poly1305@openssh.com, 226 chacha20-poly1305@openssh.com,
238 aes128-ctr,aes192-ctr,aes256-ctr, 227 aes128-ctr,aes192-ctr,aes256-ctr,
239 aes128-gcm@openssh.com,aes256-gcm@openssh.com, 228 aes128-gcm@openssh.com,aes256-gcm@openssh.com,
240 aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc 229 aes128-cbc,aes192-cbc,aes256-cbc
241 230
242 The list of available ciphers may also be obtained using the -Q 231 The list of available ciphers may also be obtained using "ssh -Q
243 option of ssh(1) with an argument of M-bM-^@M-^\cipherM-bM-^@M-^]. 232 cipher".
244 233
245 ClearAllForwardings 234 ClearAllForwardings
246 Specifies that all local, remote, and dynamic port forwardings 235 Specifies that all local, remote, and dynamic port forwardings
@@ -248,12 +237,11 @@ DESCRIPTION
248 cleared. This option is primarily useful when used from the 237 cleared. This option is primarily useful when used from the
249 ssh(1) command line to clear port forwardings set in 238 ssh(1) command line to clear port forwardings set in
250 configuration files, and is automatically set by scp(1) and 239 configuration files, and is automatically set by scp(1) and
251 sftp(1). The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is 240 sftp(1). The argument must be yes or no (the default).
252 M-bM-^@M-^\noM-bM-^@M-^].
253 241
254 Compression 242 Compression
255 Specifies whether to use compression. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] 243 Specifies whether to use compression. The argument must be yes
256 or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 244 or no (the default).
257 245
258 CompressionLevel 246 CompressionLevel
259 Specifies the compression level to use if compression is enabled. 247 Specifies the compression level to use if compression is enabled.
@@ -275,18 +263,18 @@ DESCRIPTION
275 263
276 ControlMaster 264 ControlMaster
277 Enables the sharing of multiple sessions over a single network 265 Enables the sharing of multiple sessions over a single network
278 connection. When set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) will listen for 266 connection. When set to yes, ssh(1) will listen for connections
279 connections on a control socket specified using the ControlPath 267 on a control socket specified using the ControlPath argument.
280 argument. Additional sessions can connect to this socket using 268 Additional sessions can connect to this socket using the same
281 the same ControlPath with ControlMaster set to M-bM-^@M-^\noM-bM-^@M-^] (the 269 ControlPath with ControlMaster set to no (the default). These
282 default). These sessions will try to reuse the master instance's 270 sessions will try to reuse the master instance's network
283 network connection rather than initiating new ones, but will fall 271 connection rather than initiating new ones, but will fall back to
284 back to connecting normally if the control socket does not exist, 272 connecting normally if the control socket does not exist, or is
285 or is not listening. 273 not listening.
286 274
287 Setting this to M-bM-^@M-^\askM-bM-^@M-^] will cause ssh to listen for control 275 Setting this to ask will cause ssh(1) to listen for control
288 connections, but require confirmation using ssh-askpass(1). If 276 connections, but require confirmation using ssh-askpass(1). If
289 the ControlPath cannot be opened, ssh will continue without 277 the ControlPath cannot be opened, ssh(1) will continue without
290 connecting to a master instance. 278 connecting to a master instance.
291 279
292 X11 and ssh-agent(1) forwarding is supported over these 280 X11 and ssh-agent(1) forwarding is supported over these
@@ -296,41 +284,35 @@ DESCRIPTION
296 284
297 Two additional options allow for opportunistic multiplexing: try 285 Two additional options allow for opportunistic multiplexing: try
298 to use a master connection but fall back to creating a new one if 286 to use a master connection but fall back to creating a new one if
299 one does not already exist. These options are: M-bM-^@M-^\autoM-bM-^@M-^] and 287 one does not already exist. These options are: auto and autoask.
300 M-bM-^@M-^\autoaskM-bM-^@M-^]. The latter requires confirmation like the M-bM-^@M-^\askM-bM-^@M-^] 288 The latter requires confirmation like the ask option.
301 option.
302 289
303 ControlPath 290 ControlPath
304 Specify the path to the control socket used for connection 291 Specify the path to the control socket used for connection
305 sharing as described in the ControlMaster section above or the 292 sharing as described in the ControlMaster section above or the
306 string M-bM-^@M-^\noneM-bM-^@M-^] to disable connection sharing. In the path, M-bM-^@M-^X%LM-bM-^@M-^Y 293 string none to disable connection sharing. Arguments to
307 will be substituted by the first component of the local host 294 ControlPath may use the tilde syntax to refer to a user's home
308 name, M-bM-^@M-^X%lM-bM-^@M-^Y will be substituted by the local host name (including 295 directory or the tokens described in the TOKENS section. It is
309 any domain name), M-bM-^@M-^X%hM-bM-^@M-^Y will be substituted by the target host 296 recommended that any ControlPath used for opportunistic
310 name, M-bM-^@M-^X%nM-bM-^@M-^Y will be substituted by the original target host name 297 connection sharing include at least %h, %p, and %r (or
311 specified on the command line, M-bM-^@M-^X%pM-bM-^@M-^Y the destination port, M-bM-^@M-^X%rM-bM-^@M-^Y by 298 alternatively %C) and be placed in a directory that is not
312 the remote login username, M-bM-^@M-^X%uM-bM-^@M-^Y by the username and M-bM-^@M-^X%iM-bM-^@M-^Y by the 299 writable by other users. This ensures that shared connections
313 numeric user ID (uid) of the user running ssh(1), and M-bM-^@M-^X%CM-bM-^@M-^Y by a 300 are uniquely identified.
314 hash of the concatenation: %l%h%p%r. It is recommended that any
315 ControlPath used for opportunistic connection sharing include at
316 least %h, %p, and %r (or alternatively %C) and be placed in a
317 directory that is not writable by other users. This ensures that
318 shared connections are uniquely identified.
319 301
320 ControlPersist 302 ControlPersist
321 When used in conjunction with ControlMaster, specifies that the 303 When used in conjunction with ControlMaster, specifies that the
322 master connection should remain open in the background (waiting 304 master connection should remain open in the background (waiting
323 for future client connections) after the initial client 305 for future client connections) after the initial client
324 connection has been closed. If set to M-bM-^@M-^\noM-bM-^@M-^], then the master 306 connection has been closed. If set to no, then the master
325 connection will not be placed into the background, and will close 307 connection will not be placed into the background, and will close
326 as soon as the initial client connection is closed. If set to 308 as soon as the initial client connection is closed. If set to
327 M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\0M-bM-^@M-^], then the master connection will remain in the 309 yes or 0, then the master connection will remain in the
328 background indefinitely (until killed or closed via a mechanism 310 background indefinitely (until killed or closed via a mechanism
329 such as the ssh(1) M-bM-^@M-^\-O exitM-bM-^@M-^] option). If set to a time in 311 such as the "ssh -O exit"). If set to a time in seconds, or a
330 seconds, or a time in any of the formats documented in 312 time in any of the formats documented in sshd_config(5), then the
331 sshd_config(5), then the backgrounded master connection will 313 backgrounded master connection will automatically terminate after
332 automatically terminate after it has remained idle (with no 314 it has remained idle (with no client connections) for the
333 client connections) for the specified time. 315 specified time.
334 316
335 DynamicForward 317 DynamicForward
336 Specifies that a TCP port on the local machine be forwarded over 318 Specifies that a TCP port on the local machine be forwarded over
@@ -342,7 +324,7 @@ DESCRIPTION
342 the local port is bound in accordance with the GatewayPorts 324 the local port is bound in accordance with the GatewayPorts
343 setting. However, an explicit bind_address may be used to bind 325 setting. However, an explicit bind_address may be used to bind
344 the connection to a specific address. The bind_address of 326 the connection to a specific address. The bind_address of
345 M-bM-^@M-^\localhostM-bM-^@M-^] indicates that the listening port be bound for local 327 localhost indicates that the listening port be bound for local
346 use only, while an empty address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port 328 use only, while an empty address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port
347 should be available from all interfaces. 329 should be available from all interfaces.
348 330
@@ -352,17 +334,17 @@ DESCRIPTION
352 line. Only the superuser can forward privileged ports. 334 line. Only the superuser can forward privileged ports.
353 335
354 EnableSSHKeysign 336 EnableSSHKeysign
355 Setting this option to M-bM-^@M-^\yesM-bM-^@M-^] in the global client configuration 337 Setting this option to yes in the global client configuration
356 file /etc/ssh/ssh_config enables the use of the helper program 338 file /etc/ssh/ssh_config enables the use of the helper program
357 ssh-keysign(8) during HostbasedAuthentication. The argument must 339 ssh-keysign(8) during HostbasedAuthentication. The argument must
358 be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. This option should be 340 be yes or no (the default). This option should be placed in the
359 placed in the non-hostspecific section. See ssh-keysign(8) for 341 non-hostspecific section. See ssh-keysign(8) for more
360 more information. 342 information.
361 343
362 EscapeChar 344 EscapeChar
363 Sets the escape character (default: M-bM-^@M-^X~M-bM-^@M-^Y). The escape character 345 Sets the escape character (default: M-bM-^@M-^X~M-bM-^@M-^Y). The escape character
364 can also be set on the command line. The argument should be a 346 can also be set on the command line. The argument should be a
365 single character, M-bM-^@M-^X^M-bM-^@M-^Y followed by a letter, or M-bM-^@M-^\noneM-bM-^@M-^] to disable 347 single character, M-bM-^@M-^X^M-bM-^@M-^Y followed by a letter, or none to disable
366 the escape character entirely (making the connection transparent 348 the escape character entirely (making the connection transparent
367 for binary data). 349 for binary data).
368 350
@@ -373,18 +355,17 @@ DESCRIPTION
373 listen on a specified port). Note that ExitOnForwardFailure does 355 listen on a specified port). Note that ExitOnForwardFailure does
374 not apply to connections made over port forwardings and will not, 356 not apply to connections made over port forwardings and will not,
375 for example, cause ssh(1) to exit if TCP connections to the 357 for example, cause ssh(1) to exit if TCP connections to the
376 ultimate forwarding destination fail. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] 358 ultimate forwarding destination fail. The argument must be yes
377 or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 359 or no (the default).
378 360
379 FingerprintHash 361 FingerprintHash
380 Specifies the hash algorithm used when displaying key 362 Specifies the hash algorithm used when displaying key
381 fingerprints. Valid options are: M-bM-^@M-^\md5M-bM-^@M-^] and M-bM-^@M-^\sha256M-bM-^@M-^]. The 363 fingerprints. Valid options are: md5 and sha256 (the default).
382 default is M-bM-^@M-^\sha256M-bM-^@M-^].
383 364
384 ForwardAgent 365 ForwardAgent
385 Specifies whether the connection to the authentication agent (if 366 Specifies whether the connection to the authentication agent (if
386 any) will be forwarded to the remote machine. The argument must 367 any) will be forwarded to the remote machine. The argument must
387 be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 368 be yes or no (the default).
388 369
389 Agent forwarding should be enabled with caution. Users with the 370 Agent forwarding should be enabled with caution. Users with the
390 ability to bypass file permissions on the remote host (for the 371 ability to bypass file permissions on the remote host (for the
@@ -397,7 +378,7 @@ DESCRIPTION
397 ForwardX11 378 ForwardX11
398 Specifies whether X11 connections will be automatically 379 Specifies whether X11 connections will be automatically
399 redirected over the secure channel and DISPLAY set. The argument 380 redirected over the secure channel and DISPLAY set. The argument
400 must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 381 must be yes or no (the default).
401 382
402 X11 forwarding should be enabled with caution. Users with the 383 X11 forwarding should be enabled with caution. Users with the
403 ability to bypass file permissions on the remote host (for the 384 ability to bypass file permissions on the remote host (for the
@@ -414,17 +395,15 @@ DESCRIPTION
414 minutes has elapsed. 395 minutes has elapsed.
415 396
416 ForwardX11Trusted 397 ForwardX11Trusted
417 If this option is set to M-bM-^@M-^\yesM-bM-^@M-^], remote X11 clients will have full 398 If this option is set to yes, remote X11 clients will have full
418 access to the original X11 display. 399 access to the original X11 display.
419 400
420 If this option is set to M-bM-^@M-^\noM-bM-^@M-^], remote X11 clients will be 401 If this option is set to no (the default), remote X11 clients
421 considered untrusted and prevented from stealing or tampering 402 will be considered untrusted and prevented from stealing or
422 with data belonging to trusted X11 clients. Furthermore, the 403 tampering with data belonging to trusted X11 clients.
423 xauth(1) token used for the session will be set to expire after 404 Furthermore, the xauth(1) token used for the session will be set
424 20 minutes. Remote clients will be refused access after this 405 to expire after 20 minutes. Remote clients will be refused
425 time. 406 access after this time.
426
427 The default is M-bM-^@M-^\noM-bM-^@M-^].
428 407
429 See the X11 SECURITY extension specification for full details on 408 See the X11 SECURITY extension specification for full details on
430 the restrictions imposed on untrusted clients. 409 the restrictions imposed on untrusted clients.
@@ -436,8 +415,7 @@ DESCRIPTION
436 connecting to forwarded ports. GatewayPorts can be used to 415 connecting to forwarded ports. GatewayPorts can be used to
437 specify that ssh should bind local port forwardings to the 416 specify that ssh should bind local port forwardings to the
438 wildcard address, thus allowing remote hosts to connect to 417 wildcard address, thus allowing remote hosts to connect to
439 forwarded ports. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The 418 forwarded ports. The argument must be yes or no (the default).
440 default is M-bM-^@M-^\noM-bM-^@M-^].
441 419
442 GlobalKnownHostsFile 420 GlobalKnownHostsFile
443 Specifies one or more files to use for the global host key 421 Specifies one or more files to use for the global host key
@@ -446,25 +424,24 @@ DESCRIPTION
446 424
447 GSSAPIAuthentication 425 GSSAPIAuthentication
448 Specifies whether user authentication based on GSSAPI is allowed. 426 Specifies whether user authentication based on GSSAPI is allowed.
449 The default is M-bM-^@M-^\noM-bM-^@M-^]. 427 The default is no.
450 428
451 GSSAPIDelegateCredentials 429 GSSAPIDelegateCredentials
452 Forward (delegate) credentials to the server. The default is 430 Forward (delegate) credentials to the server. The default is no.
453 M-bM-^@M-^\noM-bM-^@M-^].
454 431
455 HashKnownHosts 432 HashKnownHosts
456 Indicates that ssh(1) should hash host names and addresses when 433 Indicates that ssh(1) should hash host names and addresses when
457 they are added to ~/.ssh/known_hosts. These hashed names may be 434 they are added to ~/.ssh/known_hosts. These hashed names may be
458 used normally by ssh(1) and sshd(8), but they do not reveal 435 used normally by ssh(1) and sshd(8), but they do not reveal
459 identifying information should the file's contents be disclosed. 436 identifying information should the file's contents be disclosed.
460 The default is M-bM-^@M-^\noM-bM-^@M-^]. Note that existing names and addresses in 437 The default is no. Note that existing names and addresses in
461 known hosts files will not be converted automatically, but may be 438 known hosts files will not be converted automatically, but may be
462 manually hashed using ssh-keygen(1). 439 manually hashed using ssh-keygen(1).
463 440
464 HostbasedAuthentication 441 HostbasedAuthentication
465 Specifies whether to try rhosts based authentication with public 442 Specifies whether to try rhosts based authentication with public
466 key authentication. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The 443 key authentication. The argument must be yes or no (the
467 default is M-bM-^@M-^\noM-bM-^@M-^]. 444 default).
468 445
469 HostbasedKeyTypes 446 HostbasedKeyTypes
470 Specifies the key types that will be used for hostbased 447 Specifies the key types that will be used for hostbased
@@ -501,8 +478,8 @@ DESCRIPTION
501 If hostkeys are known for the destination host then this default 478 If hostkeys are known for the destination host then this default
502 is modified to prefer their algorithms. 479 is modified to prefer their algorithms.
503 480
504 The list of available key types may also be obtained using the -Q 481 The list of available key types may also be obtained using "ssh
505 option of ssh(1) with an argument of M-bM-^@M-^\keyM-bM-^@M-^]. 482 -Q key".
506 483
507 HostKeyAlias 484 HostKeyAlias
508 Specifies an alias that should be used instead of the real host 485 Specifies an alias that should be used instead of the real host
@@ -512,41 +489,33 @@ DESCRIPTION
512 489
513 HostName 490 HostName
514 Specifies the real host name to log into. This can be used to 491 Specifies the real host name to log into. This can be used to
515 specify nicknames or abbreviations for hosts. If the hostname 492 specify nicknames or abbreviations for hosts. Arguments to
516 contains the character sequence M-bM-^@M-^X%hM-bM-^@M-^Y, then this will be replaced 493 HostName accept the tokens described in the TOKENS section.
517 with the host name specified on the command line (this is useful 494 Numeric IP addresses are also permitted (both on the command line
518 for manipulating unqualified names). The character sequence M-bM-^@M-^X%%M-bM-^@M-^Y 495 and in HostName specifications). The default is the name given
519 will be replaced by a single M-bM-^@M-^X%M-bM-^@M-^Y character, which may be used 496 on the command line.
520 when specifying IPv6 link-local addresses.
521
522 The default is the name given on the command line. Numeric IP
523 addresses are also permitted (both on the command line and in
524 HostName specifications).
525 497
526 IdentitiesOnly 498 IdentitiesOnly
527 Specifies that ssh(1) should only use the authentication identity 499 Specifies that ssh(1) should only use the authentication identity
528 and certificate files explicitly configured in the ssh_config 500 and certificate files explicitly configured in the ssh_config
529 files or passed on the ssh(1) command-line, even if ssh-agent(1) 501 files or passed on the ssh(1) command-line, even if ssh-agent(1)
530 or a PKCS11Provider offers more identities. The argument to this 502 or a PKCS11Provider offers more identities. The argument to this
531 keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. This option is intended for 503 keyword must be yes or no (the default). This option is intended
532 situations where ssh-agent offers many different identities. The 504 for situations where ssh-agent offers many different identities.
533 default is M-bM-^@M-^\noM-bM-^@M-^].
534 505
535 IdentityAgent 506 IdentityAgent
536 Specifies the UNIX-domain socket used to communicate with the 507 Specifies the UNIX-domain socket used to communicate with the
537 authentication agent. 508 authentication agent.
538 509
539 This option overrides the M-bM-^@M-^\SSH_AUTH_SOCKM-bM-^@M-^] environment variable 510 This option overrides the SSH_AUTH_SOCK environment variable and
540 and can be used to select a specific agent. Setting the socket 511 can be used to select a specific agent. Setting the socket name
541 name to M-bM-^@M-^\noneM-bM-^@M-^] disables the use of an authentication agent. If 512 to none disables the use of an authentication agent. If the
542 the string M-bM-^@M-^\SSH_AUTH_SOCKM-bM-^@M-^] is specified, the location of the 513 string "SSH_AUTH_SOCK" is specified, the location of the socket
543 socket will be read from the SSH_AUTH_SOCK environment variable. 514 will be read from the SSH_AUTH_SOCK environment variable.
544 515
545 The socket name may use the tilde syntax to refer to a user's 516 Arguments to IdentityAgent may use the tilde syntax to refer to a
546 home directory or one of the following escape characters: M-bM-^@M-^X%dM-bM-^@M-^Y 517 user's home directory or the tokens described in the TOKENS
547 (local user's home directory), M-bM-^@M-^X%uM-bM-^@M-^Y (local user name), M-bM-^@M-^X%lM-bM-^@M-^Y 518 section.
548 (local host name), M-bM-^@M-^X%hM-bM-^@M-^Y (remote host name) or M-bM-^@M-^X%rM-bM-^@M-^Y (remote user
549 name).
550 519
551 IdentityFile 520 IdentityFile
552 Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA 521 Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA
@@ -560,10 +529,9 @@ DESCRIPTION
560 from the filename obtained by appending -cert.pub to the path of 529 from the filename obtained by appending -cert.pub to the path of
561 a specified IdentityFile. 530 a specified IdentityFile.
562 531
563 The file name may use the tilde syntax to refer to a user's home 532 Arguments to IdentityFile may use the tilde syntax to refer to a
564 directory or one of the following escape characters: M-bM-^@M-^X%dM-bM-^@M-^Y (local 533 user's home directory or the tokens described in the TOKENS
565 user's home directory), M-bM-^@M-^X%uM-bM-^@M-^Y (local user name), M-bM-^@M-^X%lM-bM-^@M-^Y (local host 534 section.
566 name), M-bM-^@M-^X%hM-bM-^@M-^Y (remote host name) or M-bM-^@M-^X%rM-bM-^@M-^Y (remote user name).
567 535
568 It is possible to have multiple identity files specified in 536 It is possible to have multiple identity files specified in
569 configuration files; all these identities will be tried in 537 configuration files; all these identities will be tried in
@@ -588,7 +556,7 @@ DESCRIPTION
588 Include 556 Include
589 Include the specified configuration file(s). Multiple pathnames 557 Include the specified configuration file(s). Multiple pathnames
590 may be specified and each pathname may contain glob(3) wildcards 558 may be specified and each pathname may contain glob(3) wildcards
591 and, for user configurations, shell-like M-bM-^@M-^\~M-bM-^@M-^] references to user 559 and, for user configurations, shell-like M-bM-^@M-^X~M-bM-^@M-^Y references to user
592 home directories. Files without absolute paths are assumed to be 560 home directories. Files without absolute paths are assumed to be
593 in ~/.ssh if included in a user configuration file or /etc/ssh if 561 in ~/.ssh if included in a user configuration file or /etc/ssh if
594 included from the system configuration file. Include directive 562 included from the system configuration file. Include directive
@@ -596,30 +564,27 @@ DESCRIPTION
596 inclusion. 564 inclusion.
597 565
598 IPQoS Specifies the IPv4 type-of-service or DSCP class for connections. 566 IPQoS Specifies the IPv4 type-of-service or DSCP class for connections.
599 Accepted values are M-bM-^@M-^\af11M-bM-^@M-^], M-bM-^@M-^\af12M-bM-^@M-^], M-bM-^@M-^\af13M-bM-^@M-^], M-bM-^@M-^\af21M-bM-^@M-^], M-bM-^@M-^\af22M-bM-^@M-^], 567 Accepted values are af11, af12, af13, af21, af22, af23, af31,
600 M-bM-^@M-^\af23M-bM-^@M-^], M-bM-^@M-^\af31M-bM-^@M-^], M-bM-^@M-^\af32M-bM-^@M-^], M-bM-^@M-^\af33M-bM-^@M-^], M-bM-^@M-^\af41M-bM-^@M-^], M-bM-^@M-^\af42M-bM-^@M-^], M-bM-^@M-^\af43M-bM-^@M-^], M-bM-^@M-^\cs0M-bM-^@M-^], 568 af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6,
601 M-bM-^@M-^\cs1M-bM-^@M-^], M-bM-^@M-^\cs2M-bM-^@M-^], M-bM-^@M-^\cs3M-bM-^@M-^], M-bM-^@M-^\cs4M-bM-^@M-^], M-bM-^@M-^\cs5M-bM-^@M-^], M-bM-^@M-^\cs6M-bM-^@M-^], M-bM-^@M-^\cs7M-bM-^@M-^], M-bM-^@M-^\efM-bM-^@M-^], 569 cs7, ef, lowdelay, throughput, reliability, or a numeric value.
602 M-bM-^@M-^\lowdelayM-bM-^@M-^], M-bM-^@M-^\throughputM-bM-^@M-^], M-bM-^@M-^\reliabilityM-bM-^@M-^], or a numeric value.
603 This option may take one or two arguments, separated by 570 This option may take one or two arguments, separated by
604 whitespace. If one argument is specified, it is used as the 571 whitespace. If one argument is specified, it is used as the
605 packet class unconditionally. If two values are specified, the 572 packet class unconditionally. If two values are specified, the
606 first is automatically selected for interactive sessions and the 573 first is automatically selected for interactive sessions and the
607 second for non-interactive sessions. The default is M-bM-^@M-^\lowdelayM-bM-^@M-^] 574 second for non-interactive sessions. The default is lowdelay for
608 for interactive sessions and M-bM-^@M-^\throughputM-bM-^@M-^] for non-interactive 575 interactive sessions and throughput for non-interactive sessions.
609 sessions.
610 576
611 KbdInteractiveAuthentication 577 KbdInteractiveAuthentication
612 Specifies whether to use keyboard-interactive authentication. 578 Specifies whether to use keyboard-interactive authentication.
613 The argument to this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default 579 The argument to this keyword must be yes (the default) or no.
614 is M-bM-^@M-^\yesM-bM-^@M-^].
615 580
616 KbdInteractiveDevices 581 KbdInteractiveDevices
617 Specifies the list of methods to use in keyboard-interactive 582 Specifies the list of methods to use in keyboard-interactive
618 authentication. Multiple method names must be comma-separated. 583 authentication. Multiple method names must be comma-separated.
619 The default is to use the server specified list. The methods 584 The default is to use the server specified list. The methods
620 available vary depending on what the server supports. For an 585 available vary depending on what the server supports. For an
621 OpenSSH server, it may be zero or more of: M-bM-^@M-^\bsdauthM-bM-^@M-^], M-bM-^@M-^\pamM-bM-^@M-^], and 586 OpenSSH server, it may be zero or more of: bsdauth, pam, and
622 M-bM-^@M-^\skeyM-bM-^@M-^]. 587 skey.
623 588
624 KexAlgorithms 589 KexAlgorithms
625 Specifies the available KEX (Key Exchange) algorithms. Multiple 590 Specifies the available KEX (Key Exchange) algorithms. Multiple
@@ -628,25 +593,21 @@ DESCRIPTION
628 will be appended to the default set instead of replacing them. 593 will be appended to the default set instead of replacing them.
629 The default is: 594 The default is:
630 595
631 curve25519-sha256@libssh.org, 596 curve25519-sha256,curve25519-sha256@libssh.org,
632 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 597 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
633 diffie-hellman-group-exchange-sha256, 598 diffie-hellman-group-exchange-sha256,
634 diffie-hellman-group-exchange-sha1, 599 diffie-hellman-group-exchange-sha1,
635 diffie-hellman-group14-sha1 600 diffie-hellman-group14-sha1
636 601
637 The list of available key exchange algorithms may also be 602 The list of available key exchange algorithms may also be
638 obtained using the -Q option of ssh(1) with an argument of M-bM-^@M-^\kexM-bM-^@M-^]. 603 obtained using "ssh -Q kex".
639 604
640 LocalCommand 605 LocalCommand
641 Specifies a command to execute on the local machine after 606 Specifies a command to execute on the local machine after
642 successfully connecting to the server. The command string 607 successfully connecting to the server. The command string
643 extends to the end of the line, and is executed with the user's 608 extends to the end of the line, and is executed with the user's
644 shell. The following escape character substitutions will be 609 shell. Arguments to LocalCommand accept the tokens described in
645 performed: M-bM-^@M-^X%dM-bM-^@M-^Y (local user's home directory), M-bM-^@M-^X%hM-bM-^@M-^Y (remote host 610 the TOKENS section.
646 name), M-bM-^@M-^X%lM-bM-^@M-^Y (local host name), M-bM-^@M-^X%nM-bM-^@M-^Y (host name as provided on the
647 command line), M-bM-^@M-^X%pM-bM-^@M-^Y (remote port), M-bM-^@M-^X%rM-bM-^@M-^Y (remote user name) or
648 M-bM-^@M-^X%uM-bM-^@M-^Y (local user name) or M-bM-^@M-^X%CM-bM-^@M-^Y by a hash of the concatenation:
649 %l%h%p%r.
650 611
651 The command is run synchronously and does not have access to the 612 The command is run synchronously and does not have access to the
652 session of the ssh(1) that spawned it. It should not be used for 613 session of the ssh(1) that spawned it. It should not be used for
@@ -666,7 +627,7 @@ DESCRIPTION
666 privileged ports. By default, the local port is bound in 627 privileged ports. By default, the local port is bound in
667 accordance with the GatewayPorts setting. However, an explicit 628 accordance with the GatewayPorts setting. However, an explicit
668 bind_address may be used to bind the connection to a specific 629 bind_address may be used to bind the connection to a specific
669 address. The bind_address of M-bM-^@M-^\localhostM-bM-^@M-^] indicates that the 630 address. The bind_address of localhost indicates that the
670 listening port be bound for local use only, while an empty 631 listening port be bound for local use only, while an empty
671 address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port should be available from 632 address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port should be available from
672 all interfaces. 633 all interfaces.
@@ -685,7 +646,7 @@ DESCRIPTION
685 then the specified algorithms will be appended to the default set 646 then the specified algorithms will be appended to the default set
686 instead of replacing them. 647 instead of replacing them.
687 648
688 The algorithms that contain M-bM-^@M-^\-etmM-bM-^@M-^] calculate the MAC after 649 The algorithms that contain "-etm" calculate the MAC after
689 encryption (encrypt-then-mac). These are considered safer and 650 encryption (encrypt-then-mac). These are considered safer and
690 their use recommended. 651 their use recommended.
691 652
@@ -698,7 +659,7 @@ DESCRIPTION
698 hmac-sha2-256,hmac-sha2-512,hmac-sha1 659 hmac-sha2-256,hmac-sha2-512,hmac-sha1
699 660
700 The list of available MAC algorithms may also be obtained using 661 The list of available MAC algorithms may also be obtained using
701 the -Q option of ssh(1) with an argument of M-bM-^@M-^\macM-bM-^@M-^]. 662 "ssh -Q mac".
702 663
703 NoHostAuthenticationForLocalhost 664 NoHostAuthenticationForLocalhost
704 This option can be used if the home directory is shared across 665 This option can be used if the home directory is shared across
@@ -706,8 +667,7 @@ DESCRIPTION
706 machine on each of the machines and the user will get many 667 machine on each of the machines and the user will get many
707 warnings about changed host keys. However, this option disables 668 warnings about changed host keys. However, this option disables
708 host authentication for localhost. The argument to this keyword 669 host authentication for localhost. The argument to this keyword
709 must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is to check the host key for 670 must be yes or no. (the default).
710 localhost.
711 671
712 NumberOfPasswordPrompts 672 NumberOfPasswordPrompts
713 Specifies the number of password prompts before giving up. The 673 Specifies the number of password prompts before giving up. The
@@ -715,12 +675,12 @@ DESCRIPTION
715 675
716 PasswordAuthentication 676 PasswordAuthentication
717 Specifies whether to use password authentication. The argument 677 Specifies whether to use password authentication. The argument
718 to this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 678 to this keyword must be yes (the default) or no.
719 679
720 PermitLocalCommand 680 PermitLocalCommand
721 Allow local command execution via the LocalCommand option or 681 Allow local command execution via the LocalCommand option or
722 using the !command escape sequence in ssh(1). The argument must 682 using the !command escape sequence in ssh(1). The argument must
723 be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 683 be yes or no (the default).
724 684
725 PKCS11Provider 685 PKCS11Provider
726 Specifies which PKCS#11 provider to use. The argument to this 686 Specifies which PKCS#11 provider to use. The argument to this
@@ -742,12 +702,12 @@ DESCRIPTION
742 702
743 Protocol 703 Protocol
744 Specifies the protocol versions ssh(1) should support in order of 704 Specifies the protocol versions ssh(1) should support in order of
745 preference. The possible values are M-bM-^@M-^X1M-bM-^@M-^Y and M-bM-^@M-^X2M-bM-^@M-^Y. Multiple 705 preference. The possible values are 1 and 2. Multiple versions
746 versions must be comma-separated. When this option is set to 706 must be comma-separated. When this option is set to 2,1 ssh will
747 M-bM-^@M-^\2,1M-bM-^@M-^] ssh will try version 2 and fall back to version 1 if 707 try version 2 and fall back to version 1 if version 2 is not
748 version 2 is not available. The default is M-bM-^@M-^X2M-bM-^@M-^Y. Protocol 1 708 available. The default is version 2. Protocol 1 suffers from a
749 suffers from a number of cryptographic weaknesses and should not 709 number of cryptographic weaknesses and should not be used. It is
750 be used. It is only offered to support legacy devices. 710 only offered to support legacy devices.
751 711
752 ProxyCommand 712 ProxyCommand
753 Specifies the command to use to connect to the server. The 713 Specifies the command to use to connect to the server. The
@@ -755,15 +715,14 @@ DESCRIPTION
755 using the user's shell M-bM-^@M-^XexecM-bM-^@M-^Y directive to avoid a lingering 715 using the user's shell M-bM-^@M-^XexecM-bM-^@M-^Y directive to avoid a lingering
756 shell process. 716 shell process.
757 717
758 In the command string, any occurrence of M-bM-^@M-^X%hM-bM-^@M-^Y will be substituted 718 Arguments to ProxyCommand accept the tokens described in the
759 by the host name to connect, M-bM-^@M-^X%pM-bM-^@M-^Y by the port, and M-bM-^@M-^X%rM-bM-^@M-^Y by the 719 TOKENS section. The command can be basically anything, and
760 remote user name. The command can be basically anything, and
761 should read from its standard input and write to its standard 720 should read from its standard input and write to its standard
762 output. It should eventually connect an sshd(8) server running 721 output. It should eventually connect an sshd(8) server running
763 on some machine, or execute sshd -i somewhere. Host key 722 on some machine, or execute sshd -i somewhere. Host key
764 management will be done using the HostName of the host being 723 management will be done using the HostName of the host being
765 connected (defaulting to the name typed by the user). Setting 724 connected (defaulting to the name typed by the user). Setting
766 the command to M-bM-^@M-^\noneM-bM-^@M-^] disables this option entirely. Note that 725 the command to none disables this option entirely. Note that
767 CheckHostIP is not available for connects with a proxy command. 726 CheckHostIP is not available for connects with a proxy command.
768 727
769 This directive is useful in conjunction with nc(1) and its proxy 728 This directive is useful in conjunction with nc(1) and its proxy
@@ -787,7 +746,7 @@ DESCRIPTION
787 ProxyUseFdpass 746 ProxyUseFdpass
788 Specifies that ProxyCommand will pass a connected file descriptor 747 Specifies that ProxyCommand will pass a connected file descriptor
789 back to ssh(1) instead of continuing to execute and pass data. 748 back to ssh(1) instead of continuing to execute and pass data.
790 The default is M-bM-^@M-^\noM-bM-^@M-^]. 749 The default is no.
791 750
792 PubkeyAcceptedKeyTypes 751 PubkeyAcceptedKeyTypes
793 Specifies the key types that will be used for public key 752 Specifies the key types that will be used for public key
@@ -804,11 +763,12 @@ DESCRIPTION
804 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 763 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
805 ssh-ed25519,ssh-rsa 764 ssh-ed25519,ssh-rsa
806 765
807 The -Q option of ssh(1) may be used to list supported key types. 766 The list of available key types may also be obtained using "ssh
767 -Q key".
808 768
809 PubkeyAuthentication 769 PubkeyAuthentication
810 Specifies whether to try public key authentication. The argument 770 Specifies whether to try public key authentication. The argument
811 to this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 771 to this keyword must be yes (the default) or no.
812 772
813 RekeyLimit 773 RekeyLimit
814 Specifies the maximum amount of data that may be transmitted 774 Specifies the maximum amount of data that may be transmitted
@@ -820,7 +780,7 @@ DESCRIPTION
820 M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second 780 M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second
821 value is specified in seconds and may use any of the units 781 value is specified in seconds and may use any of the units
822 documented in the TIME FORMATS section of sshd_config(5). The 782 documented in the TIME FORMATS section of sshd_config(5). The
823 default value for RekeyLimit is M-bM-^@M-^\default noneM-bM-^@M-^], which means that 783 default value for RekeyLimit is default none, which means that
824 rekeying is performed after the cipher's default amount of data 784 rekeying is performed after the cipher's default amount of data
825 has been sent or received and no time based rekeying is done. 785 has been sent or received and no time based rekeying is done.
826 786
@@ -834,7 +794,7 @@ DESCRIPTION
834 given on the command line. Privileged ports can be forwarded 794 given on the command line. Privileged ports can be forwarded
835 only when logging in as root on the remote machine. 795 only when logging in as root on the remote machine.
836 796
837 If the port argument is M-bM-^@M-^X0M-bM-^@M-^Y, the listen port will be dynamically 797 If the port argument is 0, the listen port will be dynamically
838 allocated on the server and reported to the client at run time. 798 allocated on the server and reported to the client at run time.
839 799
840 If the bind_address is not specified, the default is to only bind 800 If the bind_address is not specified, the default is to only bind
@@ -846,9 +806,9 @@ DESCRIPTION
846 806
847 RequestTTY 807 RequestTTY
848 Specifies whether to request a pseudo-tty for the session. The 808 Specifies whether to request a pseudo-tty for the session. The
849 argument may be one of: M-bM-^@M-^\noM-bM-^@M-^] (never request a TTY), M-bM-^@M-^\yesM-bM-^@M-^] (always 809 argument may be one of: no (never request a TTY), yes (always
850 request a TTY when standard input is a TTY), M-bM-^@M-^\forceM-bM-^@M-^] (always 810 request a TTY when standard input is a TTY), force (always
851 request a TTY) or M-bM-^@M-^\autoM-bM-^@M-^] (request a TTY when opening a login 811 request a TTY) or auto (request a TTY when opening a login
852 session). This option mirrors the -t and -T flags for ssh(1). 812 session). This option mirrors the -t and -T flags for ssh(1).
853 813
854 RevokedHostKeys 814 RevokedHostKeys
@@ -862,16 +822,16 @@ DESCRIPTION
862 822
863 RhostsRSAAuthentication 823 RhostsRSAAuthentication
864 Specifies whether to try rhosts based authentication with RSA 824 Specifies whether to try rhosts based authentication with RSA
865 host authentication. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The 825 host authentication. The argument must be yes or no (the
866 default is M-bM-^@M-^\noM-bM-^@M-^]. This option applies to protocol version 1 only 826 default). This option applies to protocol version 1 only and
867 and requires ssh(1) to be setuid root. 827 requires ssh(1) to be setuid root.
868 828
869 RSAAuthentication 829 RSAAuthentication
870 Specifies whether to try RSA authentication. The argument to 830 Specifies whether to try RSA authentication. The argument to
871 this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. RSA authentication will only 831 this keyword must be yes (the default) or no. RSA authentication
872 be attempted if the identity file exists, or an authentication 832 will only be attempted if the identity file exists, or an
873 agent is running. The default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that this option 833 authentication agent is running. Note that this option applies
874 applies to protocol version 1 only. 834 to protocol version 1 only.
875 835
876 SendEnv 836 SendEnv
877 Specifies what variables from the local environ(7) should be sent 837 Specifies what variables from the local environ(7) should be sent
@@ -932,24 +892,23 @@ DESCRIPTION
932 domain socket file. This option is only used for port forwarding 892 domain socket file. This option is only used for port forwarding
933 to a Unix-domain socket file. 893 to a Unix-domain socket file.
934 894
935 The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 895 The argument must be yes or no (the default).
936 896
937 StrictHostKeyChecking 897 StrictHostKeyChecking
938 If this flag is set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) will never automatically add 898 If this flag is set to yes, ssh(1) will never automatically add
939 host keys to the ~/.ssh/known_hosts file, and refuses to connect 899 host keys to the ~/.ssh/known_hosts file, and refuses to connect
940 to hosts whose host key has changed. This provides maximum 900 to hosts whose host key has changed. This provides maximum
941 protection against trojan horse attacks, though it can be 901 protection against trojan horse attacks, though it can be
942 annoying when the /etc/ssh/ssh_known_hosts file is poorly 902 annoying when the /etc/ssh/ssh_known_hosts file is poorly
943 maintained or when connections to new hosts are frequently made. 903 maintained or when connections to new hosts are frequently made.
944 This option forces the user to manually add all new hosts. If 904 This option forces the user to manually add all new hosts. If
945 this flag is set to M-bM-^@M-^\noM-bM-^@M-^], ssh will automatically add new host 905 this flag is set to no, ssh will automatically add new host keys
946 keys to the user known hosts files. If this flag is set to 906 to the user known hosts files. If this flag is set to ask (the
947 M-bM-^@M-^\askM-bM-^@M-^], new host keys will be added to the user known host files 907 default), new host keys will be added to the user known host
948 only after the user has confirmed that is what they really want 908 files only after the user has confirmed that is what they really
949 to do, and ssh will refuse to connect to hosts whose host key has 909 want to do, and ssh will refuse to connect to hosts whose host
950 changed. The host keys of known hosts will be verified 910 key has changed. The host keys of known hosts will be verified
951 automatically in all cases. The argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\noM-bM-^@M-^], or 911 automatically in all cases.
952 M-bM-^@M-^\askM-bM-^@M-^]. The default is M-bM-^@M-^\askM-bM-^@M-^].
953 912
954 TCPKeepAlive 913 TCPKeepAlive
955 Specifies whether the system should send TCP keepalive messages 914 Specifies whether the system should send TCP keepalive messages
@@ -958,53 +917,50 @@ DESCRIPTION
958 this means that connections will die if the route is down 917 this means that connections will die if the route is down
959 temporarily, and some people find it annoying. 918 temporarily, and some people find it annoying.
960 919
961 The default is M-bM-^@M-^\yesM-bM-^@M-^] (to send TCP keepalive messages), and the 920 The default is yes (to send TCP keepalive messages), and the
962 client will notice if the network goes down or the remote host 921 client will notice if the network goes down or the remote host
963 dies. This is important in scripts, and many users want it too. 922 dies. This is important in scripts, and many users want it too.
964 923
965 To disable TCP keepalive messages, the value should be set to 924 To disable TCP keepalive messages, the value should be set to no.
966 M-bM-^@M-^\noM-bM-^@M-^].
967 925
968 Tunnel Request tun(4) device forwarding between the client and the 926 Tunnel Request tun(4) device forwarding between the client and the
969 server. The argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\point-to-pointM-bM-^@M-^] (layer 3), 927 server. The argument must be yes, point-to-point (layer 3),
970 M-bM-^@M-^\ethernetM-bM-^@M-^] (layer 2), or M-bM-^@M-^\noM-bM-^@M-^]. Specifying M-bM-^@M-^\yesM-bM-^@M-^] requests the 928 ethernet (layer 2), or no (the default). Specifying yes requests
971 default tunnel mode, which is M-bM-^@M-^\point-to-pointM-bM-^@M-^]. The default is 929 the default tunnel mode, which is point-to-point.
972 M-bM-^@M-^\noM-bM-^@M-^].
973 930
974 TunnelDevice 931 TunnelDevice
975 Specifies the tun(4) devices to open on the client (local_tun) 932 Specifies the tun(4) devices to open on the client (local_tun)
976 and the server (remote_tun). 933 and the server (remote_tun).
977 934
978 The argument must be local_tun[:remote_tun]. The devices may be 935 The argument must be local_tun[:remote_tun]. The devices may be
979 specified by numerical ID or the keyword M-bM-^@M-^\anyM-bM-^@M-^], which uses the 936 specified by numerical ID or the keyword any, which uses the next
980 next available tunnel device. If remote_tun is not specified, it 937 available tunnel device. If remote_tun is not specified, it
981 defaults to M-bM-^@M-^\anyM-bM-^@M-^]. The default is M-bM-^@M-^\any:anyM-bM-^@M-^]. 938 defaults to any. The default is any:any.
982 939
983 UpdateHostKeys 940 UpdateHostKeys
984 Specifies whether ssh(1) should accept notifications of 941 Specifies whether ssh(1) should accept notifications of
985 additional hostkeys from the server sent after authentication has 942 additional hostkeys from the server sent after authentication has
986 completed and add them to UserKnownHostsFile. The argument must 943 completed and add them to UserKnownHostsFile. The argument must
987 be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\noM-bM-^@M-^] (the default) or M-bM-^@M-^\askM-bM-^@M-^]. Enabling this option 944 be yes, no (the default) or ask. Enabling this option allows
988 allows learning alternate hostkeys for a server and supports 945 learning alternate hostkeys for a server and supports graceful
989 graceful key rotation by allowing a server to send replacement 946 key rotation by allowing a server to send replacement public keys
990 public keys before old ones are removed. Additional hostkeys are 947 before old ones are removed. Additional hostkeys are only
991 only accepted if the key used to authenticate the host was 948 accepted if the key used to authenticate the host was already
992 already trusted or explicitly accepted by the user. If 949 trusted or explicitly accepted by the user. If UpdateHostKeys is
993 UpdateHostKeys is set to M-bM-^@M-^\askM-bM-^@M-^], then the user is asked to confirm 950 set to ask, then the user is asked to confirm the modifications
994 the modifications to the known_hosts file. Confirmation is 951 to the known_hosts file. Confirmation is currently incompatible
995 currently incompatible with ControlPersist, and will be disabled 952 with ControlPersist, and will be disabled if it is enabled.
996 if it is enabled.
997 953
998 Presently, only sshd(8) from OpenSSH 6.8 and greater support the 954 Presently, only sshd(8) from OpenSSH 6.8 and greater support the
999 M-bM-^@M-^\hostkeys@openssh.comM-bM-^@M-^] protocol extension used to inform the 955 "hostkeys@openssh.com" protocol extension used to inform the
1000 client of all the server's hostkeys. 956 client of all the server's hostkeys.
1001 957
1002 UsePrivilegedPort 958 UsePrivilegedPort
1003 Specifies whether to use a privileged port for outgoing 959 Specifies whether to use a privileged port for outgoing
1004 connections. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is 960 connections. The argument must be yes or no (the default). If
1005 M-bM-^@M-^\noM-bM-^@M-^]. If set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) must be setuid root. Note that 961 set to yes, ssh(1) must be setuid root. Note that this option
1006 this option must be set to M-bM-^@M-^\yesM-bM-^@M-^] for RhostsRSAAuthentication with 962 must be set to yes for RhostsRSAAuthentication with older
1007 older servers. 963 servers.
1008 964
1009 User Specifies the user to log in as. This can be useful when a 965 User Specifies the user to log in as. This can be useful when a
1010 different user name is used on different machines. This saves 966 different user name is used on different machines. This saves
@@ -1018,24 +974,23 @@ DESCRIPTION
1018 974
1019 VerifyHostKeyDNS 975 VerifyHostKeyDNS
1020 Specifies whether to verify the remote key using DNS and SSHFP 976 Specifies whether to verify the remote key using DNS and SSHFP
1021 resource records. If this option is set to M-bM-^@M-^\yesM-bM-^@M-^], the client 977 resource records. If this option is set to yes, the client will
1022 will implicitly trust keys that match a secure fingerprint from 978 implicitly trust keys that match a secure fingerprint from DNS.
1023 DNS. Insecure fingerprints will be handled as if this option was 979 Insecure fingerprints will be handled as if this option was set
1024 set to M-bM-^@M-^\askM-bM-^@M-^]. If this option is set to M-bM-^@M-^\askM-bM-^@M-^], information on 980 to ask. If this option is set to ask, information on fingerprint
1025 fingerprint match will be displayed, but the user will still need 981 match will be displayed, but the user will still need to confirm
1026 to confirm new host keys according to the StrictHostKeyChecking 982 new host keys according to the StrictHostKeyChecking option. The
1027 option. The argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\noM-bM-^@M-^], or M-bM-^@M-^\askM-bM-^@M-^]. The default 983 default is no.
1028 is M-bM-^@M-^\noM-bM-^@M-^].
1029 984
1030 See also VERIFYING HOST KEYS in ssh(1). 985 See also VERIFYING HOST KEYS in ssh(1).
1031 986
1032 VisualHostKey 987 VisualHostKey
1033 If this flag is set to M-bM-^@M-^\yesM-bM-^@M-^], an ASCII art representation of the 988 If this flag is set to yes, an ASCII art representation of the
1034 remote host key fingerprint is printed in addition to the 989 remote host key fingerprint is printed in addition to the
1035 fingerprint string at login and for unknown host keys. If this 990 fingerprint string at login and for unknown host keys. If this
1036 flag is set to M-bM-^@M-^\noM-bM-^@M-^], no fingerprint strings are printed at login 991 flag is set to no (the default), no fingerprint strings are
1037 and only the fingerprint string will be printed for unknown host 992 printed at login and only the fingerprint string will be printed
1038 keys. The default is M-bM-^@M-^\noM-bM-^@M-^]. 993 for unknown host keys.
1039 994
1040 XAuthLocation 995 XAuthLocation
1041 Specifies the full pathname of the xauth(1) program. The default 996 Specifies the full pathname of the xauth(1) program. The default
@@ -1045,7 +1000,7 @@ PATTERNS
1045 A pattern consists of zero or more non-whitespace characters, M-bM-^@M-^X*M-bM-^@M-^Y (a 1000 A pattern consists of zero or more non-whitespace characters, M-bM-^@M-^X*M-bM-^@M-^Y (a
1046 wildcard that matches zero or more characters), or M-bM-^@M-^X?M-bM-^@M-^Y (a wildcard that 1001 wildcard that matches zero or more characters), or M-bM-^@M-^X?M-bM-^@M-^Y (a wildcard that
1047 matches exactly one character). For example, to specify a set of 1002 matches exactly one character). For example, to specify a set of
1048 declarations for any host in the M-bM-^@M-^\.co.ukM-bM-^@M-^] set of domains, the following 1003 declarations for any host in the ".co.uk" set of domains, the following
1049 pattern could be used: 1004 pattern could be used:
1050 1005
1051 Host *.co.uk 1006 Host *.co.uk
@@ -1058,11 +1013,43 @@ PATTERNS
1058 A pattern-list is a comma-separated list of patterns. Patterns within 1013 A pattern-list is a comma-separated list of patterns. Patterns within
1059 pattern-lists may be negated by preceding them with an exclamation mark 1014 pattern-lists may be negated by preceding them with an exclamation mark
1060 (M-bM-^@M-^X!M-bM-^@M-^Y). For example, to allow a key to be used from anywhere within an 1015 (M-bM-^@M-^X!M-bM-^@M-^Y). For example, to allow a key to be used from anywhere within an
1061 organization except from the M-bM-^@M-^\dialupM-bM-^@M-^] pool, the following entry (in 1016 organization except from the "dialup" pool, the following entry (in
1062 authorized_keys) could be used: 1017 authorized_keys) could be used:
1063 1018
1064 from="!*.dialup.example.com,*.example.com" 1019 from="!*.dialup.example.com,*.example.com"
1065 1020
1021TOKENS
1022 Arguments to some keywords can make use of tokens, which are expanded at
1023 runtime:
1024
1025 %% A literal M-bM-^@M-^X%M-bM-^@M-^Y.
1026 %C Shorthand for %l%h%p%r.
1027 %d Local user's home directory.
1028 %h The remote hostname.
1029 %i The local user ID.
1030 %L The local hostname.
1031 %l The local hostname, including the domain name.
1032 %n The original remote hostname, as given on the command line.
1033 %p The remote port.
1034 %r The remote username.
1035 %u The local username.
1036
1037 Match exec accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u.
1038
1039 CertificateFile accepts the tokens %%, %d, %h, %l, %r, and %u.
1040
1041 ControlPath accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and
1042 %u.
1043
1044 HostName accepts the tokens %% and %h.
1045
1046 IdentityAgent and IdentityFile accept the tokens %%, %d, %h, %l, %r, and
1047 %u.
1048
1049 LocalCommand accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u.
1050
1051 ProxyCommand accepts the tokens %%, %h, %p, and %r.
1052
1066FILES 1053FILES
1067 ~/.ssh/config 1054 ~/.ssh/config
1068 This is the per-user configuration file. The format of this file 1055 This is the per-user configuration file. The format of this file
@@ -1087,4 +1074,4 @@ AUTHORS
1087 created OpenSSH. Markus Friedl contributed the support for SSH protocol 1074 created OpenSSH. Markus Friedl contributed the support for SSH protocol
1088 versions 1.5 and 2.0. 1075 versions 1.5 and 2.0.
1089 1076
1090OpenBSD 6.0 July 22, 2016 OpenBSD 6.0 1077OpenBSD 6.0 October 15, 2016 OpenBSD 6.0
diff --git a/ssh_config.5 b/ssh_config.5
index c96725862..8dce757ec 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh_config.5,v 1.236 2016/07/22 07:00:46 djm Exp $ 36.\" $OpenBSD: ssh_config.5,v 1.240 2016/10/15 19:56:25 jmc Exp $
37.Dd $Mdocdate: July 22 2016 $ 37.Dd $Mdocdate: October 15 2016 $
38.Dt SSH_CONFIG 5 38.Dt SSH_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -62,13 +62,13 @@ system-wide configuration file
62For each parameter, the first obtained value 62For each parameter, the first obtained value
63will be used. 63will be used.
64The configuration files contain sections separated by 64The configuration files contain sections separated by
65.Dq Host 65.Cm Host
66specifications, and that section is only applied for hosts that 66specifications, and that section is only applied for hosts that
67match one of the patterns given in the specification. 67match one of the patterns given in the specification.
68The matched host name is usually the one given on the command line 68The matched host name is usually the one given on the command line
69(see the 69(see the
70.Cm CanonicalizeHostname 70.Cm CanonicalizeHostname
71option for exceptions.) 71option for exceptions).
72.Pp 72.Pp
73Since the first obtained value for each parameter is used, more 73Since the first obtained value for each parameter is used, more
74host-specific declarations should be given near the beginning of the 74host-specific declarations should be given near the beginning of the
@@ -90,13 +90,13 @@ which are not the default in
90.Cm GSSAPIAuthentication No yes 90.Cm GSSAPIAuthentication No yes
91.El 91.El
92.Pp 92.Pp
93The configuration file has the following format: 93The file contains keyword-argument pairs, one per line.
94.Pp 94Lines starting with
95Empty lines and lines starting with
96.Ql # 95.Ql #
97are comments. 96and empty lines are interpreted as comments.
98Otherwise a line is of the format 97Arguments may optionally be enclosed in double quotes
99.Dq keyword arguments . 98.Pq \&"
99in order to represent arguments containing spaces.
100Configuration options may be separated by whitespace or 100Configuration options may be separated by whitespace or
101optional whitespace and exactly one 101optional whitespace and exactly one
102.Ql = ; 102.Ql = ;
@@ -108,9 +108,6 @@ and
108.Nm sftp 108.Nm sftp
109.Fl o 109.Fl o
110option. 110option.
111Arguments may optionally be enclosed in double quotes
112.Pq \&"
113in order to represent arguments containing spaces.
114.Pp 111.Pp
115The possible 112The possible
116keywords and their meanings are as follows (note that 113keywords and their meanings are as follows (note that
@@ -133,7 +130,7 @@ The host is usually the
133argument given on the command line 130argument given on the command line
134(see the 131(see the
135.Cm CanonicalizeHostname 132.Cm CanonicalizeHostname
136option for exceptions.) 133keyword for exceptions).
137.Pp 134.Pp
138A pattern entry may be negated by prefixing it with an exclamation mark 135A pattern entry may be negated by prefixing it with an exclamation mark
139.Pq Sq !\& . 136.Pq Sq !\& .
@@ -193,24 +190,11 @@ The
193keyword executes the specified command under the user's shell. 190keyword executes the specified command under the user's shell.
194If the command returns a zero exit status then the condition is considered true. 191If the command returns a zero exit status then the condition is considered true.
195Commands containing whitespace characters must be quoted. 192Commands containing whitespace characters must be quoted.
196The following character sequences in the command will be expanded prior to 193Arguments to
197execution: 194.Cm exec
198.Ql %L 195accept the tokens described in the
199will be substituted by the first component of the local host name, 196.Sx TOKENS
200.Ql %l 197section.
201will be substituted by the local host name (including any domain name),
202.Ql %h
203will be substituted by the target host name,
204.Ql %n
205will be substituted by the original target host name
206specified on the command-line,
207.Ql %p
208the destination port,
209.Ql %r
210by the remote login username, and
211.Ql %u
212by the username of the user running
213.Xr ssh 1 .
214.Pp 198.Pp
215The other keywords' criteria must be single entries or comma-separated 199The other keywords' criteria must be single entries or comma-separated
216lists and may use the wildcard and negation operators described in the 200lists and may use the wildcard and negation operators described in the
@@ -241,48 +225,46 @@ files).
241Specifies whether keys should be automatically added to a running 225Specifies whether keys should be automatically added to a running
242.Xr ssh-agent 1 . 226.Xr ssh-agent 1 .
243If this option is set to 227If this option is set to
244.Dq yes 228.Cm yes
245and a key is loaded from a file, the key and its passphrase are added to 229and a key is loaded from a file, the key and its passphrase are added to
246the agent with the default lifetime, as if by 230the agent with the default lifetime, as if by
247.Xr ssh-add 1 . 231.Xr ssh-add 1 .
248If this option is set to 232If this option is set to
249.Dq ask , 233.Cm ask ,
250.Nm ssh 234.Xr ssh 1
251will require confirmation using the 235will require confirmation using the
252.Ev SSH_ASKPASS 236.Ev SSH_ASKPASS
253program before adding a key (see 237program before adding a key (see
254.Xr ssh-add 1 238.Xr ssh-add 1
255for details). 239for details).
256If this option is set to 240If this option is set to
257.Dq confirm , 241.Cm confirm ,
258each use of the key must be confirmed, as if the 242each use of the key must be confirmed, as if the
259.Fl c 243.Fl c
260option was specified to 244option was specified to
261.Xr ssh-add 1 . 245.Xr ssh-add 1 .
262If this option is set to 246If this option is set to
263.Dq no , 247.Cm no ,
264no keys are added to the agent. 248no keys are added to the agent.
265The argument must be 249The argument must be
266.Dq yes , 250.Cm yes ,
267.Dq confirm , 251.Cm confirm ,
268.Dq ask , 252.Cm ask ,
269or 253or
270.Dq no . 254.Cm no
271The default is 255(the default).
272.Dq no .
273.It Cm AddressFamily 256.It Cm AddressFamily
274Specifies which address family to use when connecting. 257Specifies which address family to use when connecting.
275Valid arguments are 258Valid arguments are
276.Dq any , 259.Cm any
277.Dq inet 260(the default),
261.Cm inet
278(use IPv4 only), or 262(use IPv4 only), or
279.Dq inet6 263.Cm inet6
280(use IPv6 only). 264(use IPv6 only).
281The default is
282.Dq any .
283.It Cm BatchMode 265.It Cm BatchMode
284If set to 266If set to
285.Dq yes , 267.Cm yes ,
286passphrase/password querying will be disabled. 268passphrase/password querying will be disabled.
287In addition, the 269In addition, the
288.Cm ServerAliveInterval 270.Cm ServerAliveInterval
@@ -291,11 +273,10 @@ This option is useful in scripts and other batch jobs where no user
291is present to supply the password, 273is present to supply the password,
292and where it is desirable to detect a broken network swiftly. 274and where it is desirable to detect a broken network swiftly.
293The argument must be 275The argument must be
294.Dq yes 276.Cm yes
295or 277or
296.Dq no . 278.Cm no
297The default is 279(the default).
298.Dq no .
299.It Cm BindAddress 280.It Cm BindAddress
300Use the specified address on the local machine as the source address of 281Use the specified address on the local machine as the source address of
301the connection. 282the connection.
@@ -303,7 +284,7 @@ Only useful on systems with more than one address.
303Note that this option does not work if 284Note that this option does not work if
304.Cm UsePrivilegedPort 285.Cm UsePrivilegedPort
305is set to 286is set to
306.Dq yes . 287.Cm yes .
307.It Cm CanonicalDomains 288.It Cm CanonicalDomains
308When 289When
309.Cm CanonicalizeHostname 290.Cm CanonicalizeHostname
@@ -312,11 +293,11 @@ search for the specified destination host.
312.It Cm CanonicalizeFallbackLocal 293.It Cm CanonicalizeFallbackLocal
313Specifies whether to fail with an error when hostname canonicalization fails. 294Specifies whether to fail with an error when hostname canonicalization fails.
314The default, 295The default,
315.Dq yes , 296.Cm yes ,
316will attempt to look up the unqualified hostname using the system resolver's 297will attempt to look up the unqualified hostname using the system resolver's
317search rules. 298search rules.
318A value of 299A value of
319.Dq no 300.Cm no
320will cause 301will cause
321.Xr ssh 1 302.Xr ssh 1
322to fail instantly if 303to fail instantly if
@@ -327,11 +308,11 @@ specified by
327.It Cm CanonicalizeHostname 308.It Cm CanonicalizeHostname
328Controls whether explicit hostname canonicalization is performed. 309Controls whether explicit hostname canonicalization is performed.
329The default, 310The default,
330.Dq no , 311.Cm no ,
331is not to perform any name rewriting and let the system resolver handle all 312is not to perform any name rewriting and let the system resolver handle all
332hostname lookups. 313hostname lookups.
333If set to 314If set to
334.Dq yes 315.Cm yes
335then, for connections that do not use a 316then, for connections that do not use a
336.Cm ProxyCommand , 317.Cm ProxyCommand ,
337.Xr ssh 1 318.Xr ssh 1
@@ -344,7 +325,7 @@ rules.
344If 325If
345.Cm CanonicalizeHostname 326.Cm CanonicalizeHostname
346is set to 327is set to
347.Dq always , 328.Cm always ,
348then canonicalization is applied to proxied connections too. 329then canonicalization is applied to proxied connections too.
349.Pp 330.Pp
350If this option is enabled, then the configuration files are processed 331If this option is enabled, then the configuration files are processed
@@ -356,8 +337,7 @@ stanzas.
356.It Cm CanonicalizeMaxDots 337.It Cm CanonicalizeMaxDots
357Specifies the maximum number of dot characters in a hostname before 338Specifies the maximum number of dot characters in a hostname before
358canonicalization is disabled. 339canonicalization is disabled.
359The default, 340The default, 1,
360.Dq 1 ,
361allows a single dot (i.e. hostname.subdomain). 341allows a single dot (i.e. hostname.subdomain).
362.It Cm CanonicalizePermittedCNAMEs 342.It Cm CanonicalizePermittedCNAMEs
363Specifies rules to determine whether CNAMEs should be followed when 343Specifies rules to determine whether CNAMEs should be followed when
@@ -372,13 +352,13 @@ and
372is a pattern-list of domains that they may resolve to. 352is a pattern-list of domains that they may resolve to.
373.Pp 353.Pp
374For example, 354For example,
375.Dq *.a.example.com:*.b.example.com,*.c.example.com 355.Qq *.a.example.com:*.b.example.com,*.c.example.com
376will allow hostnames matching 356will allow hostnames matching
377.Dq *.a.example.com 357.Qq *.a.example.com
378to be canonicalized to names in the 358to be canonicalized to names in the
379.Dq *.b.example.com 359.Qq *.b.example.com
380or 360or
381.Dq *.c.example.com 361.Qq *.c.example.com
382domains. 362domains.
383.It Cm CertificateFile 363.It Cm CertificateFile
384Specifies a file from which the user's certificate is read. 364Specifies a file from which the user's certificate is read.
@@ -395,19 +375,12 @@ via
395or via a 375or via a
396.Cm PKCS11Provider . 376.Cm PKCS11Provider .
397.Pp 377.Pp
398The file name may use the tilde 378Arguments to
399syntax to refer to a user's home directory or one of the following 379.Cm CertificateFile
400escape characters: 380may use the tilde syntax to refer to a user's home directory
401.Ql %d 381or the tokens described in the
402(local user's home directory), 382.Sx TOKENS
403.Ql %u 383section.
404(local user name),
405.Ql %l
406(local host name),
407.Ql %h
408(remote host name) or
409.Ql %r
410(remote user name).
411.Pp 384.Pp
412It is possible to have multiple certificate files specified in 385It is possible to have multiple certificate files specified in
413configuration files; these certificates will be tried in sequence. 386configuration files; these certificates will be tried in sequence.
@@ -418,47 +391,42 @@ authentication.
418.It Cm ChallengeResponseAuthentication 391.It Cm ChallengeResponseAuthentication
419Specifies whether to use challenge-response authentication. 392Specifies whether to use challenge-response authentication.
420The argument to this keyword must be 393The argument to this keyword must be
421.Dq yes 394.Cm yes
395(the default)
422or 396or
423.Dq no . 397.Cm no .
424The default is
425.Dq yes .
426.It Cm CheckHostIP 398.It Cm CheckHostIP
427If this flag is set to 399If set to
428.Dq yes , 400.Cm yes
401(the default),
429.Xr ssh 1 402.Xr ssh 1
430will additionally check the host IP address in the 403will additionally check the host IP address in the
431.Pa known_hosts 404.Pa known_hosts
432file. 405file.
433This allows ssh to detect if a host key changed due to DNS spoofing 406This allows it to detect if a host key changed due to DNS spoofing
434and will add addresses of destination hosts to 407and will add addresses of destination hosts to
435.Pa ~/.ssh/known_hosts 408.Pa ~/.ssh/known_hosts
436in the process, regardless of the setting of 409in the process, regardless of the setting of
437.Cm StrictHostKeyChecking . 410.Cm StrictHostKeyChecking .
438If the option is set to 411If the option is set to
439.Dq no , 412.Cm no ,
440the check will not be executed. 413the check will not be executed.
441The default is
442.Dq yes .
443.It Cm Cipher 414.It Cm Cipher
444Specifies the cipher to use for encrypting the session 415Specifies the cipher to use for encrypting the session
445in protocol version 1. 416in protocol version 1.
446Currently, 417Currently,
447.Dq blowfish , 418.Cm blowfish ,
448.Dq 3des , 419.Cm 3des
420(the default),
449and 421and
450.Dq des 422.Cm des
451are supported. 423are supported,
452.Ar des 424though
425.Cm des
453is only supported in the 426is only supported in the
454.Xr ssh 1 427.Xr ssh 1
455client for interoperability with legacy protocol 1 implementations 428client for interoperability with legacy protocol 1 implementations;
456that do not support the 429its use is strongly discouraged due to cryptographic weaknesses.
457.Ar 3des
458cipher.
459Its use is strongly discouraged due to cryptographic weaknesses.
460The default is
461.Dq 3des .
462.It Cm Ciphers 430.It Cm Ciphers
463Specifies the ciphers allowed for protocol version 2 431Specifies the ciphers allowed for protocol version 2
464in order of preference. 432in order of preference.
@@ -469,54 +437,34 @@ character, then the specified ciphers will be appended to the default set
469instead of replacing them. 437instead of replacing them.
470.Pp 438.Pp
471The supported ciphers are: 439The supported ciphers are:
472.Pp 440.Bd -literal -offset indent
473.Bl -item -compact -offset indent
474.It
4753des-cbc 4413des-cbc
476.It
477aes128-cbc 442aes128-cbc
478.It
479aes192-cbc 443aes192-cbc
480.It
481aes256-cbc 444aes256-cbc
482.It
483aes128-ctr 445aes128-ctr
484.It
485aes192-ctr 446aes192-ctr
486.It
487aes256-ctr 447aes256-ctr
488.It
489aes128-gcm@openssh.com 448aes128-gcm@openssh.com
490.It
491aes256-gcm@openssh.com 449aes256-gcm@openssh.com
492.It
493arcfour 450arcfour
494.It
495arcfour128 451arcfour128
496.It
497arcfour256 452arcfour256
498.It
499blowfish-cbc 453blowfish-cbc
500.It
501cast128-cbc 454cast128-cbc
502.It
503chacha20-poly1305@openssh.com 455chacha20-poly1305@openssh.com
504.El 456.Ed
505.Pp 457.Pp
506The default is: 458The default is:
507.Bd -literal -offset indent 459.Bd -literal -offset indent
508chacha20-poly1305@openssh.com, 460chacha20-poly1305@openssh.com,
509aes128-ctr,aes192-ctr,aes256-ctr, 461aes128-ctr,aes192-ctr,aes256-ctr,
510aes128-gcm@openssh.com,aes256-gcm@openssh.com, 462aes128-gcm@openssh.com,aes256-gcm@openssh.com,
511aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc 463aes128-cbc,aes192-cbc,aes256-cbc
512.Ed 464.Ed
513.Pp 465.Pp
514The list of available ciphers may also be obtained using the 466The list of available ciphers may also be obtained using
515.Fl Q 467.Qq ssh -Q cipher .
516option of
517.Xr ssh 1
518with an argument of
519.Dq cipher .
520.It Cm ClearAllForwardings 468.It Cm ClearAllForwardings
521Specifies that all local, remote, and dynamic port forwardings 469Specifies that all local, remote, and dynamic port forwardings
522specified in the configuration files or on the command line be 470specified in the configuration files or on the command line be
@@ -529,19 +477,17 @@ configuration files, and is automatically set by
529and 477and
530.Xr sftp 1 . 478.Xr sftp 1 .
531The argument must be 479The argument must be
532.Dq yes 480.Cm yes
533or 481or
534.Dq no . 482.Cm no
535The default is 483(the default).
536.Dq no .
537.It Cm Compression 484.It Cm Compression
538Specifies whether to use compression. 485Specifies whether to use compression.
539The argument must be 486The argument must be
540.Dq yes 487.Cm yes
541or 488or
542.Dq no . 489.Cm no
543The default is 490(the default).
544.Dq no .
545.It Cm CompressionLevel 491.It Cm CompressionLevel
546Specifies the compression level to use if compression is enabled. 492Specifies the compression level to use if compression is enabled.
547The argument must be an integer from 1 (fast) to 9 (slow, best). 493The argument must be an integer from 1 (fast) to 9 (slow, best).
@@ -562,7 +508,7 @@ not when it refuses the connection.
562.It Cm ControlMaster 508.It Cm ControlMaster
563Enables the sharing of multiple sessions over a single network connection. 509Enables the sharing of multiple sessions over a single network connection.
564When set to 510When set to
565.Dq yes , 511.Cm yes ,
566.Xr ssh 1 512.Xr ssh 1
567will listen for connections on a control socket specified using the 513will listen for connections on a control socket specified using the
568.Cm ControlPath 514.Cm ControlPath
@@ -572,21 +518,23 @@ Additional sessions can connect to this socket using the same
572with 518with
573.Cm ControlMaster 519.Cm ControlMaster
574set to 520set to
575.Dq no 521.Cm no
576(the default). 522(the default).
577These sessions will try to reuse the master instance's network connection 523These sessions will try to reuse the master instance's network connection
578rather than initiating new ones, but will fall back to connecting normally 524rather than initiating new ones, but will fall back to connecting normally
579if the control socket does not exist, or is not listening. 525if the control socket does not exist, or is not listening.
580.Pp 526.Pp
581Setting this to 527Setting this to
582.Dq ask 528.Cm ask
583will cause ssh 529will cause
530.Xr ssh 1
584to listen for control connections, but require confirmation using 531to listen for control connections, but require confirmation using
585.Xr ssh-askpass 1 . 532.Xr ssh-askpass 1 .
586If the 533If the
587.Cm ControlPath 534.Cm ControlPath
588cannot be opened, 535cannot be opened,
589ssh will continue without connecting to a master instance. 536.Xr ssh 1
537will continue without connecting to a master instance.
590.Pp 538.Pp
591X11 and 539X11 and
592.Xr ssh-agent 1 540.Xr ssh-agent 1
@@ -598,41 +546,25 @@ Two additional options allow for opportunistic multiplexing: try to use a
598master connection but fall back to creating a new one if one does not already 546master connection but fall back to creating a new one if one does not already
599exist. 547exist.
600These options are: 548These options are:
601.Dq auto 549.Cm auto
602and 550and
603.Dq autoask . 551.Cm autoask .
604The latter requires confirmation like the 552The latter requires confirmation like the
605.Dq ask 553.Cm ask
606option. 554option.
607.It Cm ControlPath 555.It Cm ControlPath
608Specify the path to the control socket used for connection sharing as described 556Specify the path to the control socket used for connection sharing as described
609in the 557in the
610.Cm ControlMaster 558.Cm ControlMaster
611section above or the string 559section above or the string
612.Dq none 560.Cm none
613to disable connection sharing. 561to disable connection sharing.
614In the path, 562Arguments to
615.Ql %L 563.Cm ControlPath
616will be substituted by the first component of the local host name, 564may use the tilde syntax to refer to a user's home directory
617.Ql %l 565or the tokens described in the
618will be substituted by the local host name (including any domain name), 566.Sx TOKENS
619.Ql %h 567section.
620will be substituted by the target host name,
621.Ql %n
622will be substituted by the original target host name
623specified on the command line,
624.Ql %p
625the destination port,
626.Ql %r
627by the remote login username,
628.Ql %u
629by the username and
630.Ql %i
631by the numeric user ID (uid) of the user running
632.Xr ssh 1 ,
633and
634.Ql \&%C
635by a hash of the concatenation: %l%h%p%r.
636It is recommended that any 568It is recommended that any
637.Cm ControlPath 569.Cm ControlPath
638used for opportunistic connection sharing include 570used for opportunistic connection sharing include
@@ -646,18 +578,15 @@ specifies that the master connection should remain open
646in the background (waiting for future client connections) 578in the background (waiting for future client connections)
647after the initial client connection has been closed. 579after the initial client connection has been closed.
648If set to 580If set to
649.Dq no , 581.Cm no ,
650then the master connection will not be placed into the background, 582then the master connection will not be placed into the background,
651and will close as soon as the initial client connection is closed. 583and will close as soon as the initial client connection is closed.
652If set to 584If set to
653.Dq yes 585.Cm yes
654or 586or 0,
655.Dq 0 ,
656then the master connection will remain in the background indefinitely 587then the master connection will remain in the background indefinitely
657(until killed or closed via a mechanism such as the 588(until killed or closed via a mechanism such as the
658.Xr ssh 1 589.Qq ssh -O exit ) .
659.Dq Fl O No exit
660option).
661If set to a time in seconds, or a time in any of the formats documented in 590If set to a time in seconds, or a time in any of the formats documented in
662.Xr sshd_config 5 , 591.Xr sshd_config 5 ,
663then the backgrounded master connection will automatically terminate 592then the backgrounded master connection will automatically terminate
@@ -683,7 +612,7 @@ may be used to bind the connection to a specific address.
683The 612The
684.Ar bind_address 613.Ar bind_address
685of 614of
686.Dq localhost 615.Cm localhost
687indicates that the listening port be bound for local use only, while an 616indicates that the listening port be bound for local use only, while an
688empty address or 617empty address or
689.Sq * 618.Sq *
@@ -697,7 +626,7 @@ additional forwardings can be given on the command line.
697Only the superuser can forward privileged ports. 626Only the superuser can forward privileged ports.
698.It Cm EnableSSHKeysign 627.It Cm EnableSSHKeysign
699Setting this option to 628Setting this option to
700.Dq yes 629.Cm yes
701in the global client configuration file 630in the global client configuration file
702.Pa /etc/ssh/ssh_config 631.Pa /etc/ssh/ssh_config
703enables the use of the helper program 632enables the use of the helper program
@@ -705,11 +634,10 @@ enables the use of the helper program
705during 634during
706.Cm HostbasedAuthentication . 635.Cm HostbasedAuthentication .
707The argument must be 636The argument must be
708.Dq yes 637.Cm yes
709or 638or
710.Dq no . 639.Cm no
711The default is 640(the default).
712.Dq no .
713This option should be placed in the non-hostspecific section. 641This option should be placed in the non-hostspecific section.
714See 642See
715.Xr ssh-keysign 8 643.Xr ssh-keysign 8
@@ -722,7 +650,7 @@ be set on the command line.
722The argument should be a single character, 650The argument should be a single character,
723.Ql ^ 651.Ql ^
724followed by a letter, or 652followed by a letter, or
725.Dq none 653.Cm none
726to disable the escape 654to disable the escape
727character entirely (making the connection transparent for binary 655character entirely (making the connection transparent for binary
728data). 656data).
@@ -739,28 +667,25 @@ for example, cause
739.Xr ssh 1 667.Xr ssh 1
740to exit if TCP connections to the ultimate forwarding destination fail. 668to exit if TCP connections to the ultimate forwarding destination fail.
741The argument must be 669The argument must be
742.Dq yes 670.Cm yes
743or 671or
744.Dq no . 672.Cm no
745The default is 673(the default).
746.Dq no .
747.It Cm FingerprintHash 674.It Cm FingerprintHash
748Specifies the hash algorithm used when displaying key fingerprints. 675Specifies the hash algorithm used when displaying key fingerprints.
749Valid options are: 676Valid options are:
750.Dq md5 677.Cm md5
751and 678and
752.Dq sha256 . 679.Cm sha256
753The default is 680(the default).
754.Dq sha256 .
755.It Cm ForwardAgent 681.It Cm ForwardAgent
756Specifies whether the connection to the authentication agent (if any) 682Specifies whether the connection to the authentication agent (if any)
757will be forwarded to the remote machine. 683will be forwarded to the remote machine.
758The argument must be 684The argument must be
759.Dq yes 685.Cm yes
760or 686or
761.Dq no . 687.Cm no
762The default is 688(the default).
763.Dq no .
764.Pp 689.Pp
765Agent forwarding should be enabled with caution. 690Agent forwarding should be enabled with caution.
766Users with the ability to bypass file permissions on the remote host 691Users with the ability to bypass file permissions on the remote host
@@ -775,11 +700,10 @@ over the secure channel and
775.Ev DISPLAY 700.Ev DISPLAY
776set. 701set.
777The argument must be 702The argument must be
778.Dq yes 703.Cm yes
779or 704or
780.Dq no . 705.Cm no
781The default is 706(the default).
782.Dq no .
783.Pp 707.Pp
784X11 forwarding should be enabled with caution. 708X11 forwarding should be enabled with caution.
785Users with the ability to bypass file permissions on the remote host 709Users with the ability to bypass file permissions on the remote host
@@ -792,7 +716,8 @@ option is also enabled.
792.It Cm ForwardX11Timeout 716.It Cm ForwardX11Timeout
793Specify a timeout for untrusted X11 forwarding 717Specify a timeout for untrusted X11 forwarding
794using the format described in the 718using the format described in the
795TIME FORMATS section of 719.Sx TIME FORMATS
720section of
796.Xr sshd_config 5 . 721.Xr sshd_config 5 .
797X11 connections received by 722X11 connections received by
798.Xr ssh 1 723.Xr ssh 1
@@ -801,11 +726,13 @@ The default is to disable untrusted X11 forwarding after twenty minutes has
801elapsed. 726elapsed.
802.It Cm ForwardX11Trusted 727.It Cm ForwardX11Trusted
803If this option is set to 728If this option is set to
804.Dq yes , 729.Cm yes ,
730(the Debian-specific default),
805remote X11 clients will have full access to the original X11 display. 731remote X11 clients will have full access to the original X11 display.
806.Pp 732.Pp
807If this option is set to 733If this option is set to
808.Dq no , 734.Cm no
735(the upstream default),
809remote X11 clients will be considered untrusted and prevented 736remote X11 clients will be considered untrusted and prevented
810from stealing or tampering with data belonging to trusted X11 737from stealing or tampering with data belonging to trusted X11
811clients. 738clients.
@@ -814,10 +741,6 @@ Furthermore, the
814token used for the session will be set to expire after 20 minutes. 741token used for the session will be set to expire after 20 minutes.
815Remote clients will be refused access after this time. 742Remote clients will be refused access after this time.
816.Pp 743.Pp
817The default is
818.Dq yes
819(Debian-specific).
820.Pp
821See the X11 SECURITY extension specification for full details on 744See the X11 SECURITY extension specification for full details on
822the restrictions imposed on untrusted clients. 745the restrictions imposed on untrusted clients.
823.It Cm GatewayPorts 746.It Cm GatewayPorts
@@ -832,11 +755,10 @@ can be used to specify that ssh
832should bind local port forwardings to the wildcard address, 755should bind local port forwardings to the wildcard address,
833thus allowing remote hosts to connect to forwarded ports. 756thus allowing remote hosts to connect to forwarded ports.
834The argument must be 757The argument must be
835.Dq yes 758.Cm yes
836or 759or
837.Dq no . 760.Cm no
838The default is 761(the default).
839.Dq no .
840.It Cm GlobalKnownHostsFile 762.It Cm GlobalKnownHostsFile
841Specifies one or more files to use for the global 763Specifies one or more files to use for the global
842host key database, separated by whitespace. 764host key database, separated by whitespace.
@@ -846,12 +768,12 @@ The default is
846.It Cm GSSAPIAuthentication 768.It Cm GSSAPIAuthentication
847Specifies whether user authentication based on GSSAPI is allowed. 769Specifies whether user authentication based on GSSAPI is allowed.
848The default is 770The default is
849.Dq no . 771.Cm no .
850.It Cm GSSAPIKeyExchange 772.It Cm GSSAPIKeyExchange
851Specifies whether key exchange based on GSSAPI may be used. When using 773Specifies whether key exchange based on GSSAPI may be used. When using
852GSSAPI key exchange the server need not have a host key. 774GSSAPI key exchange the server need not have a host key.
853The default is 775The default is
854.Dq no . 776.Cm no .
855.It Cm GSSAPIClientIdentity 777.It Cm GSSAPIClientIdentity
856If set, specifies the GSSAPI client identity that ssh should use when 778If set, specifies the GSSAPI client identity that ssh should use when
857connecting to the server. The default is unset, which means that the default 779connecting to the server. The default is unset, which means that the default
@@ -864,25 +786,25 @@ hostname.
864.It Cm GSSAPIDelegateCredentials 786.It Cm GSSAPIDelegateCredentials
865Forward (delegate) credentials to the server. 787Forward (delegate) credentials to the server.
866The default is 788The default is
867.Dq no . 789.Cm no .
868.It Cm GSSAPIRenewalForcesRekey 790.It Cm GSSAPIRenewalForcesRekey
869If set to 791If set to
870.Dq yes 792.Cm yes
871then renewal of the client's GSSAPI credentials will force the rekeying of the 793then renewal of the client's GSSAPI credentials will force the rekeying of the
872ssh connection. With a compatible server, this can delegate the renewed 794ssh connection. With a compatible server, this can delegate the renewed
873credentials to a session on the server. 795credentials to a session on the server.
874The default is 796The default is
875.Dq no . 797.Cm no .
876.It Cm GSSAPITrustDns 798.It Cm GSSAPITrustDns
877Set to 799Set to
878.Dq yes 800.Cm yes
879to indicate that the DNS is trusted to securely canonicalize 801to indicate that the DNS is trusted to securely canonicalize
880the name of the host being connected to. If 802the name of the host being connected to. If
881.Dq no , 803.Cm no ,
882the hostname entered on the 804the hostname entered on the
883command line will be passed untouched to the GSSAPI library. 805command line will be passed untouched to the GSSAPI library.
884The default is 806The default is
885.Dq no . 807.Cm no .
886.It Cm HashKnownHosts 808.It Cm HashKnownHosts
887Indicates that 809Indicates that
888.Xr ssh 1 810.Xr ssh 1
@@ -895,7 +817,7 @@ and
895but they do not reveal identifying information should the file's contents 817but they do not reveal identifying information should the file's contents
896be disclosed. 818be disclosed.
897The default is 819The default is
898.Dq no . 820.Cm no .
899Note that existing names and addresses in known hosts files 821Note that existing names and addresses in known hosts files
900will not be converted automatically, 822will not be converted automatically,
901but may be manually hashed using 823but may be manually hashed using
@@ -907,11 +829,10 @@ on being able to read unhashed host names from
907Specifies whether to try rhosts based authentication with public key 829Specifies whether to try rhosts based authentication with public key
908authentication. 830authentication.
909The argument must be 831The argument must be
910.Dq yes 832.Cm yes
911or 833or
912.Dq no . 834.Cm no
913The default is 835(the default).
914.Dq no .
915.It Cm HostbasedKeyTypes 836.It Cm HostbasedKeyTypes
916Specifies the key types that will be used for hostbased authentication 837Specifies the key types that will be used for hostbased authentication
917as a comma-separated pattern list. 838as a comma-separated pattern list.
@@ -956,12 +877,8 @@ ssh-ed25519,ssh-rsa
956If hostkeys are known for the destination host then this default is modified 877If hostkeys are known for the destination host then this default is modified
957to prefer their algorithms. 878to prefer their algorithms.
958.Pp 879.Pp
959The list of available key types may also be obtained using the 880The list of available key types may also be obtained using
960.Fl Q 881.Qq ssh -Q key .
961option of
962.Xr ssh 1
963with an argument of
964.Dq key .
965.It Cm HostKeyAlias 882.It Cm HostKeyAlias
966Specifies an alias that should be used instead of the 883Specifies an alias that should be used instead of the
967real host name when looking up or saving the host key 884real host name when looking up or saving the host key
@@ -971,20 +888,15 @@ or for multiple servers running on a single host.
971.It Cm HostName 888.It Cm HostName
972Specifies the real host name to log into. 889Specifies the real host name to log into.
973This can be used to specify nicknames or abbreviations for hosts. 890This can be used to specify nicknames or abbreviations for hosts.
974If the hostname contains the character sequence 891Arguments to
975.Ql %h , 892.Cm HostName
976then this will be replaced with the host name specified on the command line 893accept the tokens described in the
977(this is useful for manipulating unqualified names). 894.Sx TOKENS
978The character sequence 895section.
979.Ql %%
980will be replaced by a single
981.Ql %
982character, which may be used when specifying IPv6 link-local addresses.
983.Pp
984The default is the name given on the command line.
985Numeric IP addresses are also permitted (both on the command line and in 896Numeric IP addresses are also permitted (both on the command line and in
986.Cm HostName 897.Cm HostName
987specifications). 898specifications).
899The default is the name given on the command line.
988.It Cm IdentitiesOnly 900.It Cm IdentitiesOnly
989Specifies that 901Specifies that
990.Xr ssh 1 902.Xr ssh 1
@@ -1001,43 +913,35 @@ or a
1001.Cm PKCS11Provider 913.Cm PKCS11Provider
1002offers more identities. 914offers more identities.
1003The argument to this keyword must be 915The argument to this keyword must be
1004.Dq yes 916.Cm yes
1005or 917or
1006.Dq no . 918.Cm no
919(the default).
1007This option is intended for situations where ssh-agent 920This option is intended for situations where ssh-agent
1008offers many different identities. 921offers many different identities.
1009The default is
1010.Dq no .
1011.It Cm IdentityAgent 922.It Cm IdentityAgent
1012Specifies the 923Specifies the
1013.Ux Ns -domain 924.Ux Ns -domain
1014socket used to communicate with the authentication agent. 925socket used to communicate with the authentication agent.
1015.Pp 926.Pp
1016This option overrides the 927This option overrides the
1017.Dq SSH_AUTH_SOCK 928.Ev SSH_AUTH_SOCK
1018environment variable and can be used to select a specific agent. 929environment variable and can be used to select a specific agent.
1019Setting the socket name to 930Setting the socket name to
1020.Dq none 931.Cm none
1021disables the use of an authentication agent. 932disables the use of an authentication agent.
1022If the string 933If the string
1023.Dq SSH_AUTH_SOCK 934.Qq SSH_AUTH_SOCK
1024is specified, the location of the socket will be read from the 935is specified, the location of the socket will be read from the
1025.Ev SSH_AUTH_SOCK 936.Ev SSH_AUTH_SOCK
1026environment variable. 937environment variable.
1027.Pp 938.Pp
1028The socket name may use the tilde 939Arguments to
1029syntax to refer to a user's home directory or one of the following 940.Cm IdentityAgent
1030escape characters: 941may use the tilde syntax to refer to a user's home directory
1031.Ql %d 942or the tokens described in the
1032(local user's home directory), 943.Sx TOKENS
1033.Ql %u 944section.
1034(local user name),
1035.Ql %l
1036(local host name),
1037.Ql %h
1038(remote host name) or
1039.Ql %r
1040(remote user name).
1041.It Cm IdentityFile 945.It Cm IdentityFile
1042Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication 946Specifies a file from which the user's DSA, ECDSA, Ed25519 or RSA authentication
1043identity is read. 947identity is read.
@@ -1063,19 +967,12 @@ appending
1063to the path of a specified 967to the path of a specified
1064.Cm IdentityFile . 968.Cm IdentityFile .
1065.Pp 969.Pp
1066The file name may use the tilde 970Arguments to
1067syntax to refer to a user's home directory or one of the following 971.Cm IdentityFile
1068escape characters: 972may use the tilde syntax to refer to a user's home directory
1069.Ql %d 973or the tokens described in the
1070(local user's home directory), 974.Sx TOKENS
1071.Ql %u 975section.
1072(local user name),
1073.Ql %l
1074(local host name),
1075.Ql %h
1076(remote host name) or
1077.Ql %r
1078(remote user name).
1079.Pp 976.Pp
1080It is possible to have 977It is possible to have
1081multiple identity files specified in configuration files; all these 978multiple identity files specified in configuration files; all these
@@ -1110,7 +1007,7 @@ Include the specified configuration file(s).
1110Multiple pathnames may be specified and each pathname may contain 1007Multiple pathnames may be specified and each pathname may contain
1111.Xr glob 3 1008.Xr glob 3
1112wildcards and, for user configurations, shell-like 1009wildcards and, for user configurations, shell-like
1113.Dq ~ 1010.Sq ~
1114references to user home directories. 1011references to user home directories.
1115Files without absolute paths are assumed to be in 1012Files without absolute paths are assumed to be in
1116.Pa ~/.ssh 1013.Pa ~/.ssh
@@ -1127,48 +1024,47 @@ to perform conditional inclusion.
1127.It Cm IPQoS 1024.It Cm IPQoS
1128Specifies the IPv4 type-of-service or DSCP class for connections. 1025Specifies the IPv4 type-of-service or DSCP class for connections.
1129Accepted values are 1026Accepted values are
1130.Dq af11 , 1027.Cm af11 ,
1131.Dq af12 , 1028.Cm af12 ,
1132.Dq af13 , 1029.Cm af13 ,
1133.Dq af21 , 1030.Cm af21 ,
1134.Dq af22 , 1031.Cm af22 ,
1135.Dq af23 , 1032.Cm af23 ,
1136.Dq af31 , 1033.Cm af31 ,
1137.Dq af32 , 1034.Cm af32 ,
1138.Dq af33 , 1035.Cm af33 ,
1139.Dq af41 , 1036.Cm af41 ,
1140.Dq af42 , 1037.Cm af42 ,
1141.Dq af43 , 1038.Cm af43 ,
1142.Dq cs0 , 1039.Cm cs0 ,
1143.Dq cs1 , 1040.Cm cs1 ,
1144.Dq cs2 , 1041.Cm cs2 ,
1145.Dq cs3 , 1042.Cm cs3 ,
1146.Dq cs4 , 1043.Cm cs4 ,
1147.Dq cs5 , 1044.Cm cs5 ,
1148.Dq cs6 , 1045.Cm cs6 ,
1149.Dq cs7 , 1046.Cm cs7 ,
1150.Dq ef , 1047.Cm ef ,
1151.Dq lowdelay , 1048.Cm lowdelay ,
1152.Dq throughput , 1049.Cm throughput ,
1153.Dq reliability , 1050.Cm reliability ,
1154or a numeric value. 1051or a numeric value.
1155This option may take one or two arguments, separated by whitespace. 1052This option may take one or two arguments, separated by whitespace.
1156If one argument is specified, it is used as the packet class unconditionally. 1053If one argument is specified, it is used as the packet class unconditionally.
1157If two values are specified, the first is automatically selected for 1054If two values are specified, the first is automatically selected for
1158interactive sessions and the second for non-interactive sessions. 1055interactive sessions and the second for non-interactive sessions.
1159The default is 1056The default is
1160.Dq lowdelay 1057.Cm lowdelay
1161for interactive sessions and 1058for interactive sessions and
1162.Dq throughput 1059.Cm throughput
1163for non-interactive sessions. 1060for non-interactive sessions.
1164.It Cm KbdInteractiveAuthentication 1061.It Cm KbdInteractiveAuthentication
1165Specifies whether to use keyboard-interactive authentication. 1062Specifies whether to use keyboard-interactive authentication.
1166The argument to this keyword must be 1063The argument to this keyword must be
1167.Dq yes 1064.Cm yes
1065(the default)
1168or 1066or
1169.Dq no . 1067.Cm no .
1170The default is
1171.Dq yes .
1172.It Cm KbdInteractiveDevices 1068.It Cm KbdInteractiveDevices
1173Specifies the list of methods to use in keyboard-interactive authentication. 1069Specifies the list of methods to use in keyboard-interactive authentication.
1174Multiple method names must be comma-separated. 1070Multiple method names must be comma-separated.
@@ -1176,10 +1072,10 @@ The default is to use the server specified list.
1176The methods available vary depending on what the server supports. 1072The methods available vary depending on what the server supports.
1177For an OpenSSH server, 1073For an OpenSSH server,
1178it may be zero or more of: 1074it may be zero or more of:
1179.Dq bsdauth , 1075.Cm bsdauth ,
1180.Dq pam , 1076.Cm pam ,
1181and 1077and
1182.Dq skey . 1078.Cm skey .
1183.It Cm KexAlgorithms 1079.It Cm KexAlgorithms
1184Specifies the available KEX (Key Exchange) algorithms. 1080Specifies the available KEX (Key Exchange) algorithms.
1185Multiple algorithms must be comma-separated. 1081Multiple algorithms must be comma-separated.
@@ -1189,41 +1085,25 @@ character, then the specified methods will be appended to the default set
1189instead of replacing them. 1085instead of replacing them.
1190The default is: 1086The default is:
1191.Bd -literal -offset indent 1087.Bd -literal -offset indent
1192curve25519-sha256@libssh.org, 1088curve25519-sha256,curve25519-sha256@libssh.org,
1193ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 1089ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
1194diffie-hellman-group-exchange-sha256, 1090diffie-hellman-group-exchange-sha256,
1195diffie-hellman-group-exchange-sha1, 1091diffie-hellman-group-exchange-sha1,
1196diffie-hellman-group14-sha1 1092diffie-hellman-group14-sha1
1197.Ed 1093.Ed
1198.Pp 1094.Pp
1199The list of available key exchange algorithms may also be obtained using the 1095The list of available key exchange algorithms may also be obtained using
1200.Fl Q 1096.Qq ssh -Q kex .
1201option of
1202.Xr ssh 1
1203with an argument of
1204.Dq kex .
1205.It Cm LocalCommand 1097.It Cm LocalCommand
1206Specifies a command to execute on the local machine after successfully 1098Specifies a command to execute on the local machine after successfully
1207connecting to the server. 1099connecting to the server.
1208The command string extends to the end of the line, and is executed with 1100The command string extends to the end of the line, and is executed with
1209the user's shell. 1101the user's shell.
1210The following escape character substitutions will be performed: 1102Arguments to
1211.Ql %d 1103.Cm LocalCommand
1212(local user's home directory), 1104accept the tokens described in the
1213.Ql %h 1105.Sx TOKENS
1214(remote host name), 1106section.
1215.Ql %l
1216(local host name),
1217.Ql %n
1218(host name as provided on the command line),
1219.Ql %p
1220(remote port),
1221.Ql %r
1222(remote user name) or
1223.Ql %u
1224(local user name) or
1225.Ql \&%C
1226by a hash of the concatenation: %l%h%p%r.
1227.Pp 1107.Pp
1228The command is run synchronously and does not have access to the 1108The command is run synchronously and does not have access to the
1229session of the 1109session of the
@@ -1256,7 +1136,7 @@ may be used to bind the connection to a specific address.
1256The 1136The
1257.Ar bind_address 1137.Ar bind_address
1258of 1138of
1259.Dq localhost 1139.Cm localhost
1260indicates that the listening port be bound for local use only, while an 1140indicates that the listening port be bound for local use only, while an
1261empty address or 1141empty address or
1262.Sq * 1142.Sq *
@@ -1280,7 +1160,7 @@ character, then the specified algorithms will be appended to the default set
1280instead of replacing them. 1160instead of replacing them.
1281.Pp 1161.Pp
1282The algorithms that contain 1162The algorithms that contain
1283.Dq -etm 1163.Qq -etm
1284calculate the MAC after encryption (encrypt-then-mac). 1164calculate the MAC after encryption (encrypt-then-mac).
1285These are considered safer and their use recommended. 1165These are considered safer and their use recommended.
1286.Pp 1166.Pp
@@ -1293,22 +1173,18 @@ umac-64@openssh.com,umac-128@openssh.com,
1293hmac-sha2-256,hmac-sha2-512,hmac-sha1 1173hmac-sha2-256,hmac-sha2-512,hmac-sha1
1294.Ed 1174.Ed
1295.Pp 1175.Pp
1296The list of available MAC algorithms may also be obtained using the 1176The list of available MAC algorithms may also be obtained using
1297.Fl Q 1177.Qq ssh -Q mac .
1298option of
1299.Xr ssh 1
1300with an argument of
1301.Dq mac .
1302.It Cm NoHostAuthenticationForLocalhost 1178.It Cm NoHostAuthenticationForLocalhost
1303This option can be used if the home directory is shared across machines. 1179This option can be used if the home directory is shared across machines.
1304In this case localhost will refer to a different machine on each of 1180In this case localhost will refer to a different machine on each of
1305the machines and the user will get many warnings about changed host keys. 1181the machines and the user will get many warnings about changed host keys.
1306However, this option disables host authentication for localhost. 1182However, this option disables host authentication for localhost.
1307The argument to this keyword must be 1183The argument to this keyword must be
1308.Dq yes 1184.Cm yes
1309or 1185or
1310.Dq no . 1186.Cm no .
1311The default is to check the host key for localhost. 1187(the default).
1312.It Cm NumberOfPasswordPrompts 1188.It Cm NumberOfPasswordPrompts
1313Specifies the number of password prompts before giving up. 1189Specifies the number of password prompts before giving up.
1314The argument to this keyword must be an integer. 1190The argument to this keyword must be an integer.
@@ -1316,11 +1192,10 @@ The default is 3.
1316.It Cm PasswordAuthentication 1192.It Cm PasswordAuthentication
1317Specifies whether to use password authentication. 1193Specifies whether to use password authentication.
1318The argument to this keyword must be 1194The argument to this keyword must be
1319.Dq yes 1195.Cm yes
1196(the default)
1320or 1197or
1321.Dq no . 1198.Cm no .
1322The default is
1323.Dq yes .
1324.It Cm PermitLocalCommand 1199.It Cm PermitLocalCommand
1325Allow local command execution via the 1200Allow local command execution via the
1326.Ic LocalCommand 1201.Ic LocalCommand
@@ -1329,11 +1204,10 @@ option or using the
1329escape sequence in 1204escape sequence in
1330.Xr ssh 1 . 1205.Xr ssh 1 .
1331The argument must be 1206The argument must be
1332.Dq yes 1207.Cm yes
1333or 1208or
1334.Dq no . 1209.Cm no
1335The default is 1210(the default).
1336.Dq no .
1337.It Cm PKCS11Provider 1211.It Cm PKCS11Provider
1338Specifies which PKCS#11 provider to use. 1212Specifies which PKCS#11 provider to use.
1339The argument to this keyword is the PKCS#11 shared library 1213The argument to this keyword is the PKCS#11 shared library
@@ -1358,18 +1232,14 @@ keyboard-interactive,password
1358Specifies the protocol versions 1232Specifies the protocol versions
1359.Xr ssh 1 1233.Xr ssh 1
1360should support in order of preference. 1234should support in order of preference.
1361The possible values are 1235The possible values are 1 and 2.
1362.Sq 1
1363and
1364.Sq 2 .
1365Multiple versions must be comma-separated. 1236Multiple versions must be comma-separated.
1366When this option is set to 1237When this option is set to
1367.Dq 2,1 1238.Cm 2,1
1368.Nm ssh 1239.Nm ssh
1369will try version 2 and fall back to version 1 1240will try version 2 and fall back to version 1
1370if version 2 is not available. 1241if version 2 is not available.
1371The default is 1242The default is version 2.
1372.Sq 2 .
1373Protocol 1 suffers from a number of cryptographic weaknesses and should 1243Protocol 1 suffers from a number of cryptographic weaknesses and should
1374not be used. 1244not be used.
1375It is only offered to support legacy devices. 1245It is only offered to support legacy devices.
@@ -1381,14 +1251,11 @@ using the user's shell
1381.Ql exec 1251.Ql exec
1382directive to avoid a lingering shell process. 1252directive to avoid a lingering shell process.
1383.Pp 1253.Pp
1384In the command string, any occurrence of 1254Arguments to
1385.Ql %h 1255.Cm ProxyCommand
1386will be substituted by the host name to 1256accept the tokens described in the
1387connect, 1257.Sx TOKENS
1388.Ql %p 1258section.
1389by the port, and
1390.Ql %r
1391by the remote user name.
1392The command can be basically anything, 1259The command can be basically anything,
1393and should read from its standard input and write to its standard output. 1260and should read from its standard input and write to its standard output.
1394It should eventually connect an 1261It should eventually connect an
@@ -1400,7 +1267,7 @@ Host key management will be done using the
1400HostName of the host being connected (defaulting to the name typed by 1267HostName of the host being connected (defaulting to the name typed by
1401the user). 1268the user).
1402Setting the command to 1269Setting the command to
1403.Dq none 1270.Cm none
1404disables this option entirely. 1271disables this option entirely.
1405Note that 1272Note that
1406.Cm CheckHostIP 1273.Cm CheckHostIP
@@ -1445,7 +1312,7 @@ will pass a connected file descriptor back to
1445.Xr ssh 1 1312.Xr ssh 1
1446instead of continuing to execute and pass data. 1313instead of continuing to execute and pass data.
1447The default is 1314The default is
1448.Dq no . 1315.Cm no .
1449.It Cm PubkeyAcceptedKeyTypes 1316.It Cm PubkeyAcceptedKeyTypes
1450Specifies the key types that will be used for public key authentication 1317Specifies the key types that will be used for public key authentication
1451as a comma-separated pattern list. 1318as a comma-separated pattern list.
@@ -1464,19 +1331,15 @@ ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
1464ssh-ed25519,ssh-rsa 1331ssh-ed25519,ssh-rsa
1465.Ed 1332.Ed
1466.Pp 1333.Pp
1467The 1334The list of available key types may also be obtained using
1468.Fl Q 1335.Qq ssh -Q key .
1469option of
1470.Xr ssh 1
1471may be used to list supported key types.
1472.It Cm PubkeyAuthentication 1336.It Cm PubkeyAuthentication
1473Specifies whether to try public key authentication. 1337Specifies whether to try public key authentication.
1474The argument to this keyword must be 1338The argument to this keyword must be
1475.Dq yes 1339.Cm yes
1340(the default)
1476or 1341or
1477.Dq no . 1342.Cm no .
1478The default is
1479.Dq yes .
1480.It Cm RekeyLimit 1343.It Cm RekeyLimit
1481Specifies the maximum amount of data that may be transmitted before the 1344Specifies the maximum amount of data that may be transmitted before the
1482session key is renegotiated, optionally followed a maximum amount of 1345session key is renegotiated, optionally followed a maximum amount of
@@ -1494,12 +1357,13 @@ and
1494depending on the cipher. 1357depending on the cipher.
1495The optional second value is specified in seconds and may use any of the 1358The optional second value is specified in seconds and may use any of the
1496units documented in the 1359units documented in the
1497TIME FORMATS section of 1360.Sx TIME FORMATS
1361section of
1498.Xr sshd_config 5 . 1362.Xr sshd_config 5 .
1499The default value for 1363The default value for
1500.Cm RekeyLimit 1364.Cm RekeyLimit
1501is 1365is
1502.Dq default none , 1366.Cm default none ,
1503which means that rekeying is performed after the cipher's default amount 1367which means that rekeying is performed after the cipher's default amount
1504of data has been sent or received and no time based rekeying is done. 1368of data has been sent or received and no time based rekeying is done.
1505.It Cm RemoteForward 1369.It Cm RemoteForward
@@ -1519,8 +1383,7 @@ logging in as root on the remote machine.
1519.Pp 1383.Pp
1520If the 1384If the
1521.Ar port 1385.Ar port
1522argument is 1386argument is 0,
1523.Ql 0 ,
1524the listen port will be dynamically allocated on the server and reported 1387the listen port will be dynamically allocated on the server and reported
1525to the client at run time. 1388to the client at run time.
1526.Pp 1389.Pp
@@ -1542,13 +1405,13 @@ option is enabled (see
1542.It Cm RequestTTY 1405.It Cm RequestTTY
1543Specifies whether to request a pseudo-tty for the session. 1406Specifies whether to request a pseudo-tty for the session.
1544The argument may be one of: 1407The argument may be one of:
1545.Dq no 1408.Cm no
1546(never request a TTY), 1409(never request a TTY),
1547.Dq yes 1410.Cm yes
1548(always request a TTY when standard input is a TTY), 1411(always request a TTY when standard input is a TTY),
1549.Dq force 1412.Cm force
1550(always request a TTY) or 1413(always request a TTY) or
1551.Dq auto 1414.Cm auto
1552(request a TTY when opening a login session). 1415(request a TTY when opening a login session).
1553This option mirrors the 1416This option mirrors the
1554.Fl t 1417.Fl t
@@ -1570,25 +1433,23 @@ For more information on KRLs, see the KEY REVOCATION LISTS section in
1570Specifies whether to try rhosts based authentication with RSA host 1433Specifies whether to try rhosts based authentication with RSA host
1571authentication. 1434authentication.
1572The argument must be 1435The argument must be
1573.Dq yes 1436.Cm yes
1574or 1437or
1575.Dq no . 1438.Cm no
1576The default is 1439(the default).
1577.Dq no .
1578This option applies to protocol version 1 only and requires 1440This option applies to protocol version 1 only and requires
1579.Xr ssh 1 1441.Xr ssh 1
1580to be setuid root. 1442to be setuid root.
1581.It Cm RSAAuthentication 1443.It Cm RSAAuthentication
1582Specifies whether to try RSA authentication. 1444Specifies whether to try RSA authentication.
1583The argument to this keyword must be 1445The argument to this keyword must be
1584.Dq yes 1446.Cm yes
1447(the default)
1585or 1448or
1586.Dq no . 1449.Cm no .
1587RSA authentication will only be 1450RSA authentication will only be
1588attempted if the identity file exists, or an authentication agent is 1451attempted if the identity file exists, or an authentication agent is
1589running. 1452running.
1590The default is
1591.Dq yes .
1592Note that this option applies to protocol version 1 only. 1453Note that this option applies to protocol version 1 only.
1593.It Cm SendEnv 1454.It Cm SendEnv
1594Specifies what variables from the local 1455Specifies what variables from the local
@@ -1678,14 +1539,13 @@ will be unable to forward the port to the Unix-domain socket file.
1678This option is only used for port forwarding to a Unix-domain socket file. 1539This option is only used for port forwarding to a Unix-domain socket file.
1679.Pp 1540.Pp
1680The argument must be 1541The argument must be
1681.Dq yes 1542.Cm yes
1682or 1543or
1683.Dq no . 1544.Cm no
1684The default is 1545(the default).
1685.Dq no .
1686.It Cm StrictHostKeyChecking 1546.It Cm StrictHostKeyChecking
1687If this flag is set to 1547If this flag is set to
1688.Dq yes , 1548.Cm yes ,
1689.Xr ssh 1 1549.Xr ssh 1
1690will never automatically add host keys to the 1550will never automatically add host keys to the
1691.Pa ~/.ssh/known_hosts 1551.Pa ~/.ssh/known_hosts
@@ -1698,24 +1558,18 @@ frequently made.
1698This option forces the user to manually 1558This option forces the user to manually
1699add all new hosts. 1559add all new hosts.
1700If this flag is set to 1560If this flag is set to
1701.Dq no , 1561.Cm no ,
1702ssh will automatically add new host keys to the 1562ssh will automatically add new host keys to the
1703user known hosts files. 1563user known hosts files.
1704If this flag is set to 1564If this flag is set to
1705.Dq ask , 1565.Cm ask
1566(the default),
1706new host keys 1567new host keys
1707will be added to the user known host files only after the user 1568will be added to the user known host files only after the user
1708has confirmed that is what they really want to do, and 1569has confirmed that is what they really want to do, and
1709ssh will refuse to connect to hosts whose host key has changed. 1570ssh will refuse to connect to hosts whose host key has changed.
1710The host keys of 1571The host keys of
1711known hosts will be verified automatically in all cases. 1572known hosts will be verified automatically in all cases.
1712The argument must be
1713.Dq yes ,
1714.Dq no ,
1715or
1716.Dq ask .
1717The default is
1718.Dq ask .
1719.It Cm TCPKeepAlive 1573.It Cm TCPKeepAlive
1720Specifies whether the system should send TCP keepalive messages to the 1574Specifies whether the system should send TCP keepalive messages to the
1721other side. 1575other side.
@@ -1732,31 +1586,30 @@ connections will die if the route is down temporarily, and some people
1732find it annoying. 1586find it annoying.
1733.Pp 1587.Pp
1734The default is 1588The default is
1735.Dq yes 1589.Cm yes
1736(to send TCP keepalive messages), and the client will notice 1590(to send TCP keepalive messages), and the client will notice
1737if the network goes down or the remote host dies. 1591if the network goes down or the remote host dies.
1738This is important in scripts, and many users want it too. 1592This is important in scripts, and many users want it too.
1739.Pp 1593.Pp
1740To disable TCP keepalive messages, the value should be set to 1594To disable TCP keepalive messages, the value should be set to
1741.Dq no . 1595.Cm no .
1742.It Cm Tunnel 1596.It Cm Tunnel
1743Request 1597Request
1744.Xr tun 4 1598.Xr tun 4
1745device forwarding between the client and the server. 1599device forwarding between the client and the server.
1746The argument must be 1600The argument must be
1747.Dq yes , 1601.Cm yes ,
1748.Dq point-to-point 1602.Cm point-to-point
1749(layer 3), 1603(layer 3),
1750.Dq ethernet 1604.Cm ethernet
1751(layer 2), 1605(layer 2),
1752or 1606or
1753.Dq no . 1607.Cm no
1608(the default).
1754Specifying 1609Specifying
1755.Dq yes 1610.Cm yes
1756requests the default tunnel mode, which is 1611requests the default tunnel mode, which is
1757.Dq point-to-point . 1612.Cm point-to-point .
1758The default is
1759.Dq no .
1760.It Cm TunnelDevice 1613.It Cm TunnelDevice
1761Specifies the 1614Specifies the
1762.Xr tun 4 1615.Xr tun 4
@@ -1770,14 +1623,14 @@ The argument must be
1770.Ar local_tun Op : Ar remote_tun . 1623.Ar local_tun Op : Ar remote_tun .
1771.Sm on 1624.Sm on
1772The devices may be specified by numerical ID or the keyword 1625The devices may be specified by numerical ID or the keyword
1773.Dq any , 1626.Cm any ,
1774which uses the next available tunnel device. 1627which uses the next available tunnel device.
1775If 1628If
1776.Ar remote_tun 1629.Ar remote_tun
1777is not specified, it defaults to 1630is not specified, it defaults to
1778.Dq any . 1631.Cm any .
1779The default is 1632The default is
1780.Dq any:any . 1633.Cm any:any .
1781.It Cm UpdateHostKeys 1634.It Cm UpdateHostKeys
1782Specifies whether 1635Specifies whether
1783.Xr ssh 1 1636.Xr ssh 1
@@ -1785,10 +1638,10 @@ should accept notifications of additional hostkeys from the server sent
1785after authentication has completed and add them to 1638after authentication has completed and add them to
1786.Cm UserKnownHostsFile . 1639.Cm UserKnownHostsFile .
1787The argument must be 1640The argument must be
1788.Dq yes , 1641.Cm yes ,
1789.Dq no 1642.Cm no
1790(the default) or 1643(the default) or
1791.Dq ask . 1644.Cm ask .
1792Enabling this option allows learning alternate hostkeys for a server 1645Enabling this option allows learning alternate hostkeys for a server
1793and supports graceful key rotation by allowing a server to send replacement 1646and supports graceful key rotation by allowing a server to send replacement
1794public keys before old ones are removed. 1647public keys before old ones are removed.
@@ -1797,7 +1650,7 @@ host was already trusted or explicitly accepted by the user.
1797If 1650If
1798.Cm UpdateHostKeys 1651.Cm UpdateHostKeys
1799is set to 1652is set to
1800.Dq ask , 1653.Cm ask ,
1801then the user is asked to confirm the modifications to the known_hosts file. 1654then the user is asked to confirm the modifications to the known_hosts file.
1802Confirmation is currently incompatible with 1655Confirmation is currently incompatible with
1803.Cm ControlPersist , 1656.Cm ControlPersist ,
@@ -1806,22 +1659,21 @@ and will be disabled if it is enabled.
1806Presently, only 1659Presently, only
1807.Xr sshd 8 1660.Xr sshd 8
1808from OpenSSH 6.8 and greater support the 1661from OpenSSH 6.8 and greater support the
1809.Dq hostkeys@openssh.com 1662.Qq hostkeys@openssh.com
1810protocol extension used to inform the client of all the server's hostkeys. 1663protocol extension used to inform the client of all the server's hostkeys.
1811.It Cm UsePrivilegedPort 1664.It Cm UsePrivilegedPort
1812Specifies whether to use a privileged port for outgoing connections. 1665Specifies whether to use a privileged port for outgoing connections.
1813The argument must be 1666The argument must be
1814.Dq yes 1667.Cm yes
1815or 1668or
1816.Dq no . 1669.Cm no
1817The default is 1670(the default).
1818.Dq no .
1819If set to 1671If set to
1820.Dq yes , 1672.Cm yes ,
1821.Xr ssh 1 1673.Xr ssh 1
1822must be setuid root. 1674must be setuid root.
1823Note that this option must be set to 1675Note that this option must be set to
1824.Dq yes 1676.Cm yes
1825for 1677for
1826.Cm RhostsRSAAuthentication 1678.Cm RhostsRSAAuthentication
1827with older servers. 1679with older servers.
@@ -1840,39 +1692,35 @@ The default is
1840Specifies whether to verify the remote key using DNS and SSHFP resource 1692Specifies whether to verify the remote key using DNS and SSHFP resource
1841records. 1693records.
1842If this option is set to 1694If this option is set to
1843.Dq yes , 1695.Cm yes ,
1844the client will implicitly trust keys that match a secure fingerprint 1696the client will implicitly trust keys that match a secure fingerprint
1845from DNS. 1697from DNS.
1846Insecure fingerprints will be handled as if this option was set to 1698Insecure fingerprints will be handled as if this option was set to
1847.Dq ask . 1699.Cm ask .
1848If this option is set to 1700If this option is set to
1849.Dq ask , 1701.Cm ask ,
1850information on fingerprint match will be displayed, but the user will still 1702information on fingerprint match will be displayed, but the user will still
1851need to confirm new host keys according to the 1703need to confirm new host keys according to the
1852.Cm StrictHostKeyChecking 1704.Cm StrictHostKeyChecking
1853option. 1705option.
1854The argument must be
1855.Dq yes ,
1856.Dq no ,
1857or
1858.Dq ask .
1859The default is 1706The default is
1860.Dq no . 1707.Cm no .
1861.Pp 1708.Pp
1862See also VERIFYING HOST KEYS in 1709See also
1710.Sx VERIFYING HOST KEYS
1711in
1863.Xr ssh 1 . 1712.Xr ssh 1 .
1864.It Cm VisualHostKey 1713.It Cm VisualHostKey
1865If this flag is set to 1714If this flag is set to
1866.Dq yes , 1715.Cm yes ,
1867an ASCII art representation of the remote host key fingerprint is 1716an ASCII art representation of the remote host key fingerprint is
1868printed in addition to the fingerprint string at login and 1717printed in addition to the fingerprint string at login and
1869for unknown host keys. 1718for unknown host keys.
1870If this flag is set to 1719If this flag is set to
1871.Dq no , 1720.Cm no
1721(the default),
1872no fingerprint strings are printed at login and 1722no fingerprint strings are printed at login and
1873only the fingerprint string will be printed for unknown host keys. 1723only the fingerprint string will be printed for unknown host keys.
1874The default is
1875.Dq no .
1876.It Cm XAuthLocation 1724.It Cm XAuthLocation
1877Specifies the full pathname of the 1725Specifies the full pathname of the
1878.Xr xauth 1 1726.Xr xauth 1
@@ -1890,7 +1738,7 @@ or
1890.Sq ?\& 1738.Sq ?\&
1891(a wildcard that matches exactly one character). 1739(a wildcard that matches exactly one character).
1892For example, to specify a set of declarations for any host in the 1740For example, to specify a set of declarations for any host in the
1893.Dq .co.uk 1741.Qq .co.uk
1894set of domains, 1742set of domains,
1895the following pattern could be used: 1743the following pattern could be used:
1896.Pp 1744.Pp
@@ -1910,11 +1758,63 @@ by preceding them with an exclamation mark
1910For example, 1758For example,
1911to allow a key to be used from anywhere within an organization 1759to allow a key to be used from anywhere within an organization
1912except from the 1760except from the
1913.Dq dialup 1761.Qq dialup
1914pool, 1762pool,
1915the following entry (in authorized_keys) could be used: 1763the following entry (in authorized_keys) could be used:
1916.Pp 1764.Pp
1917.Dl from=\&"!*.dialup.example.com,*.example.com\&" 1765.Dl from=\&"!*.dialup.example.com,*.example.com\&"
1766.Sh TOKENS
1767Arguments to some keywords can make use of tokens,
1768which are expanded at runtime:
1769.Pp
1770.Bl -tag -width XXXX -offset indent -compact
1771.It %%
1772A literal
1773.Sq % .
1774.It \&%C
1775Shorthand for %l%h%p%r.
1776.It %d
1777Local user's home directory.
1778.It %h
1779The remote hostname.
1780.It %i
1781The local user ID.
1782.It %L
1783The local hostname.
1784.It %l
1785The local hostname, including the domain name.
1786.It %n
1787The original remote hostname, as given on the command line.
1788.It %p
1789The remote port.
1790.It %r
1791The remote username.
1792.It %u
1793The local username.
1794.El
1795.Pp
1796.Cm Match exec
1797accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u.
1798.Pp
1799.Cm CertificateFile
1800accepts the tokens %%, %d, %h, %l, %r, and %u.
1801.Pp
1802.Cm ControlPath
1803accepts the tokens %%, %C, %h, %i, %L, %l, %n, %p, %r, and %u.
1804.Pp
1805.Cm HostName
1806accepts the tokens %% and %h.
1807.Pp
1808.Cm IdentityAgent
1809and
1810.Cm IdentityFile
1811accept the tokens %%, %d, %h, %l, %r, and %u.
1812.Pp
1813.Cm LocalCommand
1814accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u.
1815.Pp
1816.Cm ProxyCommand
1817accepts the tokens %%, %h, %p, and %r.
1918.Sh FILES 1818.Sh FILES
1919.Bl -tag -width Ds 1819.Bl -tag -width Ds
1920.It Pa ~/.ssh/config 1820.It Pa ~/.ssh/config
@@ -1935,11 +1835,15 @@ This file must be world-readable.
1935.Sh SEE ALSO 1835.Sh SEE ALSO
1936.Xr ssh 1 1836.Xr ssh 1
1937.Sh AUTHORS 1837.Sh AUTHORS
1838.An -nosplit
1938OpenSSH is a derivative of the original and free 1839OpenSSH is a derivative of the original and free
1939ssh 1.2.12 release by Tatu Ylonen. 1840ssh 1.2.12 release by
1940Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, 1841.An Tatu Ylonen .
1941Theo de Raadt and Dug Song 1842.An Aaron Campbell , Bob Beck , Markus Friedl ,
1843.An Niels Provos , Theo de Raadt
1844and
1845.An Dug Song
1942removed many bugs, re-added newer features and 1846removed many bugs, re-added newer features and
1943created OpenSSH. 1847created OpenSSH.
1944Markus Friedl contributed the support for SSH 1848.An Markus Friedl
1945protocol versions 1.5 and 2.0. 1849contributed the support for SSH protocol versions 1.5 and 2.0.
diff --git a/sshbuf.c b/sshbuf.c
index 4d6e0ea0a..cbf7ed4a4 100644
--- a/sshbuf.c
+++ b/sshbuf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf.c,v 1.6 2016/01/12 23:42:54 djm Exp $ */ 1/* $OpenBSD: sshbuf.c,v 1.8 2016/11/25 23:22:04 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -18,7 +18,6 @@
18#define SSHBUF_INTERNAL 18#define SSHBUF_INTERNAL
19#include "includes.h" 19#include "includes.h"
20 20
21#include <sys/param.h> /* roundup */
22#include <sys/types.h> 21#include <sys/types.h>
23#include <signal.h> 22#include <signal.h>
24#include <stdlib.h> 23#include <stdlib.h>
@@ -27,6 +26,7 @@
27 26
28#include "ssherr.h" 27#include "ssherr.h"
29#include "sshbuf.h" 28#include "sshbuf.h"
29#include "misc.h"
30 30
31static inline int 31static inline int
32sshbuf_check_sanity(const struct sshbuf *buf) 32sshbuf_check_sanity(const struct sshbuf *buf)
@@ -250,7 +250,7 @@ sshbuf_set_max_size(struct sshbuf *buf, size_t max_size)
250 if (buf->size < SSHBUF_SIZE_INIT) 250 if (buf->size < SSHBUF_SIZE_INIT)
251 rlen = SSHBUF_SIZE_INIT; 251 rlen = SSHBUF_SIZE_INIT;
252 else 252 else
253 rlen = roundup(buf->size, SSHBUF_SIZE_INC); 253 rlen = ROUNDUP(buf->size, SSHBUF_SIZE_INC);
254 if (rlen > max_size) 254 if (rlen > max_size)
255 rlen = max_size; 255 rlen = max_size;
256 explicit_bzero(buf->d + buf->size, buf->alloc - buf->size); 256 explicit_bzero(buf->d + buf->size, buf->alloc - buf->size);
@@ -316,16 +316,13 @@ sshbuf_check_reserve(const struct sshbuf *buf, size_t len)
316} 316}
317 317
318int 318int
319sshbuf_reserve(struct sshbuf *buf, size_t len, u_char **dpp) 319sshbuf_allocate(struct sshbuf *buf, size_t len)
320{ 320{
321 size_t rlen, need; 321 size_t rlen, need;
322 u_char *dp; 322 u_char *dp;
323 int r; 323 int r;
324 324
325 if (dpp != NULL) 325 SSHBUF_DBG(("allocate buf = %p len = %zu", buf, len));
326 *dpp = NULL;
327
328 SSHBUF_DBG(("reserve buf = %p len = %zu", buf, len));
329 if ((r = sshbuf_check_reserve(buf, len)) != 0) 326 if ((r = sshbuf_check_reserve(buf, len)) != 0)
330 return r; 327 return r;
331 /* 328 /*
@@ -333,36 +330,49 @@ sshbuf_reserve(struct sshbuf *buf, size_t len, u_char **dpp)
333 * then pack the buffer, zeroing buf->off. 330 * then pack the buffer, zeroing buf->off.
334 */ 331 */
335 sshbuf_maybe_pack(buf, buf->size + len > buf->max_size); 332 sshbuf_maybe_pack(buf, buf->size + len > buf->max_size);
336 SSHBUF_TELL("reserve"); 333 SSHBUF_TELL("allocate");
337 if (len + buf->size > buf->alloc) { 334 if (len + buf->size <= buf->alloc)
338 /* 335 return 0; /* already have it. */
339 * Prefer to alloc in SSHBUF_SIZE_INC units, but 336
340 * allocate less if doing so would overflow max_size. 337 /*
341 */ 338 * Prefer to alloc in SSHBUF_SIZE_INC units, but
342 need = len + buf->size - buf->alloc; 339 * allocate less if doing so would overflow max_size.
343 rlen = roundup(buf->alloc + need, SSHBUF_SIZE_INC); 340 */
344 SSHBUF_DBG(("need %zu initial rlen %zu", need, rlen)); 341 need = len + buf->size - buf->alloc;
345 if (rlen > buf->max_size) 342 rlen = ROUNDUP(buf->alloc + need, SSHBUF_SIZE_INC);
346 rlen = buf->alloc + need; 343 SSHBUF_DBG(("need %zu initial rlen %zu", need, rlen));
347 SSHBUF_DBG(("adjusted rlen %zu", rlen)); 344 if (rlen > buf->max_size)
348 if ((dp = realloc(buf->d, rlen)) == NULL) { 345 rlen = buf->alloc + need;
349 SSHBUF_DBG(("realloc fail")); 346 SSHBUF_DBG(("adjusted rlen %zu", rlen));
350 if (dpp != NULL) 347 if ((dp = realloc(buf->d, rlen)) == NULL) {
351 *dpp = NULL; 348 SSHBUF_DBG(("realloc fail"));
352 return SSH_ERR_ALLOC_FAIL; 349 return SSH_ERR_ALLOC_FAIL;
353 } 350 }
354 buf->alloc = rlen; 351 buf->alloc = rlen;
355 buf->cd = buf->d = dp; 352 buf->cd = buf->d = dp;
356 if ((r = sshbuf_check_reserve(buf, len)) < 0) { 353 if ((r = sshbuf_check_reserve(buf, len)) < 0) {
357 /* shouldn't fail */ 354 /* shouldn't fail */
358 if (dpp != NULL) 355 return r;
359 *dpp = NULL;
360 return r;
361 }
362 } 356 }
357 SSHBUF_TELL("done");
358 return 0;
359}
360
361int
362sshbuf_reserve(struct sshbuf *buf, size_t len, u_char **dpp)
363{
364 u_char *dp;
365 int r;
366
367 if (dpp != NULL)
368 *dpp = NULL;
369
370 SSHBUF_DBG(("reserve buf = %p len = %zu", buf, len));
371 if ((r = sshbuf_allocate(buf, len)) != 0)
372 return r;
373
363 dp = buf->d + buf->size; 374 dp = buf->d + buf->size;
364 buf->size += len; 375 buf->size += len;
365 SSHBUF_TELL("done");
366 if (dpp != NULL) 376 if (dpp != NULL)
367 *dpp = dp; 377 *dpp = dp;
368 return 0; 378 return 0;
diff --git a/sshbuf.h b/sshbuf.h
index 52ff017cc..1ac4b8c0a 100644
--- a/sshbuf.h
+++ b/sshbuf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf.h,v 1.7 2016/05/02 08:49:03 djm Exp $ */ 1/* $OpenBSD: sshbuf.h,v 1.8 2016/11/25 23:22:04 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -139,6 +139,14 @@ u_char *sshbuf_mutable_ptr(const struct sshbuf *buf);
139int sshbuf_check_reserve(const struct sshbuf *buf, size_t len); 139int sshbuf_check_reserve(const struct sshbuf *buf, size_t len);
140 140
141/* 141/*
142 * Preallocates len additional bytes in buf.
143 * Useful for cases where the caller knows how many bytes will ultimately be
144 * required to avoid realloc in the buffer code.
145 * Returns 0 on success, or a negative SSH_ERR_* error code on failure.
146 */
147int sshbuf_allocate(struct sshbuf *buf, size_t len);
148
149/*
142 * Reserve len bytes in buf. 150 * Reserve len bytes in buf.
143 * Returns 0 on success and a pointer to the first reserved byte via the 151 * Returns 0 on success and a pointer to the first reserved byte via the
144 * optional dpp parameter or a negative * SSH_ERR_* error code on failure. 152 * optional dpp parameter or a negative * SSH_ERR_* error code on failure.
diff --git a/sshconnect.c b/sshconnect.c
index 07dfc9da1..c64c51bbb 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect.c,v 1.271 2016/01/14 22:56:56 markus Exp $ */ 1/* $OpenBSD: sshconnect.c,v 1.272 2016/09/12 01:22:38 deraadt Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -15,7 +15,6 @@
15 15
16#include "includes.h" 16#include "includes.h"
17 17
18#include <sys/param.h> /* roundup */
19#include <sys/types.h> 18#include <sys/types.h>
20#include <sys/wait.h> 19#include <sys/wait.h>
21#include <sys/stat.h> 20#include <sys/stat.h>
@@ -1409,7 +1408,7 @@ ssh_put_password(char *password)
1409 packet_put_cstring(password); 1408 packet_put_cstring(password);
1410 return; 1409 return;
1411 } 1410 }
1412 size = roundup(strlen(password) + 1, 32); 1411 size = ROUNDUP(strlen(password) + 1, 32);
1413 padded = xcalloc(1, size); 1412 padded = xcalloc(1, size);
1414 strlcpy(padded, password, size); 1413 strlcpy(padded, password, size);
1415 packet_put_string(padded, size); 1414 packet_put_string(padded, size);
diff --git a/sshconnect1.c b/sshconnect1.c
index bfc523bde..a04536184 100644
--- a/sshconnect1.c
+++ b/sshconnect1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect1.c,v 1.78 2015/11/15 22:26:49 jcs Exp $ */ 1/* $OpenBSD: sshconnect1.c,v 1.79 2016/09/19 07:52:42 natano Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -509,7 +509,6 @@ ssh_kex(char *host, struct sockaddr *hostaddr)
509 u_char cookie[8]; 509 u_char cookie[8];
510 u_int supported_ciphers; 510 u_int supported_ciphers;
511 u_int server_flags, client_flags; 511 u_int server_flags, client_flags;
512 u_int32_t rnd = 0;
513 512
514 debug("Waiting for server public key."); 513 debug("Waiting for server public key.");
515 514
@@ -568,12 +567,7 @@ ssh_kex(char *host, struct sockaddr *hostaddr)
568 * random number, interpreted as a 32-byte key, with the least 567 * random number, interpreted as a 32-byte key, with the least
569 * significant 8 bits being the first byte of the key. 568 * significant 8 bits being the first byte of the key.
570 */ 569 */
571 for (i = 0; i < 32; i++) { 570 arc4random_buf(session_key, sizeof(session_key));
572 if (i % 4 == 0)
573 rnd = arc4random();
574 session_key[i] = rnd & 0xff;
575 rnd >>= 8;
576 }
577 571
578 /* 572 /*
579 * According to the protocol spec, the first byte of the session key 573 * According to the protocol spec, the first byte of the session key
diff --git a/sshconnect2.c b/sshconnect2.c
index 34b9d304e..d534e6190 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect2.c,v 1.247 2016/07/22 05:46:11 dtucker Exp $ */ 1/* $OpenBSD: sshconnect2.c,v 1.251 2016/12/04 23:54:02 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Damien Miller. All rights reserved. 4 * Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -370,6 +370,7 @@ void userauth(Authctxt *, char *);
370static int sign_and_send_pubkey(Authctxt *, Identity *); 370static int sign_and_send_pubkey(Authctxt *, Identity *);
371static void pubkey_prepare(Authctxt *); 371static void pubkey_prepare(Authctxt *);
372static void pubkey_cleanup(Authctxt *); 372static void pubkey_cleanup(Authctxt *);
373static void pubkey_reset(Authctxt *);
373static Key *load_identity_file(Identity *); 374static Key *load_identity_file(Identity *);
374 375
375static Authmethod *authmethod_get(char *authlist); 376static Authmethod *authmethod_get(char *authlist);
@@ -461,6 +462,8 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
461 pubkey_cleanup(&authctxt); 462 pubkey_cleanup(&authctxt);
462 ssh_dispatch_range(ssh, SSH2_MSG_USERAUTH_MIN, SSH2_MSG_USERAUTH_MAX, NULL); 463 ssh_dispatch_range(ssh, SSH2_MSG_USERAUTH_MIN, SSH2_MSG_USERAUTH_MAX, NULL);
463 464
465 if (!authctxt.success)
466 fatal("Authentication failed.");
464 debug("Authentication succeeded (%s).", authctxt.method->name); 467 debug("Authentication succeeded (%s).", authctxt.method->name);
465} 468}
466 469
@@ -615,8 +618,7 @@ input_userauth_failure(int type, u_int32_t seq, void *ctxt)
615 if (partial != 0) { 618 if (partial != 0) {
616 verbose("Authenticated with partial success."); 619 verbose("Authenticated with partial success.");
617 /* reset state */ 620 /* reset state */
618 pubkey_cleanup(authctxt); 621 pubkey_reset(authctxt);
619 pubkey_prepare(authctxt);
620 } 622 }
621 debug("Authentications that can continue: %s", authlist); 623 debug("Authentications that can continue: %s", authlist);
622 624
@@ -1526,6 +1528,15 @@ pubkey_cleanup(Authctxt *authctxt)
1526 } 1528 }
1527} 1529}
1528 1530
1531static void
1532pubkey_reset(Authctxt *authctxt)
1533{
1534 Identity *id;
1535
1536 TAILQ_FOREACH(id, &authctxt->keys, next)
1537 id->tried = 0;
1538}
1539
1529static int 1540static int
1530try_identity(Identity *id) 1541try_identity(Identity *id)
1531{ 1542{
@@ -1574,6 +1585,7 @@ userauth_pubkey(Authctxt *authctxt)
1574 } 1585 }
1575 key_free(id->key); 1586 key_free(id->key);
1576 id->key = NULL; 1587 id->key = NULL;
1588 id->isprivate = 0;
1577 } 1589 }
1578 } 1590 }
1579 if (sent) 1591 if (sent)
diff --git a/sshd.0 b/sshd.0
index 0f7db5fc3..089244c93 100644
--- a/sshd.0
+++ b/sshd.0
@@ -4,10 +4,9 @@ NAME
4 sshd M-bM-^@M-^S OpenSSH SSH daemon 4 sshd M-bM-^@M-^S OpenSSH SSH daemon
5 5
6SYNOPSIS 6SYNOPSIS
7 sshd [-46DdeiqTt] [-b bits] [-C connection_spec] 7 sshd [-46DdeiqTt] [-C connection_spec] [-c host_certificate_file]
8 [-c host_certificate_file] [-E log_file] [-f config_file] 8 [-E log_file] [-f config_file] [-g login_grace_time]
9 [-g login_grace_time] [-h host_key_file] [-k key_gen_time] 9 [-h host_key_file] [-o option] [-p port] [-u len]
10 [-o option] [-p port] [-u len]
11 10
12DESCRIPTION 11DESCRIPTION
13 sshd (OpenSSH Daemon) is the daemon program for ssh(1). Together these 12 sshd (OpenSSH Daemon) is the daemon program for ssh(1). Together these
@@ -31,10 +30,6 @@ DESCRIPTION
31 30
32 -6 Forces sshd to use IPv6 addresses only. 31 -6 Forces sshd to use IPv6 addresses only.
33 32
34 -b bits
35 Specifies the number of bits in the ephemeral protocol version 1
36 server key (default 1024).
37
38 -C connection_spec 33 -C connection_spec
39 Specify the connection parameters to use for the -T extended test 34 Specify the connection parameters to use for the -T extended test
40 mode. If provided, any Match directives in the configuration 35 mode. If provided, any Match directives in the configuration
@@ -80,28 +75,12 @@ DESCRIPTION
80 Specifies a file from which a host key is read. This option must 75 Specifies a file from which a host key is read. This option must
81 be given if sshd is not run as root (as the normal host key files 76 be given if sshd is not run as root (as the normal host key files
82 are normally not readable by anyone but root). The default is 77 are normally not readable by anyone but root). The default is
83 /etc/ssh/ssh_host_key for protocol version 1, and 78 /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key,
84 /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key. 79 /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key. It
85 /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key for 80 is possible to have multiple host key files for the different
86 protocol version 2. It is possible to have multiple host key 81 host key algorithms.
87 files for the different protocol versions and host key 82
88 algorithms. 83 -i Specifies that sshd is being run from inetd(8).
89
90 -i Specifies that sshd is being run from inetd(8). If SSH protocol
91 1 is enabled, sshd should not normally be run from inetd because
92 it needs to generate the server key before it can respond to the
93 client, and this may take some time. Clients may have to wait
94 too long if the key was regenerated every time.
95
96 -k key_gen_time
97 Specifies how often the ephemeral protocol version 1 server key
98 is regenerated (default 3600 seconds, or one hour). The
99 motivation for regenerating the key fairly often is that the key
100 is not stored anywhere, and after about an hour it becomes
101 impossible to recover the key for decrypting intercepted
102 communications even if the machine is cracked into or physically
103 seized. A value of zero indicates that the key will never be
104 regenerated.
105 84
106 -o option 85 -o option
107 Can be used to give options in the format used in the 86 Can be used to give options in the format used in the
@@ -138,33 +117,17 @@ DESCRIPTION
138 into the utmp file. -u0 may also be used to prevent sshd from 117 into the utmp file. -u0 may also be used to prevent sshd from
139 making DNS requests unless the authentication mechanism or 118 making DNS requests unless the authentication mechanism or
140 configuration requires it. Authentication mechanisms that may 119 configuration requires it. Authentication mechanisms that may
141 require DNS include RhostsRSAAuthentication, 120 require DNS include HostbasedAuthentication and using a
142 HostbasedAuthentication, and using a from="pattern-list" option 121 from="pattern-list" option in a key file. Configuration options
143 in a key file. Configuration options that require DNS include 122 that require DNS include using a USER@HOST pattern in AllowUsers
144 using a USER@HOST pattern in AllowUsers or DenyUsers. 123 or DenyUsers.
145 124
146AUTHENTICATION 125AUTHENTICATION
147 The OpenSSH SSH daemon supports SSH protocols 1 and 2. The default is to 126 The OpenSSH SSH daemon supports SSH protocol 2 only. Each host has a
148 use protocol 2 only, though this can be changed via the Protocol option 127 host-specific key, used to identify the host. Whenever a client
149 in sshd_config(5). Protocol 1 should not be used and is only offered to 128 connects, the daemon responds with its public host key. The client
150 support legacy devices. 129 compares the host key against its own database to verify that it has not
151 130 changed. Forward security is provided through a Diffie-Hellman key
152 Each host has a host-specific key, used to identify the host. Partial
153 forward security for protocol 1 is provided through an additional server
154 key, normally 1024 bits, generated when the server starts. This key is
155 normally regenerated every hour if it has been used, and is never stored
156 on disk. Whenever a client connects, the daemon responds with its public
157 host and server keys. The client compares the RSA host key against its
158 own database to verify that it has not changed. The client then
159 generates a 256-bit random number. It encrypts this random number using
160 both the host key and the server key, and sends the encrypted number to
161 the server. Both sides then use this random number as a session key
162 which is used to encrypt all further communications in the session. The
163 rest of the session is encrypted using a conventional cipher, currently
164 Blowfish or 3DES, with 3DES being used by default. The client selects
165 the encryption algorithm to use from those offered by the server.
166
167 For protocol 2, forward security is provided through a Diffie-Hellman key
168 agreement. This key agreement results in a shared session key. The rest 131 agreement. This key agreement results in a shared session key. The rest
169 of the session is encrypted using a symmetric cipher, currently 128-bit 132 of the session is encrypted using a symmetric cipher, currently 128-bit
170 AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES. The 133 AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES. The
@@ -271,27 +234,20 @@ AUTHORIZED_KEYS FILE FORMAT
271 key authentication; if this option is not specified, the default is 234 key authentication; if this option is not specified, the default is
272 ~/.ssh/authorized_keys and ~/.ssh/authorized_keys2. Each line of the 235 ~/.ssh/authorized_keys and ~/.ssh/authorized_keys2. Each line of the
273 file contains one key (empty lines and lines starting with a M-bM-^@M-^X#M-bM-^@M-^Y are 236 file contains one key (empty lines and lines starting with a M-bM-^@M-^X#M-bM-^@M-^Y are
274 ignored as comments). Protocol 1 public keys consist of the following 237 ignored as comments). Public keys consist of the following space-
275 space-separated fields: options, bits, exponent, modulus, comment. 238 separated fields: options, keytype, base64-encoded key, comment. The
276 Protocol 2 public key consist of: options, keytype, base64-encoded key, 239 options field is optional. The keytype is M-bM-^@M-^\ecdsa-sha2-nistp256M-bM-^@M-^],
277 comment. The options field is optional; its presence is determined by
278 whether the line starts with a number or not (the options field never
279 starts with a number). The bits, exponent, modulus, and comment fields
280 give the RSA key for protocol version 1; the comment field is not used
281 for anything (but may be convenient for the user to identify the key).
282 For protocol version 2 the keytype is M-bM-^@M-^\ecdsa-sha2-nistp256M-bM-^@M-^],
283 M-bM-^@M-^\ecdsa-sha2-nistp384M-bM-^@M-^], M-bM-^@M-^\ecdsa-sha2-nistp521M-bM-^@M-^], M-bM-^@M-^\ssh-ed25519M-bM-^@M-^], M-bM-^@M-^\ssh-dssM-bM-^@M-^] or 240 M-bM-^@M-^\ecdsa-sha2-nistp384M-bM-^@M-^], M-bM-^@M-^\ecdsa-sha2-nistp521M-bM-^@M-^], M-bM-^@M-^\ssh-ed25519M-bM-^@M-^], M-bM-^@M-^\ssh-dssM-bM-^@M-^] or
284 M-bM-^@M-^\ssh-rsaM-bM-^@M-^]. 241 M-bM-^@M-^\ssh-rsaM-bM-^@M-^]; the comment field is not used for anything (but may be
242 convenient for the user to identify the key).
285 243
286 Note that lines in this file are usually several hundred bytes long 244 Note that lines in this file can be several hundred bytes long (because
287 (because of the size of the public key encoding) up to a limit of 8 245 of the size of the public key encoding) up to a limit of 8 kilobytes,
288 kilobytes, which permits DSA keys up to 8 kilobits and RSA keys up to 16 246 which permits DSA keys up to 8 kilobits and RSA keys up to 16 kilobits.
289 kilobits. You don't want to type them in; instead, copy the 247 You don't want to type them in; instead, copy the id_dsa.pub,
290 identity.pub, id_dsa.pub, id_ecdsa.pub, id_ed25519.pub, or the id_rsa.pub 248 id_ecdsa.pub, id_ed25519.pub, or the id_rsa.pub file and edit it.
291 file and edit it.
292 249
293 sshd enforces a minimum RSA key modulus size for protocol 1 and protocol 250 sshd enforces a minimum RSA key modulus size of 768 bits.
294 2 keys of 768 bits.
295 251
296 The options (if present) consist of comma-separated option 252 The options (if present) consist of comma-separated option
297 specifications. No spaces are permitted, except within double quotes. 253 specifications. No spaces are permitted, except within double quotes.
@@ -318,16 +274,23 @@ AUTHORIZED_KEYS FILE FORMAT
318 pty; otherwise it is run without a tty. If an 8-bit clean 274 pty; otherwise it is run without a tty. If an 8-bit clean
319 channel is required, one must not request a pty or should specify 275 channel is required, one must not request a pty or should specify
320 no-pty. A quote may be included in the command by quoting it 276 no-pty. A quote may be included in the command by quoting it
321 with a backslash. This option might be useful to restrict 277 with a backslash.
322 certain public keys to perform just a specific operation. An 278
323 example might be a key that permits remote backups but nothing 279 This option might be useful to restrict certain public keys to
324 else. Note that the client may specify TCP and/or X11 forwarding 280 perform just a specific operation. An example might be a key
325 unless they are explicitly prohibited. The command originally 281 that permits remote backups but nothing else. Note that the
326 supplied by the client is available in the SSH_ORIGINAL_COMMAND 282 client may specify TCP and/or X11 forwarding unless they are
327 environment variable. Note that this option applies to shell, 283 explicitly prohibited, e.g. using the restrict key option.
328 command or subsystem execution. Also note that this command may 284
329 be superseded by either a sshd_config(5) ForceCommand directive 285 The command originally supplied by the client is available in the
330 or a command embedded in a certificate. 286 SSH_ORIGINAL_COMMAND environment variable. Note that this option
287 applies to shell, command or subsystem execution. Also note that
288 this command may be superseded by a sshd_config(5) ForceCommand
289 directive.
290
291 If a command is specified and a forced-command is embedded in a
292 certificate used for authentication, then the certificate will be
293 accepted only if the two commands are identical.
331 294
332 environment="NAME=value" 295 environment="NAME=value"
333 Specifies that the string is to be added to the environment when 296 Specifies that the string is to be added to the environment when
@@ -335,7 +298,6 @@ AUTHORIZED_KEYS FILE FORMAT
335 override other default environment values. Multiple options of 298 override other default environment values. Multiple options of
336 this type are permitted. Environment processing is disabled by 299 this type are permitted. Environment processing is disabled by
337 default and is controlled via the PermitUserEnvironment option. 300 default and is controlled via the PermitUserEnvironment option.
338 This option is automatically disabled if UseLogin is enabled.
339 301
340 from="pattern-list" 302 from="pattern-list"
341 Specifies that in addition to public key authentication, either 303 Specifies that in addition to public key authentication, either
@@ -440,8 +402,8 @@ SSH_KNOWN_HOSTS FILE FORMAT
440 is added to the per-user file. 402 is added to the per-user file.
441 403
442 Each line in these files contains the following fields: markers 404 Each line in these files contains the following fields: markers
443 (optional), hostnames, bits, exponent, modulus, comment. The fields are 405 (optional), hostnames, keytype, base64-encoded key, comment. The fields
444 separated by spaces. 406 are separated by spaces.
445 407
446 The marker is optional, but if it is present then it must be one of 408 The marker is optional, but if it is present then it must be one of
447 M-bM-^@M-^\@cert-authorityM-bM-^@M-^], to indicate that the line contains a certification 409 M-bM-^@M-^\@cert-authorityM-bM-^@M-^], to indicate that the line contains a certification
@@ -464,9 +426,10 @@ SSH_KNOWN_HOSTS FILE FORMAT
464 appear on a single line and none of the above negation or wildcard 426 appear on a single line and none of the above negation or wildcard
465 operators may be applied. 427 operators may be applied.
466 428
467 Bits, exponent, and modulus are taken directly from the RSA host key; 429 The keytype and base64-encoded key are taken directly from the host key;
468 they can be obtained, for example, from /etc/ssh/ssh_host_key.pub. The 430 they can be obtained, for example, from /etc/ssh/ssh_host_rsa_key.pub.
469 optional comment field continues to the end of the line, and is not used. 431 The optional comment field continues to the end of the line, and is not
432 used.
470 433
471 Lines starting with M-bM-^@M-^X#M-bM-^@M-^Y and empty lines are ignored as comments. 434 Lines starting with M-bM-^@M-^X#M-bM-^@M-^Y and empty lines are ignored as comments.
472 435
@@ -493,9 +456,9 @@ SSH_KNOWN_HOSTS FILE FORMAT
493 456
494 Note that the lines in these files are typically hundreds of characters 457 Note that the lines in these files are typically hundreds of characters
495 long, and you definitely don't want to type in the host keys by hand. 458 long, and you definitely don't want to type in the host keys by hand.
496 Rather, generate them by a script, ssh-keyscan(1) or by taking 459 Rather, generate them by a script, ssh-keyscan(1) or by taking, for
497 /etc/ssh/ssh_host_key.pub and adding the host names at the front. 460 example, /etc/ssh/ssh_host_rsa_key.pub and adding the host names at the
498 ssh-keygen(1) also offers some basic automated editing for 461 front. ssh-keygen(1) also offers some basic automated editing for
499 ~/.ssh/known_hosts including removing hosts matching a host name and 462 ~/.ssh/known_hosts including removing hosts matching a host name and
500 converting all host names to their hashed representations. 463 converting all host names to their hashed representations.
501 464
@@ -598,7 +561,6 @@ FILES
598 allows host-based authentication without permitting login with 561 allows host-based authentication without permitting login with
599 rlogin/rsh. 562 rlogin/rsh.
600 563
601 /etc/ssh/ssh_host_key
602 /etc/ssh/ssh_host_dsa_key 564 /etc/ssh/ssh_host_dsa_key
603 /etc/ssh/ssh_host_ecdsa_key 565 /etc/ssh/ssh_host_ecdsa_key
604 /etc/ssh/ssh_host_ed25519_key 566 /etc/ssh/ssh_host_ed25519_key
@@ -608,7 +570,6 @@ FILES
608 not accessible to others. Note that sshd does not start if these 570 not accessible to others. Note that sshd does not start if these
609 files are group/world-accessible. 571 files are group/world-accessible.
610 572
611 /etc/ssh/ssh_host_key.pub
612 /etc/ssh/ssh_host_dsa_key.pub 573 /etc/ssh/ssh_host_dsa_key.pub
613 /etc/ssh/ssh_host_ecdsa_key.pub 574 /etc/ssh/ssh_host_ecdsa_key.pub
614 /etc/ssh/ssh_host_ed25519_key.pub 575 /etc/ssh/ssh_host_ed25519_key.pub
@@ -662,4 +623,4 @@ AUTHORS
662 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 623 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
663 for privilege separation. 624 for privilege separation.
664 625
665OpenBSD 6.0 February 17, 2016 OpenBSD 6.0 626OpenBSD 6.0 November 30, 2016 OpenBSD 6.0
diff --git a/sshd.8 b/sshd.8
index 4e7556736..38a72540d 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd.8,v 1.284 2016/02/17 07:38:19 jmc Exp $ 36.\" $OpenBSD: sshd.8,v 1.287 2016/11/30 02:57:40 djm Exp $
37.Dd $Mdocdate: February 17 2016 $ 37.Dd $Mdocdate: November 30 2016 $
38.Dt SSHD 8 38.Dt SSHD 8
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -44,14 +44,12 @@
44.Nm sshd 44.Nm sshd
45.Bk -words 45.Bk -words
46.Op Fl 46DdeiqTt 46.Op Fl 46DdeiqTt
47.Op Fl b Ar bits
48.Op Fl C Ar connection_spec 47.Op Fl C Ar connection_spec
49.Op Fl c Ar host_certificate_file 48.Op Fl c Ar host_certificate_file
50.Op Fl E Ar log_file 49.Op Fl E Ar log_file
51.Op Fl f Ar config_file 50.Op Fl f Ar config_file
52.Op Fl g Ar login_grace_time 51.Op Fl g Ar login_grace_time
53.Op Fl h Ar host_key_file 52.Op Fl h Ar host_key_file
54.Op Fl k Ar key_gen_time
55.Op Fl o Ar option 53.Op Fl o Ar option
56.Op Fl p Ar port 54.Op Fl p Ar port
57.Op Fl u Ar len 55.Op Fl u Ar len
@@ -99,9 +97,6 @@ to use IPv4 addresses only.
99Forces 97Forces
100.Nm 98.Nm
101to use IPv6 addresses only. 99to use IPv6 addresses only.
102.It Fl b Ar bits
103Specifies the number of bits in the ephemeral protocol version 1
104server key (default 1024).
105.It Fl C Ar connection_spec 100.It Fl C Ar connection_spec
106Specify the connection parameters to use for the 101Specify the connection parameters to use for the
107.Fl T 102.Fl T
@@ -172,36 +167,18 @@ This option must be given if
172is not run as root (as the normal 167is not run as root (as the normal
173host key files are normally not readable by anyone but root). 168host key files are normally not readable by anyone but root).
174The default is 169The default is
175.Pa /etc/ssh/ssh_host_key
176for protocol version 1, and
177.Pa /etc/ssh/ssh_host_dsa_key , 170.Pa /etc/ssh/ssh_host_dsa_key ,
178.Pa /etc/ssh/ssh_host_ecdsa_key . 171.Pa /etc/ssh/ssh_host_ecdsa_key ,
179.Pa /etc/ssh/ssh_host_ed25519_key 172.Pa /etc/ssh/ssh_host_ed25519_key
180and 173and
181.Pa /etc/ssh/ssh_host_rsa_key 174.Pa /etc/ssh/ssh_host_rsa_key .
182for protocol version 2.
183It is possible to have multiple host key files for 175It is possible to have multiple host key files for
184the different protocol versions and host key algorithms. 176the different host key algorithms.
185.It Fl i 177.It Fl i
186Specifies that 178Specifies that
187.Nm 179.Nm
188is being run from 180is being run from
189.Xr inetd 8 . 181.Xr inetd 8 .
190If SSH protocol 1 is enabled,
191.Nm
192should not normally be run
193from inetd because it needs to generate the server key before it can
194respond to the client, and this may take some time.
195Clients may have to wait too long if the key was regenerated every time.
196.It Fl k Ar key_gen_time
197Specifies how often the ephemeral protocol version 1 server key is
198regenerated (default 3600 seconds, or one hour).
199The motivation for regenerating the key fairly
200often is that the key is not stored anywhere, and after about an hour
201it becomes impossible to recover the key for decrypting intercepted
202communications even if the machine is cracked into or physically
203seized.
204A value of zero indicates that the key will never be regenerated.
205.It Fl o Ar option 182.It Fl o Ar option
206Can be used to give options in the format used in the configuration file. 183Can be used to give options in the format used in the configuration file.
207This is useful for specifying options for which there is no separate 184This is useful for specifying options for which there is no separate
@@ -260,8 +237,7 @@ may also be used to prevent
260from making DNS requests unless the authentication 237from making DNS requests unless the authentication
261mechanism or configuration requires it. 238mechanism or configuration requires it.
262Authentication mechanisms that may require DNS include 239Authentication mechanisms that may require DNS include
263.Cm RhostsRSAAuthentication , 240.Cm HostbasedAuthentication
264.Cm HostbasedAuthentication ,
265and using a 241and using a
266.Cm from="pattern-list" 242.Cm from="pattern-list"
267option in a key file. 243option in a key file.
@@ -272,42 +248,14 @@ or
272.Cm DenyUsers . 248.Cm DenyUsers .
273.El 249.El
274.Sh AUTHENTICATION 250.Sh AUTHENTICATION
275The OpenSSH SSH daemon supports SSH protocols 1 and 2. 251The OpenSSH SSH daemon supports SSH protocol 2 only.
276The default is to use protocol 2 only,
277though this can be changed via the
278.Cm Protocol
279option in
280.Xr sshd_config 5 .
281Protocol 1 should not be used
282and is only offered to support legacy devices.
283.Pp
284Each host has a host-specific key, 252Each host has a host-specific key,
285used to identify the host. 253used to identify the host.
286Partial forward security for protocol 1 is provided through
287an additional server key,
288normally 1024 bits,
289generated when the server starts.
290This key is normally regenerated every hour if it has been used, and
291is never stored on disk.
292Whenever a client connects, the daemon responds with its public 254Whenever a client connects, the daemon responds with its public
293host and server keys. 255host key.
294The client compares the 256The client compares the
295RSA host key against its own database to verify that it has not changed. 257host key against its own database to verify that it has not changed.
296The client then generates a 256-bit random number. 258Forward security is provided through a Diffie-Hellman key agreement.
297It encrypts this
298random number using both the host key and the server key, and sends
299the encrypted number to the server.
300Both sides then use this
301random number as a session key which is used to encrypt all further
302communications in the session.
303The rest of the session is encrypted
304using a conventional cipher, currently Blowfish or 3DES, with 3DES
305being used by default.
306The client selects the encryption algorithm
307to use from those offered by the server.
308.Pp
309For protocol 2,
310forward security is provided through a Diffie-Hellman key agreement.
311This key agreement results in a shared session key. 259This key agreement results in a shared session key.
312The rest of the session is encrypted using a symmetric cipher, currently 260The rest of the session is encrypted using a symmetric cipher, currently
313128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES. 261128-bit AES, Blowfish, 3DES, CAST128, Arcfour, 192-bit AES, or 256-bit AES.
@@ -480,32 +428,25 @@ key (empty lines and lines starting with a
480.Ql # 428.Ql #
481are ignored as 429are ignored as
482comments). 430comments).
483Protocol 1 public keys consist of the following space-separated fields: 431Public keys consist of the following space-separated fields:
484options, bits, exponent, modulus, comment.
485Protocol 2 public key consist of:
486options, keytype, base64-encoded key, comment. 432options, keytype, base64-encoded key, comment.
487The options field is optional; 433The options field is optional.
488its presence is determined by whether the line starts 434The keytype is
489with a number or not (the options field never starts with a number).
490The bits, exponent, modulus, and comment fields give the RSA key for
491protocol version 1; the
492comment field is not used for anything (but may be convenient for the
493user to identify the key).
494For protocol version 2 the keytype is
495.Dq ecdsa-sha2-nistp256 , 435.Dq ecdsa-sha2-nistp256 ,
496.Dq ecdsa-sha2-nistp384 , 436.Dq ecdsa-sha2-nistp384 ,
497.Dq ecdsa-sha2-nistp521 , 437.Dq ecdsa-sha2-nistp521 ,
498.Dq ssh-ed25519 , 438.Dq ssh-ed25519 ,
499.Dq ssh-dss 439.Dq ssh-dss
500or 440or
501.Dq ssh-rsa . 441.Dq ssh-rsa ;
442the comment field is not used for anything (but may be convenient for the
443user to identify the key).
502.Pp 444.Pp
503Note that lines in this file are usually several hundred bytes long 445Note that lines in this file can be several hundred bytes long
504(because of the size of the public key encoding) up to a limit of 446(because of the size of the public key encoding) up to a limit of
5058 kilobytes, which permits DSA keys up to 8 kilobits and RSA 4478 kilobytes, which permits DSA keys up to 8 kilobits and RSA
506keys up to 16 kilobits. 448keys up to 16 kilobits.
507You don't want to type them in; instead, copy the 449You don't want to type them in; instead, copy the
508.Pa identity.pub ,
509.Pa id_dsa.pub , 450.Pa id_dsa.pub ,
510.Pa id_ecdsa.pub , 451.Pa id_ecdsa.pub ,
511.Pa id_ed25519.pub , 452.Pa id_ed25519.pub ,
@@ -514,8 +455,7 @@ or the
514file and edit it. 455file and edit it.
515.Pp 456.Pp
516.Nm 457.Nm
517enforces a minimum RSA key modulus size for protocol 1 458enforces a minimum RSA key modulus size of 768 bits.
518and protocol 2 keys of 768 bits.
519.Pp 459.Pp
520The options (if present) consist of comma-separated option 460The options (if present) consist of comma-separated option
521specifications. 461specifications.
@@ -544,19 +484,27 @@ If an 8-bit clean channel is required,
544one must not request a pty or should specify 484one must not request a pty or should specify
545.Cm no-pty . 485.Cm no-pty .
546A quote may be included in the command by quoting it with a backslash. 486A quote may be included in the command by quoting it with a backslash.
487.Pp
547This option might be useful 488This option might be useful
548to restrict certain public keys to perform just a specific operation. 489to restrict certain public keys to perform just a specific operation.
549An example might be a key that permits remote backups but nothing else. 490An example might be a key that permits remote backups but nothing else.
550Note that the client may specify TCP and/or X11 491Note that the client may specify TCP and/or X11
551forwarding unless they are explicitly prohibited. 492forwarding unless they are explicitly prohibited, e.g. using the
493.Cm restrict
494key option.
495.Pp
552The command originally supplied by the client is available in the 496The command originally supplied by the client is available in the
553.Ev SSH_ORIGINAL_COMMAND 497.Ev SSH_ORIGINAL_COMMAND
554environment variable. 498environment variable.
555Note that this option applies to shell, command or subsystem execution. 499Note that this option applies to shell, command or subsystem execution.
556Also note that this command may be superseded by either a 500Also note that this command may be superseded by a
557.Xr sshd_config 5 501.Xr sshd_config 5
558.Cm ForceCommand 502.Cm ForceCommand
559directive or a command embedded in a certificate. 503directive.
504.Pp
505If a command is specified and a forced-command is embedded in a certificate
506used for authentication, then the certificate will be accepted only if the
507two commands are identical.
560.It Cm environment="NAME=value" 508.It Cm environment="NAME=value"
561Specifies that the string is to be added to the environment when 509Specifies that the string is to be added to the environment when
562logging in using this key. 510logging in using this key.
@@ -567,9 +515,6 @@ Environment processing is disabled by default and is
567controlled via the 515controlled via the
568.Cm PermitUserEnvironment 516.Cm PermitUserEnvironment
569option. 517option.
570This option is automatically disabled if
571.Cm UseLogin
572is enabled.
573.It Cm from="pattern-list" 518.It Cm from="pattern-list"
574Specifies that in addition to public key authentication, either the canonical 519Specifies that in addition to public key authentication, either the canonical
575name of the remote host or its IP address must be present in the 520name of the remote host or its IP address must be present in the
@@ -693,7 +638,7 @@ maintained automatically: whenever the user connects from an unknown host,
693its key is added to the per-user file. 638its key is added to the per-user file.
694.Pp 639.Pp
695Each line in these files contains the following fields: markers (optional), 640Each line in these files contains the following fields: markers (optional),
696hostnames, bits, exponent, modulus, comment. 641hostnames, keytype, base64-encoded key, comment.
697The fields are separated by spaces. 642The fields are separated by spaces.
698.Pp 643.Pp
699The marker is optional, but if it is present then it must be one of 644The marker is optional, but if it is present then it must be one of
@@ -734,9 +679,9 @@ character.
734Only one hashed hostname may appear on a single line and none of the above 679Only one hashed hostname may appear on a single line and none of the above
735negation or wildcard operators may be applied. 680negation or wildcard operators may be applied.
736.Pp 681.Pp
737Bits, exponent, and modulus are taken directly from the RSA host key; they 682The keytype and base64-encoded key are taken directly from the host key; they
738can be obtained, for example, from 683can be obtained, for example, from
739.Pa /etc/ssh/ssh_host_key.pub . 684.Pa /etc/ssh/ssh_host_rsa_key.pub .
740The optional comment field continues to the end of the line, and is not used. 685The optional comment field continues to the end of the line, and is not used.
741.Pp 686.Pp
742Lines starting with 687Lines starting with
@@ -775,8 +720,8 @@ Note that the lines in these files are typically hundreds of characters
775long, and you definitely don't want to type in the host keys by hand. 720long, and you definitely don't want to type in the host keys by hand.
776Rather, generate them by a script, 721Rather, generate them by a script,
777.Xr ssh-keyscan 1 722.Xr ssh-keyscan 1
778or by taking 723or by taking, for example,
779.Pa /etc/ssh/ssh_host_key.pub 724.Pa /etc/ssh/ssh_host_rsa_key.pub
780and adding the host names at the front. 725and adding the host names at the front.
781.Xr ssh-keygen 1 726.Xr ssh-keygen 1
782also offers some basic automated editing for 727also offers some basic automated editing for
@@ -921,7 +866,6 @@ This file is used in exactly the same way as
921but allows host-based authentication without permitting login with 866but allows host-based authentication without permitting login with
922rlogin/rsh. 867rlogin/rsh.
923.Pp 868.Pp
924.It Pa /etc/ssh/ssh_host_key
925.It Pa /etc/ssh/ssh_host_dsa_key 869.It Pa /etc/ssh/ssh_host_dsa_key
926.It Pa /etc/ssh/ssh_host_ecdsa_key 870.It Pa /etc/ssh/ssh_host_ecdsa_key
927.It Pa /etc/ssh/ssh_host_ed25519_key 871.It Pa /etc/ssh/ssh_host_ed25519_key
@@ -933,7 +877,6 @@ Note that
933.Nm 877.Nm
934does not start if these files are group/world-accessible. 878does not start if these files are group/world-accessible.
935.Pp 879.Pp
936.It Pa /etc/ssh/ssh_host_key.pub
937.It Pa /etc/ssh/ssh_host_dsa_key.pub 880.It Pa /etc/ssh/ssh_host_dsa_key.pub
938.It Pa /etc/ssh/ssh_host_ecdsa_key.pub 881.It Pa /etc/ssh/ssh_host_ecdsa_key.pub
939.It Pa /etc/ssh/ssh_host_ed25519_key.pub 882.It Pa /etc/ssh/ssh_host_ed25519_key.pub
diff --git a/sshd.c b/sshd.c
index 868df9e65..8b793480e 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshd.c,v 1.470 2016/05/24 04:43:45 dtucker Exp $ */ 1/* $OpenBSD: sshd.c,v 1.480 2016/12/09 03:04:29 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -91,7 +91,6 @@
91 91
92#include "xmalloc.h" 92#include "xmalloc.h"
93#include "ssh.h" 93#include "ssh.h"
94#include "ssh1.h"
95#include "ssh2.h" 94#include "ssh2.h"
96#include "rsa.h" 95#include "rsa.h"
97#include "sshpty.h" 96#include "sshpty.h"
@@ -119,7 +118,6 @@
119#include "dispatch.h" 118#include "dispatch.h"
120#include "channels.h" 119#include "channels.h"
121#include "session.h" 120#include "session.h"
122#include "monitor_mm.h"
123#include "monitor.h" 121#include "monitor.h"
124#ifdef GSSAPI 122#ifdef GSSAPI
125#include "ssh-gss.h" 123#include "ssh-gss.h"
@@ -140,10 +138,6 @@ int allow_severity;
140int deny_severity; 138int deny_severity;
141#endif /* LIBWRAP */ 139#endif /* LIBWRAP */
142 140
143#ifndef O_NOCTTY
144#define O_NOCTTY 0
145#endif
146
147/* Re-exec fds */ 141/* Re-exec fds */
148#define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) 142#define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1)
149#define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) 143#define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2)
@@ -216,22 +210,12 @@ int have_agent = 0;
216 * not very useful. Currently, memory locking is not implemented. 210 * not very useful. Currently, memory locking is not implemented.
217 */ 211 */
218struct { 212struct {
219 Key *server_key; /* ephemeral server key */
220 Key *ssh1_host_key; /* ssh1 host key */
221 Key **host_keys; /* all private host keys */ 213 Key **host_keys; /* all private host keys */
222 Key **host_pubkeys; /* all public host keys */ 214 Key **host_pubkeys; /* all public host keys */
223 Key **host_certificates; /* all public host certificates */ 215 Key **host_certificates; /* all public host certificates */
224 int have_ssh1_key;
225 int have_ssh2_key; 216 int have_ssh2_key;
226 u_char ssh1_cookie[SSH_SESSION_KEY_LENGTH];
227} sensitive_data; 217} sensitive_data;
228 218
229/*
230 * Flag indicating whether the RSA server key needs to be regenerated.
231 * Is set in the SIGALRM handler and cleared when the key is regenerated.
232 */
233static volatile sig_atomic_t key_do_regen = 0;
234
235/* This is set to true when a signal is received. */ 219/* This is set to true when a signal is received. */
236static volatile sig_atomic_t received_sighup = 0; 220static volatile sig_atomic_t received_sighup = 0;
237static volatile sig_atomic_t received_sigterm = 0; 221static volatile sig_atomic_t received_sigterm = 0;
@@ -270,10 +254,6 @@ struct passwd *privsep_pw = NULL;
270/* Prototypes for various functions defined later in this file. */ 254/* Prototypes for various functions defined later in this file. */
271void destroy_sensitive_data(void); 255void destroy_sensitive_data(void);
272void demote_sensitive_data(void); 256void demote_sensitive_data(void);
273
274#ifdef WITH_SSH1
275static void do_ssh1_kex(void);
276#endif
277static void do_ssh2_kex(void); 257static void do_ssh2_kex(void);
278 258
279/* 259/*
@@ -325,6 +305,8 @@ static void
325sighup_restart(void) 305sighup_restart(void)
326{ 306{
327 logit("Received SIGHUP; restarting."); 307 logit("Received SIGHUP; restarting.");
308 if (options.pid_file != NULL)
309 unlink(options.pid_file);
328 platform_pre_restart(); 310 platform_pre_restart();
329 close_listen_socks(); 311 close_listen_socks();
330 close_startup_pipes(); 312 close_startup_pipes();
@@ -390,64 +372,17 @@ grace_alarm_handler(int sig)
390 ssh_remote_ipaddr(active_state), ssh_remote_port(active_state)); 372 ssh_remote_ipaddr(active_state), ssh_remote_port(active_state));
391} 373}
392 374
393/*
394 * Signal handler for the key regeneration alarm. Note that this
395 * alarm only occurs in the daemon waiting for connections, and it does not
396 * do anything with the private key or random state before forking.
397 * Thus there should be no concurrency control/asynchronous execution
398 * problems.
399 */
400static void
401generate_ephemeral_server_key(void)
402{
403 verbose("Generating %s%d bit RSA key.",
404 sensitive_data.server_key ? "new " : "", options.server_key_bits);
405 if (sensitive_data.server_key != NULL)
406 key_free(sensitive_data.server_key);
407 sensitive_data.server_key = key_generate(KEY_RSA1,
408 options.server_key_bits);
409 verbose("RSA key generation complete.");
410
411 arc4random_buf(sensitive_data.ssh1_cookie, SSH_SESSION_KEY_LENGTH);
412}
413
414/*ARGSUSED*/
415static void
416key_regeneration_alarm(int sig)
417{
418 int save_errno = errno;
419
420 signal(SIGALRM, SIG_DFL);
421 errno = save_errno;
422 key_do_regen = 1;
423}
424
425static void 375static void
426sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) 376sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out)
427{ 377{
428 u_int i; 378 u_int i;
429 int mismatch;
430 int remote_major, remote_minor; 379 int remote_major, remote_minor;
431 int major, minor;
432 char *s, *newline = "\n"; 380 char *s, *newline = "\n";
433 char buf[256]; /* Must not be larger than remote_version. */ 381 char buf[256]; /* Must not be larger than remote_version. */
434 char remote_version[256]; /* Must be at least as big as buf. */ 382 char remote_version[256]; /* Must be at least as big as buf. */
435 383
436 if ((options.protocol & SSH_PROTO_1) &&
437 (options.protocol & SSH_PROTO_2)) {
438 major = PROTOCOL_MAJOR_1;
439 minor = 99;
440 } else if (options.protocol & SSH_PROTO_2) {
441 major = PROTOCOL_MAJOR_2;
442 minor = PROTOCOL_MINOR_2;
443 newline = "\r\n";
444 } else {
445 major = PROTOCOL_MAJOR_1;
446 minor = PROTOCOL_MINOR_1;
447 }
448
449 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s", 384 xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s",
450 major, minor, 385 PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2,
451 options.debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM, 386 options.debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM,
452 *options.version_addendum == '\0' ? "" : " ", 387 *options.version_addendum == '\0' ? "" : " ",
453 options.version_addendum, newline); 388 options.version_addendum, newline);
@@ -527,42 +462,13 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out)
527 "refusing connection", remote_version); 462 "refusing connection", remote_version);
528 } 463 }
529 464
530 mismatch = 0;
531 switch (remote_major) {
532 case 1:
533 if (remote_minor == 99) {
534 if (options.protocol & SSH_PROTO_2)
535 enable_compat20();
536 else
537 mismatch = 1;
538 break;
539 }
540 if (!(options.protocol & SSH_PROTO_1)) {
541 mismatch = 1;
542 break;
543 }
544 if (remote_minor < 3) {
545 packet_disconnect("Your ssh version is too old and "
546 "is no longer supported. Please install a newer version.");
547 } else if (remote_minor == 3) {
548 /* note that this disables agent-forwarding */
549 enable_compat13();
550 }
551 break;
552 case 2:
553 if (options.protocol & SSH_PROTO_2) {
554 enable_compat20();
555 break;
556 }
557 /* FALLTHROUGH */
558 default:
559 mismatch = 1;
560 break;
561 }
562 chop(server_version_string); 465 chop(server_version_string);
563 debug("Local version string %.200s", server_version_string); 466 debug("Local version string %.200s", server_version_string);
564 467
565 if (mismatch) { 468 if (remote_major == 2 ||
469 (remote_major == 1 && remote_minor == 99)) {
470 enable_compat20();
471 } else {
566 s = "Protocol major versions differ.\n"; 472 s = "Protocol major versions differ.\n";
567 (void) atomicio(vwrite, sock_out, s, strlen(s)); 473 (void) atomicio(vwrite, sock_out, s, strlen(s));
568 close(sock_in); 474 close(sock_in);
@@ -581,10 +487,6 @@ destroy_sensitive_data(void)
581{ 487{
582 int i; 488 int i;
583 489
584 if (sensitive_data.server_key) {
585 key_free(sensitive_data.server_key);
586 sensitive_data.server_key = NULL;
587 }
588 for (i = 0; i < options.num_host_key_files; i++) { 490 for (i = 0; i < options.num_host_key_files; i++) {
589 if (sensitive_data.host_keys[i]) { 491 if (sensitive_data.host_keys[i]) {
590 key_free(sensitive_data.host_keys[i]); 492 key_free(sensitive_data.host_keys[i]);
@@ -595,8 +497,6 @@ destroy_sensitive_data(void)
595 sensitive_data.host_certificates[i] = NULL; 497 sensitive_data.host_certificates[i] = NULL;
596 } 498 }
597 } 499 }
598 sensitive_data.ssh1_host_key = NULL;
599 explicit_bzero(sensitive_data.ssh1_cookie, SSH_SESSION_KEY_LENGTH);
600} 500}
601 501
602/* Demote private to public keys for network child */ 502/* Demote private to public keys for network child */
@@ -606,30 +506,40 @@ demote_sensitive_data(void)
606 Key *tmp; 506 Key *tmp;
607 int i; 507 int i;
608 508
609 if (sensitive_data.server_key) {
610 tmp = key_demote(sensitive_data.server_key);
611 key_free(sensitive_data.server_key);
612 sensitive_data.server_key = tmp;
613 }
614
615 for (i = 0; i < options.num_host_key_files; i++) { 509 for (i = 0; i < options.num_host_key_files; i++) {
616 if (sensitive_data.host_keys[i]) { 510 if (sensitive_data.host_keys[i]) {
617 tmp = key_demote(sensitive_data.host_keys[i]); 511 tmp = key_demote(sensitive_data.host_keys[i]);
618 key_free(sensitive_data.host_keys[i]); 512 key_free(sensitive_data.host_keys[i]);
619 sensitive_data.host_keys[i] = tmp; 513 sensitive_data.host_keys[i] = tmp;
620 if (tmp->type == KEY_RSA1)
621 sensitive_data.ssh1_host_key = tmp;
622 } 514 }
623 /* Certs do not need demotion */ 515 /* Certs do not need demotion */
624 } 516 }
517}
625 518
626 /* We do not clear ssh1_host key and cookie. XXX - Okay Niels? */ 519static void
520reseed_prngs(void)
521{
522 u_int32_t rnd[256];
523
524#ifdef WITH_OPENSSL
525 RAND_poll();
526#endif
527 arc4random_stir(); /* noop on recent arc4random() implementations */
528 arc4random_buf(rnd, sizeof(rnd)); /* let arc4random notice PID change */
529
530#ifdef WITH_OPENSSL
531 RAND_seed(rnd, sizeof(rnd));
532 /* give libcrypto a chance to notice the PID change */
533 if ((RAND_bytes((u_char *)rnd, 1)) != 1)
534 fatal("%s: RAND_bytes failed", __func__);
535#endif
536
537 explicit_bzero(rnd, sizeof(rnd));
627} 538}
628 539
629static void 540static void
630privsep_preauth_child(void) 541privsep_preauth_child(void)
631{ 542{
632 u_int32_t rnd[256];
633 gid_t gidset[1]; 543 gid_t gidset[1];
634 544
635 /* Enable challenge-response authentication for privilege separation */ 545 /* Enable challenge-response authentication for privilege separation */
@@ -641,14 +551,7 @@ privsep_preauth_child(void)
641 ssh_gssapi_prepare_supported_oids(); 551 ssh_gssapi_prepare_supported_oids();
642#endif 552#endif
643 553
644 arc4random_stir(); 554 reseed_prngs();
645 arc4random_buf(rnd, sizeof(rnd));
646#ifdef WITH_OPENSSL
647 RAND_seed(rnd, sizeof(rnd));
648 if ((RAND_bytes((u_char *)rnd, 1)) != 1)
649 fatal("%s: RAND_bytes failed", __func__);
650#endif
651 explicit_bzero(rnd, sizeof(rnd));
652 555
653 /* Demote the private keys to public keys. */ 556 /* Demote the private keys to public keys. */
654 demote_sensitive_data(); 557 demote_sensitive_data();
@@ -705,9 +608,6 @@ privsep_preauth(Authctxt *authctxt)
705 ssh_sandbox_parent_preauth(box, pid); 608 ssh_sandbox_parent_preauth(box, pid);
706 monitor_child_preauth(authctxt, pmonitor); 609 monitor_child_preauth(authctxt, pmonitor);
707 610
708 /* Sync memory */
709 monitor_sync(pmonitor);
710
711 /* Wait for the child's exit status */ 611 /* Wait for the child's exit status */
712 while (waitpid(pid, &status, 0) < 0) { 612 while (waitpid(pid, &status, 0) < 0) {
713 if (errno == EINTR) 613 if (errno == EINTR)
@@ -747,12 +647,10 @@ privsep_preauth(Authctxt *authctxt)
747static void 647static void
748privsep_postauth(Authctxt *authctxt) 648privsep_postauth(Authctxt *authctxt)
749{ 649{
750 u_int32_t rnd[256];
751
752#ifdef DISABLE_FD_PASSING 650#ifdef DISABLE_FD_PASSING
753 if (1) { 651 if (1) {
754#else 652#else
755 if (authctxt->pw->pw_uid == 0 || options.use_login) { 653 if (authctxt->pw->pw_uid == 0) {
756#endif 654#endif
757 /* File descriptor passing is broken or root login */ 655 /* File descriptor passing is broken or root login */
758 use_privsep = 0; 656 use_privsep = 0;
@@ -782,14 +680,7 @@ privsep_postauth(Authctxt *authctxt)
782 /* Demote the private keys to public keys. */ 680 /* Demote the private keys to public keys. */
783 demote_sensitive_data(); 681 demote_sensitive_data();
784 682
785 arc4random_stir(); 683 reseed_prngs();
786 arc4random_buf(rnd, sizeof(rnd));
787#ifdef WITH_OPENSSL
788 RAND_seed(rnd, sizeof(rnd));
789 if ((RAND_bytes((u_char *)rnd, 1)) != 1)
790 fatal("%s: RAND_bytes failed", __func__);
791#endif
792 explicit_bzero(rnd, sizeof(rnd));
793 684
794 /* Drop privileges */ 685 /* Drop privileges */
795 do_setusercontext(authctxt->pw, authctxt->role); 686 do_setusercontext(authctxt->pw, authctxt->role);
@@ -819,7 +710,7 @@ list_hostkey_types(void)
819 key = sensitive_data.host_keys[i]; 710 key = sensitive_data.host_keys[i];
820 if (key == NULL) 711 if (key == NULL)
821 key = sensitive_data.host_pubkeys[i]; 712 key = sensitive_data.host_pubkeys[i];
822 if (key == NULL || key->type == KEY_RSA1) 713 if (key == NULL)
823 continue; 714 continue;
824 /* Check that the key is accepted in HostkeyAlgorithms */ 715 /* Check that the key is accepted in HostkeyAlgorithms */
825 if (match_pattern_list(sshkey_ssh_name(key), 716 if (match_pattern_list(sshkey_ssh_name(key),
@@ -968,7 +859,7 @@ notify_hostkeys(struct ssh *ssh)
968 for (i = nkeys = 0; i < options.num_host_key_files; i++) { 859 for (i = nkeys = 0; i < options.num_host_key_files; i++) {
969 key = get_hostkey_public_by_index(i, ssh); 860 key = get_hostkey_public_by_index(i, ssh);
970 if (key == NULL || key->type == KEY_UNSPEC || 861 if (key == NULL || key->type == KEY_UNSPEC ||
971 key->type == KEY_RSA1 || sshkey_is_cert(key)) 862 sshkey_is_cert(key))
972 continue; 863 continue;
973 fp = sshkey_fingerprint(key, options.fingerprint_hash, 864 fp = sshkey_fingerprint(key, options.fingerprint_hash,
974 SSH_FP_DEFAULT); 865 SSH_FP_DEFAULT);
@@ -1034,10 +925,9 @@ usage(void)
1034#endif 925#endif
1035 ); 926 );
1036 fprintf(stderr, 927 fprintf(stderr,
1037"usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]\n" 928"usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]\n"
1038" [-E log_file] [-f config_file] [-g login_grace_time]\n" 929" [-E log_file] [-f config_file] [-g login_grace_time]\n"
1039" [-h host_key_file] [-k key_gen_time] [-o option] [-p port]\n" 930" [-h host_key_file] [-o option] [-p port] [-u len]\n"
1040" [-u len]\n"
1041 ); 931 );
1042 exit(1); 932 exit(1);
1043} 933}
@@ -1054,13 +944,6 @@ send_rexec_state(int fd, struct sshbuf *conf)
1054 /* 944 /*
1055 * Protocol from reexec master to child: 945 * Protocol from reexec master to child:
1056 * string configuration 946 * string configuration
1057 * u_int ephemeral_key_follows
1058 * bignum e (only if ephemeral_key_follows == 1)
1059 * bignum n "
1060 * bignum d "
1061 * bignum iqmp "
1062 * bignum p "
1063 * bignum q "
1064 * string rngseed (only if OpenSSL is not self-seeded) 947 * string rngseed (only if OpenSSL is not self-seeded)
1065 */ 948 */
1066 if ((m = sshbuf_new()) == NULL) 949 if ((m = sshbuf_new()) == NULL)
@@ -1068,28 +951,6 @@ send_rexec_state(int fd, struct sshbuf *conf)
1068 if ((r = sshbuf_put_stringb(m, conf)) != 0) 951 if ((r = sshbuf_put_stringb(m, conf)) != 0)
1069 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 952 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1070 953
1071#ifdef WITH_SSH1
1072 if (sensitive_data.server_key != NULL &&
1073 sensitive_data.server_key->type == KEY_RSA1) {
1074 if ((r = sshbuf_put_u32(m, 1)) != 0 ||
1075 (r = sshbuf_put_bignum1(m,
1076 sensitive_data.server_key->rsa->e)) != 0 ||
1077 (r = sshbuf_put_bignum1(m,
1078 sensitive_data.server_key->rsa->n)) != 0 ||
1079 (r = sshbuf_put_bignum1(m,
1080 sensitive_data.server_key->rsa->d)) != 0 ||
1081 (r = sshbuf_put_bignum1(m,
1082 sensitive_data.server_key->rsa->iqmp)) != 0 ||
1083 (r = sshbuf_put_bignum1(m,
1084 sensitive_data.server_key->rsa->p)) != 0 ||
1085 (r = sshbuf_put_bignum1(m,
1086 sensitive_data.server_key->rsa->q)) != 0)
1087 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1088 } else
1089#endif
1090 if ((r = sshbuf_put_u32(m, 1)) != 0)
1091 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1092
1093#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY) 954#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY)
1094 rexec_send_rng_seed(m); 955 rexec_send_rng_seed(m);
1095#endif 956#endif
@@ -1123,24 +984,6 @@ recv_rexec_state(int fd, Buffer *conf)
1123 buffer_append(conf, cp, len); 984 buffer_append(conf, cp, len);
1124 free(cp); 985 free(cp);
1125 986
1126 if (buffer_get_int(&m)) {
1127#ifdef WITH_SSH1
1128 if (sensitive_data.server_key != NULL)
1129 key_free(sensitive_data.server_key);
1130 sensitive_data.server_key = key_new_private(KEY_RSA1);
1131 buffer_get_bignum(&m, sensitive_data.server_key->rsa->e);
1132 buffer_get_bignum(&m, sensitive_data.server_key->rsa->n);
1133 buffer_get_bignum(&m, sensitive_data.server_key->rsa->d);
1134 buffer_get_bignum(&m, sensitive_data.server_key->rsa->iqmp);
1135 buffer_get_bignum(&m, sensitive_data.server_key->rsa->p);
1136 buffer_get_bignum(&m, sensitive_data.server_key->rsa->q);
1137 if (rsa_generate_additional_parameters(
1138 sensitive_data.server_key->rsa) != 0)
1139 fatal("%s: rsa_generate_additional_parameters "
1140 "error", __func__);
1141#endif
1142 }
1143
1144#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY) 987#if defined(WITH_OPENSSL) && !defined(OPENSSL_PRNG_ONLY)
1145 rexec_recv_rng_seed(&m); 988 rexec_recv_rng_seed(&m);
1146#endif 989#endif
@@ -1264,7 +1107,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1264{ 1107{
1265 fd_set *fdset; 1108 fd_set *fdset;
1266 int i, j, ret, maxfd; 1109 int i, j, ret, maxfd;
1267 int key_used = 0, startups = 0; 1110 int startups = 0;
1268 int startup_p[2] = { -1 , -1 }; 1111 int startup_p[2] = { -1 , -1 };
1269 struct sockaddr_storage from; 1112 struct sockaddr_storage from;
1270 socklen_t fromlen; 1113 socklen_t fromlen;
@@ -1311,11 +1154,6 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1311 unlink(options.pid_file); 1154 unlink(options.pid_file);
1312 exit(received_sigterm == SIGTERM ? 0 : 255); 1155 exit(received_sigterm == SIGTERM ? 0 : 255);
1313 } 1156 }
1314 if (key_used && key_do_regen) {
1315 generate_ephemeral_server_key();
1316 key_used = 0;
1317 key_do_regen = 0;
1318 }
1319 if (ret < 0) 1157 if (ret < 0)
1320 continue; 1158 continue;
1321 1159
@@ -1352,7 +1190,15 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1352 continue; 1190 continue;
1353 } 1191 }
1354 if (drop_connection(startups) == 1) { 1192 if (drop_connection(startups) == 1) {
1355 debug("drop connection #%d", startups); 1193 char *laddr = get_local_ipaddr(*newsock);
1194 char *raddr = get_peer_ipaddr(*newsock);
1195
1196 verbose("drop connection #%d from [%s]:%d "
1197 "on [%s]:%d past MaxStartups", startups,
1198 raddr, get_peer_port(*newsock),
1199 laddr, get_local_port(*newsock));
1200 free(laddr);
1201 free(raddr);
1356 close(*newsock); 1202 close(*newsock);
1357 continue; 1203 continue;
1358 } 1204 }
@@ -1450,19 +1296,6 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1450 close(config_s[0]); 1296 close(config_s[0]);
1451 close(config_s[1]); 1297 close(config_s[1]);
1452 } 1298 }
1453
1454 /*
1455 * Mark that the key has been used (it
1456 * was "given" to the child).
1457 */
1458 if ((options.protocol & SSH_PROTO_1) &&
1459 key_used == 0) {
1460 /* Schedule server key regeneration alarm. */
1461 signal(SIGALRM, key_regeneration_alarm);
1462 alarm(options.key_regeneration_time);
1463 key_used = 1;
1464 }
1465
1466 close(*newsock); 1299 close(*newsock);
1467 1300
1468 /* 1301 /*
@@ -1502,8 +1335,8 @@ check_ip_options(struct ssh *ssh)
1502#ifdef IP_OPTIONS 1335#ifdef IP_OPTIONS
1503 int sock_in = ssh_packet_get_connection_in(ssh); 1336 int sock_in = ssh_packet_get_connection_in(ssh);
1504 struct sockaddr_storage from; 1337 struct sockaddr_storage from;
1505 socklen_t option_size, i, fromlen = sizeof(from);
1506 u_char opts[200]; 1338 u_char opts[200];
1339 socklen_t i, option_size = sizeof(opts), fromlen = sizeof(from);
1507 char text[sizeof(opts) * 3 + 1]; 1340 char text[sizeof(opts) * 3 + 1];
1508 1341
1509 memset(&from, 0, sizeof(from)); 1342 memset(&from, 0, sizeof(from));
@@ -1536,7 +1369,7 @@ main(int ac, char **av)
1536 struct ssh *ssh = NULL; 1369 struct ssh *ssh = NULL;
1537 extern char *optarg; 1370 extern char *optarg;
1538 extern int optind; 1371 extern int optind;
1539 int r, opt, i, j, on = 1; 1372 int r, opt, i, j, on = 1, already_daemon;
1540 int sock_in = -1, sock_out = -1, newsock = -1; 1373 int sock_in = -1, sock_out = -1, newsock = -1;
1541 const char *remote_ip; 1374 const char *remote_ip;
1542 int remote_port; 1375 int remote_port;
@@ -1635,8 +1468,7 @@ main(int ac, char **av)
1635 options.log_level = SYSLOG_LEVEL_QUIET; 1468 options.log_level = SYSLOG_LEVEL_QUIET;
1636 break; 1469 break;
1637 case 'b': 1470 case 'b':
1638 options.server_key_bits = (int)strtonum(optarg, 256, 1471 /* protocol 1, ignored */
1639 32768, NULL);
1640 break; 1472 break;
1641 case 'p': 1473 case 'p':
1642 options.ports_from_cmdline = 1; 1474 options.ports_from_cmdline = 1;
@@ -1657,10 +1489,7 @@ main(int ac, char **av)
1657 } 1489 }
1658 break; 1490 break;
1659 case 'k': 1491 case 'k':
1660 if ((options.key_regeneration_time = convtime(optarg)) == -1) { 1492 /* protocol 1, ignored */
1661 fprintf(stderr, "Invalid key regeneration interval.\n");
1662 exit(1);
1663 }
1664 break; 1493 break;
1665 case 'h': 1494 case 'h':
1666 if (options.num_host_key_files >= MAX_HOSTKEYS) { 1495 if (options.num_host_key_files >= MAX_HOSTKEYS) {
@@ -1742,9 +1571,6 @@ main(int ac, char **av)
1742 drop_cray_privs(); 1571 drop_cray_privs();
1743#endif 1572#endif
1744 1573
1745 sensitive_data.server_key = NULL;
1746 sensitive_data.ssh1_host_key = NULL;
1747 sensitive_data.have_ssh1_key = 0;
1748 sensitive_data.have_ssh2_key = 0; 1574 sensitive_data.have_ssh2_key = 0;
1749 1575
1750 /* 1576 /*
@@ -1797,9 +1623,6 @@ main(int ac, char **av)
1797 * and warns for trivial misconfigurations that could break login. 1623 * and warns for trivial misconfigurations that could break login.
1798 */ 1624 */
1799 if (options.num_auth_methods != 0) { 1625 if (options.num_auth_methods != 0) {
1800 if ((options.protocol & SSH_PROTO_1))
1801 fatal("AuthenticationMethods is not supported with "
1802 "SSH protocol 1");
1803 for (n = 0; n < options.num_auth_methods; n++) { 1626 for (n = 0; n < options.num_auth_methods; n++) {
1804 if (auth2_methods_valid(options.auth_methods[n], 1627 if (auth2_methods_valid(options.auth_methods[n],
1805 1) == 0) 1628 1) == 0)
@@ -1868,8 +1691,7 @@ main(int ac, char **av)
1868 sensitive_data.host_keys[i] = key; 1691 sensitive_data.host_keys[i] = key;
1869 sensitive_data.host_pubkeys[i] = pubkey; 1692 sensitive_data.host_pubkeys[i] = pubkey;
1870 1693
1871 if (key == NULL && pubkey != NULL && pubkey->type != KEY_RSA1 && 1694 if (key == NULL && pubkey != NULL && have_agent) {
1872 have_agent) {
1873 debug("will rely on agent for hostkey %s", 1695 debug("will rely on agent for hostkey %s",
1874 options.host_key_files[i]); 1696 options.host_key_files[i]);
1875 keytype = pubkey->type; 1697 keytype = pubkey->type;
@@ -1884,10 +1706,6 @@ main(int ac, char **av)
1884 } 1706 }
1885 1707
1886 switch (keytype) { 1708 switch (keytype) {
1887 case KEY_RSA1:
1888 sensitive_data.ssh1_host_key = key;
1889 sensitive_data.have_ssh1_key = 1;
1890 break;
1891 case KEY_RSA: 1709 case KEY_RSA:
1892 case KEY_DSA: 1710 case KEY_DSA:
1893 case KEY_ECDSA: 1711 case KEY_ECDSA:
@@ -1900,25 +1718,16 @@ main(int ac, char **av)
1900 SSH_FP_DEFAULT)) == NULL) 1718 SSH_FP_DEFAULT)) == NULL)
1901 fatal("sshkey_fingerprint failed"); 1719 fatal("sshkey_fingerprint failed");
1902 debug("%s host key #%d: %s %s", 1720 debug("%s host key #%d: %s %s",
1903 key ? "private" : "agent", i, keytype == KEY_RSA1 ? 1721 key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp);
1904 sshkey_type(pubkey) : sshkey_ssh_name(pubkey), fp);
1905 free(fp); 1722 free(fp);
1906 } 1723 }
1907 if ((options.protocol & SSH_PROTO_1) && !sensitive_data.have_ssh1_key) {
1908 logit("Disabling protocol version 1. Could not load host key");
1909 options.protocol &= ~SSH_PROTO_1;
1910 }
1911#ifndef GSSAPI 1724#ifndef GSSAPI
1912 /* The GSSAPI key exchange can run without a host key */ 1725 /* The GSSAPI key exchange can run without a host key */
1913 if ((options.protocol & SSH_PROTO_2) && !sensitive_data.have_ssh2_key) { 1726 if (!sensitive_data.have_ssh2_key) {
1914 logit("Disabling protocol version 2. Could not load host key");
1915 options.protocol &= ~SSH_PROTO_2;
1916 }
1917#endif
1918 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) {
1919 logit("sshd: no hostkeys available -- exiting."); 1727 logit("sshd: no hostkeys available -- exiting.");
1920 exit(1); 1728 exit(1);
1921 } 1729 }
1730#endif
1922 1731
1923 /* 1732 /*
1924 * Load certificates. They are stored in an array at identical 1733 * Load certificates. They are stored in an array at identical
@@ -1963,33 +1772,6 @@ main(int ac, char **av)
1963 key_type(key)); 1772 key_type(key));
1964 } 1773 }
1965 1774
1966#ifdef WITH_SSH1
1967 /* Check certain values for sanity. */
1968 if (options.protocol & SSH_PROTO_1) {
1969 if (options.server_key_bits < SSH_RSA_MINIMUM_MODULUS_SIZE ||
1970 options.server_key_bits > OPENSSL_RSA_MAX_MODULUS_BITS) {
1971 fprintf(stderr, "Bad server key size.\n");
1972 exit(1);
1973 }
1974 /*
1975 * Check that server and host key lengths differ sufficiently. This
1976 * is necessary to make double encryption work with rsaref. Oh, I
1977 * hate software patents. I dont know if this can go? Niels
1978 */
1979 if (options.server_key_bits >
1980 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n) -
1981 SSH_KEY_BITS_RESERVED && options.server_key_bits <
1982 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n) +
1983 SSH_KEY_BITS_RESERVED) {
1984 options.server_key_bits =
1985 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n) +
1986 SSH_KEY_BITS_RESERVED;
1987 debug("Forcing server key to %d bits to make it differ from host key.",
1988 options.server_key_bits);
1989 }
1990 }
1991#endif
1992
1993 if (use_privsep) { 1775 if (use_privsep) {
1994 struct stat st; 1776 struct stat st;
1995 1777
@@ -2049,25 +1831,17 @@ main(int ac, char **av)
2049 log_init(__progname, options.log_level, options.log_facility, log_stderr); 1831 log_init(__progname, options.log_level, options.log_facility, log_stderr);
2050 1832
2051 /* 1833 /*
2052 * If not in debugging mode, and not started from inetd, disconnect 1834 * If not in debugging mode, not started from inetd and not already
2053 * from the controlling terminal, and fork. The original process 1835 * daemonized (eg re-exec via SIGHUP), disconnect from the controlling
2054 * exits. 1836 * terminal, and fork. The original process exits.
2055 */ 1837 */
2056 if (!(debug_flag || inetd_flag || no_daemon_flag)) { 1838 already_daemon = daemonized();
2057#ifdef TIOCNOTTY 1839 if (!(debug_flag || inetd_flag || no_daemon_flag || already_daemon)) {
2058 int fd; 1840
2059#endif /* TIOCNOTTY */
2060 if (daemon(0, 0) < 0) 1841 if (daemon(0, 0) < 0)
2061 fatal("daemon() failed: %.200s", strerror(errno)); 1842 fatal("daemon() failed: %.200s", strerror(errno));
2062 1843
2063 /* Disconnect from the controlling tty. */ 1844 disconnect_controlling_tty();
2064#ifdef TIOCNOTTY
2065 fd = open(_PATH_TTY, O_RDWR | O_NOCTTY);
2066 if (fd >= 0) {
2067 (void) ioctl(fd, TIOCNOTTY, NULL);
2068 close(fd);
2069 }
2070#endif /* TIOCNOTTY */
2071 } 1845 }
2072 /* Reinitialize the log (because of the fork above). */ 1846 /* Reinitialize the log (because of the fork above). */
2073 log_init(__progname, options.log_level, options.log_facility, log_stderr); 1847 log_init(__progname, options.log_level, options.log_facility, log_stderr);
@@ -2087,9 +1861,6 @@ main(int ac, char **av)
2087 platform_pre_listen(); 1861 platform_pre_listen();
2088 server_listen(); 1862 server_listen();
2089 1863
2090 if (options.protocol & SSH_PROTO_1)
2091 generate_ephemeral_server_key();
2092
2093 signal(SIGHUP, sighup_handler); 1864 signal(SIGHUP, sighup_handler);
2094 signal(SIGCHLD, main_sigchld_handler); 1865 signal(SIGCHLD, main_sigchld_handler);
2095 signal(SIGTERM, sigterm_handler); 1866 signal(SIGTERM, sigterm_handler);
@@ -2326,11 +2097,6 @@ main(int ac, char **av)
2326 alarm(options.login_grace_time); 2097 alarm(options.login_grace_time);
2327 2098
2328 sshd_exchange_identification(ssh, sock_in, sock_out); 2099 sshd_exchange_identification(ssh, sock_in, sock_out);
2329
2330 /* In inetd mode, generate ephemeral key only for proto 1 connections */
2331 if (!compat20 && inetd_flag && sensitive_data.server_key == NULL)
2332 generate_ephemeral_server_key();
2333
2334 packet_set_nonblocking(); 2100 packet_set_nonblocking();
2335 2101
2336 /* allocate authentication context */ 2102 /* allocate authentication context */
@@ -2348,7 +2114,7 @@ main(int ac, char **av)
2348 if (use_privsep) { 2114 if (use_privsep) {
2349 if (privsep_preauth(authctxt) == 1) 2115 if (privsep_preauth(authctxt) == 1)
2350 goto authenticated; 2116 goto authenticated;
2351 } else if (compat20 && have_agent) { 2117 } else if (have_agent) {
2352 if ((r = ssh_get_authentication_socket(&auth_sock)) != 0) { 2118 if ((r = ssh_get_authentication_socket(&auth_sock)) != 0) {
2353 error("Unable to get agent socket: %s", ssh_err(r)); 2119 error("Unable to get agent socket: %s", ssh_err(r));
2354 have_agent = 0; 2120 have_agent = 0;
@@ -2357,17 +2123,9 @@ main(int ac, char **av)
2357 2123
2358 /* perform the key exchange */ 2124 /* perform the key exchange */
2359 /* authenticate user and start session */ 2125 /* authenticate user and start session */
2360 if (compat20) { 2126 do_ssh2_kex();
2361 do_ssh2_kex(); 2127 do_authentication2(authctxt);
2362 do_authentication2(authctxt); 2128
2363 } else {
2364#ifdef WITH_SSH1
2365 do_ssh1_kex();
2366 do_authentication(authctxt);
2367#else
2368 fatal("ssh1 not supported");
2369#endif
2370 }
2371 /* 2129 /*
2372 * If we use privilege separation, the unprivileged child transfers 2130 * If we use privilege separation, the unprivileged child transfers
2373 * the current keystate and exits 2131 * the current keystate and exits
@@ -2415,16 +2173,13 @@ main(int ac, char **av)
2415 if (use_privsep) { 2173 if (use_privsep) {
2416 privsep_postauth(authctxt); 2174 privsep_postauth(authctxt);
2417 /* the monitor process [priv] will not return */ 2175 /* the monitor process [priv] will not return */
2418 if (!compat20)
2419 destroy_sensitive_data();
2420 } 2176 }
2421 2177
2422 packet_set_timeout(options.client_alive_interval, 2178 packet_set_timeout(options.client_alive_interval,
2423 options.client_alive_count_max); 2179 options.client_alive_count_max);
2424 2180
2425 /* Try to send all our hostkeys to the client */ 2181 /* Try to send all our hostkeys to the client */
2426 if (compat20) 2182 notify_hostkeys(active_state);
2427 notify_hostkeys(active_state);
2428 2183
2429 /* Start session. */ 2184 /* Start session. */
2430 do_authenticated(authctxt); 2185 do_authenticated(authctxt);
@@ -2453,229 +2208,6 @@ main(int ac, char **av)
2453 exit(0); 2208 exit(0);
2454} 2209}
2455 2210
2456#ifdef WITH_SSH1
2457/*
2458 * Decrypt session_key_int using our private server key and private host key
2459 * (key with larger modulus first).
2460 */
2461int
2462ssh1_session_key(BIGNUM *session_key_int)
2463{
2464 struct ssh *ssh = active_state; /* XXX */
2465 int rsafail = 0;
2466
2467 if (BN_cmp(sensitive_data.server_key->rsa->n,
2468 sensitive_data.ssh1_host_key->rsa->n) > 0) {
2469 /* Server key has bigger modulus. */
2470 if (BN_num_bits(sensitive_data.server_key->rsa->n) <
2471 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n) +
2472 SSH_KEY_BITS_RESERVED) {
2473 fatal("do_connection: %s port %d: "
2474 "server_key %d < host_key %d + SSH_KEY_BITS_RESERVED %d",
2475 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
2476 BN_num_bits(sensitive_data.server_key->rsa->n),
2477 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n),
2478 SSH_KEY_BITS_RESERVED);
2479 }
2480 if (rsa_private_decrypt(session_key_int, session_key_int,
2481 sensitive_data.server_key->rsa) != 0)
2482 rsafail++;
2483 if (rsa_private_decrypt(session_key_int, session_key_int,
2484 sensitive_data.ssh1_host_key->rsa) != 0)
2485 rsafail++;
2486 } else {
2487 /* Host key has bigger modulus (or they are equal). */
2488 if (BN_num_bits(sensitive_data.ssh1_host_key->rsa->n) <
2489 BN_num_bits(sensitive_data.server_key->rsa->n) +
2490 SSH_KEY_BITS_RESERVED) {
2491 fatal("do_connection: %s port %d: "
2492 "host_key %d < server_key %d + SSH_KEY_BITS_RESERVED %d",
2493 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
2494 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n),
2495 BN_num_bits(sensitive_data.server_key->rsa->n),
2496 SSH_KEY_BITS_RESERVED);
2497 }
2498 if (rsa_private_decrypt(session_key_int, session_key_int,
2499 sensitive_data.ssh1_host_key->rsa) != 0)
2500 rsafail++;
2501 if (rsa_private_decrypt(session_key_int, session_key_int,
2502 sensitive_data.server_key->rsa) != 0)
2503 rsafail++;
2504 }
2505 return (rsafail);
2506}
2507
2508/*
2509 * SSH1 key exchange
2510 */
2511static void
2512do_ssh1_kex(void)
2513{
2514 struct ssh *ssh = active_state; /* XXX */
2515 int i, len;
2516 int rsafail = 0;
2517 BIGNUM *session_key_int, *fake_key_int, *real_key_int;
2518 u_char session_key[SSH_SESSION_KEY_LENGTH];
2519 u_char fake_key_bytes[4096 / 8];
2520 size_t fake_key_len;
2521 u_char cookie[8];
2522 u_int cipher_type, auth_mask, protocol_flags;
2523
2524 /*
2525 * Generate check bytes that the client must send back in the user
2526 * packet in order for it to be accepted; this is used to defy ip
2527 * spoofing attacks. Note that this only works against somebody
2528 * doing IP spoofing from a remote machine; any machine on the local
2529 * network can still see outgoing packets and catch the random
2530 * cookie. This only affects rhosts authentication, and this is one
2531 * of the reasons why it is inherently insecure.
2532 */
2533 arc4random_buf(cookie, sizeof(cookie));
2534
2535 /*
2536 * Send our public key. We include in the packet 64 bits of random
2537 * data that must be matched in the reply in order to prevent IP
2538 * spoofing.
2539 */
2540 packet_start(SSH_SMSG_PUBLIC_KEY);
2541 for (i = 0; i < 8; i++)
2542 packet_put_char(cookie[i]);
2543
2544 /* Store our public server RSA key. */
2545 packet_put_int(BN_num_bits(sensitive_data.server_key->rsa->n));
2546 packet_put_bignum(sensitive_data.server_key->rsa->e);
2547 packet_put_bignum(sensitive_data.server_key->rsa->n);
2548
2549 /* Store our public host RSA key. */
2550 packet_put_int(BN_num_bits(sensitive_data.ssh1_host_key->rsa->n));
2551 packet_put_bignum(sensitive_data.ssh1_host_key->rsa->e);
2552 packet_put_bignum(sensitive_data.ssh1_host_key->rsa->n);
2553
2554 /* Put protocol flags. */
2555 packet_put_int(SSH_PROTOFLAG_HOST_IN_FWD_OPEN);
2556
2557 /* Declare which ciphers we support. */
2558 packet_put_int(cipher_mask_ssh1(0));
2559
2560 /* Declare supported authentication types. */
2561 auth_mask = 0;
2562 if (options.rhosts_rsa_authentication)
2563 auth_mask |= 1 << SSH_AUTH_RHOSTS_RSA;
2564 if (options.rsa_authentication)
2565 auth_mask |= 1 << SSH_AUTH_RSA;
2566 if (options.challenge_response_authentication == 1)
2567 auth_mask |= 1 << SSH_AUTH_TIS;
2568 if (options.password_authentication)
2569 auth_mask |= 1 << SSH_AUTH_PASSWORD;
2570 packet_put_int(auth_mask);
2571
2572 /* Send the packet and wait for it to be sent. */
2573 packet_send();
2574 packet_write_wait();
2575
2576 debug("Sent %d bit server key and %d bit host key.",
2577 BN_num_bits(sensitive_data.server_key->rsa->n),
2578 BN_num_bits(sensitive_data.ssh1_host_key->rsa->n));
2579
2580 /* Read clients reply (cipher type and session key). */
2581 packet_read_expect(SSH_CMSG_SESSION_KEY);
2582
2583 /* Get cipher type and check whether we accept this. */
2584 cipher_type = packet_get_char();
2585
2586 if (!(cipher_mask_ssh1(0) & (1 << cipher_type)))
2587 packet_disconnect("Warning: client selects unsupported cipher.");
2588
2589 /* Get check bytes from the packet. These must match those we
2590 sent earlier with the public key packet. */
2591 for (i = 0; i < 8; i++)
2592 if (cookie[i] != packet_get_char())
2593 packet_disconnect("IP Spoofing check bytes do not match.");
2594
2595 debug("Encryption type: %.200s", cipher_name(cipher_type));
2596
2597 /* Get the encrypted integer. */
2598 if ((real_key_int = BN_new()) == NULL)
2599 fatal("do_ssh1_kex: BN_new failed");
2600 packet_get_bignum(real_key_int);
2601
2602 protocol_flags = packet_get_int();
2603 packet_set_protocol_flags(protocol_flags);
2604 packet_check_eom();
2605
2606 /* Setup a fake key in case RSA decryption fails */
2607 if ((fake_key_int = BN_new()) == NULL)
2608 fatal("do_ssh1_kex: BN_new failed");
2609 fake_key_len = BN_num_bytes(real_key_int);
2610 if (fake_key_len > sizeof(fake_key_bytes))
2611 fake_key_len = sizeof(fake_key_bytes);
2612 arc4random_buf(fake_key_bytes, fake_key_len);
2613 if (BN_bin2bn(fake_key_bytes, fake_key_len, fake_key_int) == NULL)
2614 fatal("do_ssh1_kex: BN_bin2bn failed");
2615
2616 /* Decrypt real_key_int using host/server keys */
2617 rsafail = PRIVSEP(ssh1_session_key(real_key_int));
2618 /* If decryption failed, use the fake key. Else, the real key. */
2619 if (rsafail)
2620 session_key_int = fake_key_int;
2621 else
2622 session_key_int = real_key_int;
2623
2624 /*
2625 * Extract session key from the decrypted integer. The key is in the
2626 * least significant 256 bits of the integer; the first byte of the
2627 * key is in the highest bits.
2628 */
2629 (void) BN_mask_bits(session_key_int, sizeof(session_key) * 8);
2630 len = BN_num_bytes(session_key_int);
2631 if (len < 0 || (u_int)len > sizeof(session_key)) {
2632 error("%s: bad session key len from %s port %d: "
2633 "session_key_int %d > sizeof(session_key) %lu", __func__,
2634 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh),
2635 len, (u_long)sizeof(session_key));
2636 rsafail++;
2637 } else {
2638 explicit_bzero(session_key, sizeof(session_key));
2639 BN_bn2bin(session_key_int,
2640 session_key + sizeof(session_key) - len);
2641
2642 derive_ssh1_session_id(
2643 sensitive_data.ssh1_host_key->rsa->n,
2644 sensitive_data.server_key->rsa->n,
2645 cookie, session_id);
2646 /*
2647 * Xor the first 16 bytes of the session key with the
2648 * session id.
2649 */
2650 for (i = 0; i < 16; i++)
2651 session_key[i] ^= session_id[i];
2652 }
2653
2654 /* Destroy the private and public keys. No longer. */
2655 destroy_sensitive_data();
2656
2657 if (use_privsep)
2658 mm_ssh1_session_id(session_id);
2659
2660 /* Destroy the decrypted integer. It is no longer needed. */
2661 BN_clear_free(real_key_int);
2662 BN_clear_free(fake_key_int);
2663
2664 /* Set the session key. From this on all communications will be encrypted. */
2665 packet_set_encryption_key(session_key, SSH_SESSION_KEY_LENGTH, cipher_type);
2666
2667 /* Destroy our copy of the session key. It is no longer needed. */
2668 explicit_bzero(session_key, sizeof(session_key));
2669
2670 debug("Received session key; encryption turned on.");
2671
2672 /* Send an acknowledgment packet. Note that this packet is sent encrypted. */
2673 packet_start(SSH_SMSG_SUCCESS);
2674 packet_send();
2675 packet_write_wait();
2676}
2677#endif
2678
2679int 2211int
2680sshd_hostkey_sign(Key *privkey, Key *pubkey, u_char **signature, size_t *slen, 2212sshd_hostkey_sign(Key *privkey, Key *pubkey, u_char **signature, size_t *slen,
2681 const u_char *data, size_t dlen, const char *alg, u_int flag) 2213 const u_char *data, size_t dlen, const char *alg, u_int flag)
@@ -2724,10 +2256,6 @@ do_ssh2_kex(void)
2724 if (options.compression == COMP_NONE) { 2256 if (options.compression == COMP_NONE) {
2725 myproposal[PROPOSAL_COMP_ALGS_CTOS] = 2257 myproposal[PROPOSAL_COMP_ALGS_CTOS] =
2726 myproposal[PROPOSAL_COMP_ALGS_STOC] = "none"; 2258 myproposal[PROPOSAL_COMP_ALGS_STOC] = "none";
2727 } else if (options.compression == COMP_DELAYED) {
2728 myproposal[PROPOSAL_COMP_ALGS_CTOS] =
2729 myproposal[PROPOSAL_COMP_ALGS_STOC] =
2730 "none,zlib@openssh.com";
2731 } 2259 }
2732 2260
2733 if (options.rekey_limit || options.rekey_interval) 2261 if (options.rekey_limit || options.rekey_interval)
diff --git a/sshd_config b/sshd_config
index ec8ff8f19..c0b84f8ed 100644
--- a/sshd_config
+++ b/sshd_config
@@ -1,4 +1,4 @@
1# $OpenBSD: sshd_config,v 1.99 2016/07/11 03:19:44 tedu Exp $ 1# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
2 2
3# This is the sshd server system-wide configuration file. See 3# This is the sshd server system-wide configuration file. See
4# sshd_config(5) for more information. 4# sshd_config(5) for more information.
@@ -15,21 +15,11 @@
15#ListenAddress 0.0.0.0 15#ListenAddress 0.0.0.0
16#ListenAddress :: 16#ListenAddress ::
17 17
18# The default requires explicit activation of protocol 1
19#Protocol 2
20
21# HostKey for protocol version 1
22#HostKey /etc/ssh/ssh_host_key
23# HostKeys for protocol version 2
24#HostKey /etc/ssh/ssh_host_rsa_key 18#HostKey /etc/ssh/ssh_host_rsa_key
25#HostKey /etc/ssh/ssh_host_dsa_key 19#HostKey /etc/ssh/ssh_host_dsa_key
26#HostKey /etc/ssh/ssh_host_ecdsa_key 20#HostKey /etc/ssh/ssh_host_ecdsa_key
27#HostKey /etc/ssh/ssh_host_ed25519_key 21#HostKey /etc/ssh/ssh_host_ed25519_key
28 22
29# Lifetime and size of ephemeral version 1 server key
30#KeyRegenerationInterval 1h
31#ServerKeyBits 1024
32
33# Ciphers and keying 23# Ciphers and keying
34#RekeyLimit default none 24#RekeyLimit default none
35 25
@@ -45,7 +35,6 @@
45#MaxAuthTries 6 35#MaxAuthTries 6
46#MaxSessions 10 36#MaxSessions 10
47 37
48#RSAAuthentication yes
49#PubkeyAuthentication yes 38#PubkeyAuthentication yes
50 39
51# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 40# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
@@ -58,11 +47,9 @@ AuthorizedKeysFile .ssh/authorized_keys
58#AuthorizedKeysCommandUser nobody 47#AuthorizedKeysCommandUser nobody
59 48
60# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts 49# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
61#RhostsRSAAuthentication no
62# similar for protocol version 2
63#HostbasedAuthentication no 50#HostbasedAuthentication no
64# Change to yes if you don't trust ~/.ssh/known_hosts for 51# Change to yes if you don't trust ~/.ssh/known_hosts for
65# RhostsRSAAuthentication and HostbasedAuthentication 52# HostbasedAuthentication
66#IgnoreUserKnownHosts no 53#IgnoreUserKnownHosts no
67# Don't read the user's ~/.rhosts and ~/.shosts files 54# Don't read the user's ~/.rhosts and ~/.shosts files
68#IgnoreRhosts yes 55#IgnoreRhosts yes
diff --git a/sshd_config.0 b/sshd_config.0
index 85379dca5..022c05226 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -32,12 +32,12 @@ DESCRIPTION
32 32
33 AddressFamily 33 AddressFamily
34 Specifies which address family should be used by sshd(8). Valid 34 Specifies which address family should be used by sshd(8). Valid
35 arguments are M-bM-^@M-^\anyM-bM-^@M-^], M-bM-^@M-^\inetM-bM-^@M-^] (use IPv4 only), or M-bM-^@M-^\inet6M-bM-^@M-^] (use IPv6 35 arguments are any (the default), inet (use IPv4 only), or inet6
36 only). The default is M-bM-^@M-^\anyM-bM-^@M-^]. 36 (use IPv6 only).
37 37
38 AllowAgentForwarding 38 AllowAgentForwarding
39 Specifies whether ssh-agent(1) forwarding is permitted. The 39 Specifies whether ssh-agent(1) forwarding is permitted. The
40 default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that disabling agent forwarding does not 40 default is yes. Note that disabling agent forwarding does not
41 improve security unless users are also denied shell access, as 41 improve security unless users are also denied shell access, as
42 they can always install their own forwarders. 42 they can always install their own forwarders.
43 43
@@ -53,25 +53,24 @@ DESCRIPTION
53 53
54 See PATTERNS in ssh_config(5) for more information on patterns. 54 See PATTERNS in ssh_config(5) for more information on patterns.
55 55
56 AllowTcpForwarding
57 Specifies whether TCP forwarding is permitted. The available
58 options are M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\allM-bM-^@M-^] to allow TCP forwarding, M-bM-^@M-^\noM-bM-^@M-^] to
59 prevent all TCP forwarding, M-bM-^@M-^\localM-bM-^@M-^] to allow local (from the
60 perspective of ssh(1)) forwarding only or M-bM-^@M-^\remoteM-bM-^@M-^] to allow
61 remote forwarding only. The default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that
62 disabling TCP forwarding does not improve security unless users
63 are also denied shell access, as they can always install their
64 own forwarders.
65
66 AllowStreamLocalForwarding 56 AllowStreamLocalForwarding
67 Specifies whether StreamLocal (Unix-domain socket) forwarding is 57 Specifies whether StreamLocal (Unix-domain socket) forwarding is
68 permitted. The available options are M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\allM-bM-^@M-^] to allow 58 permitted. The available options are yes (the default) or all to
69 StreamLocal forwarding, M-bM-^@M-^\noM-bM-^@M-^] to prevent all StreamLocal 59 allow StreamLocal forwarding, no to prevent all StreamLocal
70 forwarding, M-bM-^@M-^\localM-bM-^@M-^] to allow local (from the perspective of 60 forwarding, local to allow local (from the perspective of ssh(1))
71 ssh(1)) forwarding only or M-bM-^@M-^\remoteM-bM-^@M-^] to allow remote forwarding 61 forwarding only or remote to allow remote forwarding only. Note
72 only. The default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that disabling StreamLocal 62 that disabling StreamLocal forwarding does not improve security
73 forwarding does not improve security unless users are also denied 63 unless users are also denied shell access, as they can always
74 shell access, as they can always install their own forwarders. 64 install their own forwarders.
65
66 AllowTcpForwarding
67 Specifies whether TCP forwarding is permitted. The available
68 options are yes (the default) or all to allow TCP forwarding, no
69 to prevent all TCP forwarding, local to allow local (from the
70 perspective of ssh(1)) forwarding only or remote to allow remote
71 forwarding only. Note that disabling TCP forwarding does not
72 improve security unless users are also denied shell access, as
73 they can always install their own forwarders.
75 74
76 AllowUsers 75 AllowUsers
77 This keyword can be followed by a list of user name patterns, 76 This keyword can be followed by a list of user name patterns,
@@ -92,53 +91,42 @@ DESCRIPTION
92 Specifies the authentication methods that must be successfully 91 Specifies the authentication methods that must be successfully
93 completed for a user to be granted access. This option must be 92 completed for a user to be granted access. This option must be
94 followed by one or more comma-separated lists of authentication 93 followed by one or more comma-separated lists of authentication
95 method names, or by the single string M-bM-^@M-^\anyM-bM-^@M-^] to indicate the 94 method names, or by the single string any to indicate the default
96 default behaviour of accepting any single authentication method. 95 behaviour of accepting any single authentication method. If the
97 if the default is overridden, then successful authentication 96 default is overridden, then successful authentication requires
98 requires completion of every method in at least one of these 97 completion of every method in at least one of these lists.
99 lists. 98
100 99 For example, "publickey,password publickey,keyboard-interactive"
101 For example, an argument of M-bM-^@M-^\publickey,password 100 would require the user to complete public key authentication,
102 publickey,keyboard-interactiveM-bM-^@M-^] would require the user to 101 followed by either password or keyboard interactive
103 complete public key authentication, followed by either password 102 authentication. Only methods that are next in one or more lists
104 or keyboard interactive authentication. Only methods that are 103 are offered at each stage, so for this example it would not be
105 next in one or more lists are offered at each stage, so for this 104 possible to attempt password or keyboard-interactive
106 example, it would not be possible to attempt password or 105 authentication before public key.
107 keyboard-interactive authentication before public key.
108 106
109 For keyboard interactive authentication it is also possible to 107 For keyboard interactive authentication it is also possible to
110 restrict authentication to a specific device by appending a colon 108 restrict authentication to a specific device by appending a colon
111 followed by the device identifier M-bM-^@M-^\bsdauthM-bM-^@M-^], M-bM-^@M-^\pamM-bM-^@M-^], or M-bM-^@M-^\skeyM-bM-^@M-^], 109 followed by the device identifier bsdauth, pam, or skey,
112 depending on the server configuration. For example, 110 depending on the server configuration. For example,
113 M-bM-^@M-^\keyboard-interactive:bsdauthM-bM-^@M-^] would restrict keyboard 111 "keyboard-interactive:bsdauth" would restrict keyboard
114 interactive authentication to the M-bM-^@M-^\bsdauthM-bM-^@M-^] device. 112 interactive authentication to the bsdauth device.
115 113
116 If the M-bM-^@M-^\publickeyM-bM-^@M-^] method is listed more than once, sshd(8) 114 If the publickey method is listed more than once, sshd(8)
117 verifies that keys that have been used successfully are not 115 verifies that keys that have been used successfully are not
118 reused for subsequent authentications. For example, an 116 reused for subsequent authentications. For example,
119 AuthenticationMethods of M-bM-^@M-^\publickey,publickeyM-bM-^@M-^] will require 117 "publickey,publickey" requires successful authentication using
120 successful authentication using two different public keys. 118 two different public keys.
121 119
122 This option will yield a fatal error if enabled if protocol 1 is 120 Note that each authentication method listed should also be
123 also enabled. Note that each authentication method listed should 121 explicitly enabled in the configuration.
124 also be explicitly enabled in the configuration. The default
125 M-bM-^@M-^\anyM-bM-^@M-^] is not to require multiple authentication; successful
126 completion of a single authentication method is sufficient.
127 122
128 AuthorizedKeysCommand 123 AuthorizedKeysCommand
129 Specifies a program to be used to look up the user's public keys. 124 Specifies a program to be used to look up the user's public keys.
130 The program must be owned by root, not writable by group or 125 The program must be owned by root, not writable by group or
131 others and specified by an absolute path. 126 others and specified by an absolute path. Arguments to
132 127 AuthorizedKeysCommand accept the tokens described in the TOKENS
133 Arguments to AuthorizedKeysCommand may be provided using the 128 section. If no arguments are specified then the username of the
134 following tokens, which will be expanded at runtime: %% is 129 target user is used.
135 replaced by a literal '%', %u is replaced by the username being
136 authenticated, %h is replaced by the home directory of the user
137 being authenticated, %t is replaced with the key type offered for
138 authentication, %f is replaced with the fingerprint of the key,
139 and %k is replaced with the key being offered for authentication.
140 If no arguments are specified then the username of the target
141 user will be supplied.
142 130
143 The program should produce on standard output zero or more lines 131 The program should produce on standard output zero or more lines
144 of authorized_keys output (see AUTHORIZED_KEYS in sshd(8)). If a 132 of authorized_keys output (see AUTHORIZED_KEYS in sshd(8)). If a
@@ -155,31 +143,24 @@ DESCRIPTION
155 is not, then sshd(8) will refuse to start. 143 is not, then sshd(8) will refuse to start.
156 144
157 AuthorizedKeysFile 145 AuthorizedKeysFile
158 Specifies the file that contains the public keys that can be used 146 Specifies the file that contains the public keys used for user
159 for user authentication. The format is described in the 147 authentication. The format is described in the AUTHORIZED_KEYS
160 AUTHORIZED_KEYS FILE FORMAT section of sshd(8). 148 FILE FORMAT section of sshd(8). Arguments to AuthorizedKeysFile
161 AuthorizedKeysFile may contain tokens of the form %T which are 149 accept the tokens described in the TOKENS section. After
162 substituted during connection setup. The following tokens are 150 expansion, AuthorizedKeysFile is taken to be an absolute path or
163 defined: %% is replaced by a literal '%', %h is replaced by the 151 one relative to the user's home directory. Multiple files may be
164 home directory of the user being authenticated, and %u is
165 replaced by the username of that user. After expansion,
166 AuthorizedKeysFile is taken to be an absolute path or one
167 relative to the user's home directory. Multiple files may be
168 listed, separated by whitespace. Alternately this option may be 152 listed, separated by whitespace. Alternately this option may be
169 set to M-bM-^@M-^\noneM-bM-^@M-^] to skip checking for user keys in files. The 153 set to none to skip checking for user keys in files. The default
170 default is M-bM-^@M-^\.ssh/authorized_keys .ssh/authorized_keys2M-bM-^@M-^]. 154 is ".ssh/authorized_keys .ssh/authorized_keys2".
171 155
172 AuthorizedPrincipalsCommand 156 AuthorizedPrincipalsCommand
173 Specifies a program to be used to generate the list of allowed 157 Specifies a program to be used to generate the list of allowed
174 certificate principals as per AuthorizedPrincipalsFile. The 158 certificate principals as per AuthorizedPrincipalsFile. The
175 program must be owned by root, not writable by group or others 159 program must be owned by root, not writable by group or others
176 and specified by an absolute path. 160 and specified by an absolute path. Arguments to
177 161 AuthorizedPrincipalsCommand accept the tokens described in the
178 Arguments to AuthorizedPrincipalsCommand may be provided using 162 TOKENS section. If no arguments are specified then the username
179 the following tokens, which will be expanded at runtime: %% is 163 of the target user is used.
180 replaced by a literal '%', %u is replaced by the username being
181 authenticated and %h is replaced by the home directory of the
182 user being authenticated.
183 164
184 The program should produce on standard output zero or more lines 165 The program should produce on standard output zero or more lines
185 of AuthorizedPrincipalsFile output. If either 166 of AuthorizedPrincipalsFile output. If either
@@ -205,31 +186,27 @@ DESCRIPTION
205 options (as described in AUTHORIZED_KEYS FILE FORMAT in sshd(8)). 186 options (as described in AUTHORIZED_KEYS FILE FORMAT in sshd(8)).
206 Empty lines and comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are ignored. 187 Empty lines and comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are ignored.
207 188
208 AuthorizedPrincipalsFile may contain tokens of the form %T which 189 Arguments to AuthorizedPrincipalsFile accept the tokens described
209 are substituted during connection setup. The following tokens 190 in the TOKENS section. After expansion, AuthorizedPrincipalsFile
210 are defined: %% is replaced by a literal '%', %h is replaced by 191 is taken to be an absolute path or one relative to the user's
211 the home directory of the user being authenticated, and %u is 192 home directory. The default is none, i.e. not to use a
212 replaced by the username of that user. After expansion, 193 principals file M-bM-^@M-^S in this case, the username of the user must
213 AuthorizedPrincipalsFile is taken to be an absolute path or one 194 appear in a certificate's principals list for it to be accepted.
214 relative to the user's home directory. 195
215 196 Note that AuthorizedPrincipalsFile is only used when
216 The default is M-bM-^@M-^\noneM-bM-^@M-^], i.e. not to use a principals file M-bM-^@M-^S in 197 authentication proceeds using a CA listed in TrustedUserCAKeys
217 this case, the username of the user must appear in a 198 and is not consulted for certification authorities trusted via
218 certificate's principals list for it to be accepted. Note that
219 AuthorizedPrincipalsFile is only used when authentication
220 proceeds using a CA listed in TrustedUserCAKeys and is not
221 consulted for certification authorities trusted via
222 ~/.ssh/authorized_keys, though the principals= key option offers 199 ~/.ssh/authorized_keys, though the principals= key option offers
223 a similar facility (see sshd(8) for details). 200 a similar facility (see sshd(8) for details).
224 201
225 Banner The contents of the specified file are sent to the remote user 202 Banner The contents of the specified file are sent to the remote user
226 before authentication is allowed. If the argument is M-bM-^@M-^\noneM-bM-^@M-^] then 203 before authentication is allowed. If the argument is none then
227 no banner is displayed. By default, no banner is displayed. 204 no banner is displayed. By default, no banner is displayed.
228 205
229 ChallengeResponseAuthentication 206 ChallengeResponseAuthentication
230 Specifies whether challenge-response authentication is allowed 207 Specifies whether challenge-response authentication is allowed
231 (e.g. via PAM or through authentication styles supported in 208 (e.g. via PAM or through authentication styles supported in
232 login.conf(5)) The default is M-bM-^@M-^\yesM-bM-^@M-^]. 209 login.conf(5)) The default is yes.
233 210
234 ChrootDirectory 211 ChrootDirectory
235 Specifies the pathname of a directory to chroot(2) to after 212 Specifies the pathname of a directory to chroot(2) to after
@@ -237,31 +214,25 @@ DESCRIPTION
237 components of the pathname are root-owned directories which are 214 components of the pathname are root-owned directories which are
238 not writable by any other user or group. After the chroot, 215 not writable by any other user or group. After the chroot,
239 sshd(8) changes the working directory to the user's home 216 sshd(8) changes the working directory to the user's home
240 directory. 217 directory. Arguments to ChrootDirectory accept the tokens
241 218 described in the TOKENS section.
242 The pathname may contain the following tokens that are expanded
243 at runtime once the connecting user has been authenticated: %% is
244 replaced by a literal '%', %h is replaced by the home directory
245 of the user being authenticated, and %u is replaced by the
246 username of that user.
247 219
248 The ChrootDirectory must contain the necessary files and 220 The ChrootDirectory must contain the necessary files and
249 directories to support the user's session. For an interactive 221 directories to support the user's session. For an interactive
250 session this requires at least a shell, typically sh(1), and 222 session this requires at least a shell, typically sh(1), and
251 basic /dev nodes such as null(4), zero(4), stdin(4), stdout(4), 223 basic /dev nodes such as null(4), zero(4), stdin(4), stdout(4),
252 stderr(4), and tty(4) devices. For file transfer sessions using 224 stderr(4), and tty(4) devices. For file transfer sessions using
253 M-bM-^@M-^\sftpM-bM-^@M-^], no additional configuration of the environment is 225 SFTP no additional configuration of the environment is necessary
254 necessary if the in-process sftp server is used, though sessions 226 if the in-process sftp-server is used, though sessions which use
255 which use logging may require /dev/log inside the chroot 227 logging may require /dev/log inside the chroot directory on some
256 directory on some operating systems (see sftp-server(8) for 228 operating systems (see sftp-server(8) for details).
257 details).
258 229
259 For safety, it is very important that the directory hierarchy be 230 For safety, it is very important that the directory hierarchy be
260 prevented from modification by other processes on the system 231 prevented from modification by other processes on the system
261 (especially those outside the jail). Misconfiguration can lead 232 (especially those outside the jail). Misconfiguration can lead
262 to unsafe environments which sshd(8) cannot detect. 233 to unsafe environments which sshd(8) cannot detect.
263 234
264 The default is M-bM-^@M-^\noneM-bM-^@M-^], indicating not to chroot(2). 235 The default is none, indicating not to chroot(2).
265 236
266 Ciphers 237 Ciphers
267 Specifies the ciphers allowed. Multiple ciphers must be comma- 238 Specifies the ciphers allowed. Multiple ciphers must be comma-
@@ -293,26 +264,25 @@ DESCRIPTION
293 aes128-ctr,aes192-ctr,aes256-ctr, 264 aes128-ctr,aes192-ctr,aes256-ctr,
294 aes128-gcm@openssh.com,aes256-gcm@openssh.com 265 aes128-gcm@openssh.com,aes256-gcm@openssh.com
295 266
296 The list of available ciphers may also be obtained using the -Q 267 The list of available ciphers may also be obtained using "ssh -Q
297 option of ssh(1) with an argument of M-bM-^@M-^\cipherM-bM-^@M-^]. 268 cipher".
298 269
299 ClientAliveCountMax 270 ClientAliveCountMax
300 Sets the number of client alive messages (see below) which may be 271 Sets the number of client alive messages which may be sent
301 sent without sshd(8) receiving any messages back from the client. 272 without sshd(8) receiving any messages back from the client. If
302 If this threshold is reached while client alive messages are 273 this threshold is reached while client alive messages are being
303 being sent, sshd will disconnect the client, terminating the 274 sent, sshd will disconnect the client, terminating the session.
304 session. It is important to note that the use of client alive 275 It is important to note that the use of client alive messages is
305 messages is very different from TCPKeepAlive (below). The client 276 very different from TCPKeepAlive. The client alive messages are
306 alive messages are sent through the encrypted channel and 277 sent through the encrypted channel and therefore will not be
307 therefore will not be spoofable. The TCP keepalive option 278 spoofable. The TCP keepalive option enabled by TCPKeepAlive is
308 enabled by TCPKeepAlive is spoofable. The client alive mechanism 279 spoofable. The client alive mechanism is valuable when the
309 is valuable when the client or server depend on knowing when a 280 client or server depend on knowing when a connection has become
310 connection has become inactive. 281 inactive.
311 282
312 The default value is 3. If ClientAliveInterval (see below) is 283 The default value is 3. If ClientAliveInterval is set to 15, and
313 set to 15, and ClientAliveCountMax is left at the default, 284 ClientAliveCountMax is left at the default, unresponsive SSH
314 unresponsive SSH clients will be disconnected after approximately 285 clients will be disconnected after approximately 45 seconds.
315 45 seconds.
316 286
317 ClientAliveInterval 287 ClientAliveInterval
318 Sets a timeout interval in seconds after which if no data has 288 Sets a timeout interval in seconds after which if no data has
@@ -322,9 +292,9 @@ DESCRIPTION
322 not be sent to the client. 292 not be sent to the client.
323 293
324 Compression 294 Compression
325 Specifies whether compression is allowed, or delayed until the 295 Specifies whether compression is enabled after the user has
326 user has authenticated successfully. The argument must be M-bM-^@M-^\yesM-bM-^@M-^], 296 authenticated successfully. The argument must be yes, delayed (a
327 M-bM-^@M-^\delayedM-bM-^@M-^], or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\delayedM-bM-^@M-^]. 297 legacy synonym for yes) or no. The default is yes.
328 298
329 DenyGroups 299 DenyGroups
330 This keyword can be followed by a list of group name patterns, 300 This keyword can be followed by a list of group name patterns,
@@ -352,9 +322,14 @@ DESCRIPTION
352 322
353 See PATTERNS in ssh_config(5) for more information on patterns. 323 See PATTERNS in ssh_config(5) for more information on patterns.
354 324
325 DisableForwarding
326 Disables all forwarding features, including X11, ssh-agent(1),
327 TCP and StreamLocal. This option overrides all other forwarding-
328 related options and may simplify restricted configurations.
329
355 FingerprintHash 330 FingerprintHash
356 Specifies the hash algorithm used when logging key fingerprints. 331 Specifies the hash algorithm used when logging key fingerprints.
357 Valid options are: M-bM-^@M-^\md5M-bM-^@M-^] and M-bM-^@M-^\sha256M-bM-^@M-^]. The default is M-bM-^@M-^\sha256M-bM-^@M-^]. 332 Valid options are: md5 and sha256. The default is sha256.
358 333
359 ForceCommand 334 ForceCommand
360 Forces the execution of the command specified by ForceCommand, 335 Forces the execution of the command specified by ForceCommand,
@@ -364,9 +339,9 @@ DESCRIPTION
364 execution. It is most useful inside a Match block. The command 339 execution. It is most useful inside a Match block. The command
365 originally supplied by the client is available in the 340 originally supplied by the client is available in the
366 SSH_ORIGINAL_COMMAND environment variable. Specifying a command 341 SSH_ORIGINAL_COMMAND environment variable. Specifying a command
367 of M-bM-^@M-^\internal-sftpM-bM-^@M-^] will force the use of an in-process sftp 342 of internal-sftp will force the use of an in-process SFTP server
368 server that requires no support files when used with 343 that requires no support files when used with ChrootDirectory.
369 ChrootDirectory. The default is M-bM-^@M-^\noneM-bM-^@M-^]. 344 The default is none.
370 345
371 GatewayPorts 346 GatewayPorts
372 Specifies whether remote hosts are allowed to connect to ports 347 Specifies whether remote hosts are allowed to connect to ports
@@ -375,28 +350,28 @@ DESCRIPTION
375 hosts from connecting to forwarded ports. GatewayPorts can be 350 hosts from connecting to forwarded ports. GatewayPorts can be
376 used to specify that sshd should allow remote port forwardings to 351 used to specify that sshd should allow remote port forwardings to
377 bind to non-loopback addresses, thus allowing other hosts to 352 bind to non-loopback addresses, thus allowing other hosts to
378 connect. The argument may be M-bM-^@M-^\noM-bM-^@M-^] to force remote port 353 connect. The argument may be no to force remote port forwardings
379 forwardings to be available to the local host only, M-bM-^@M-^\yesM-bM-^@M-^] to 354 to be available to the local host only, yes to force remote port
380 force remote port forwardings to bind to the wildcard address, or 355 forwardings to bind to the wildcard address, or clientspecified
381 M-bM-^@M-^\clientspecifiedM-bM-^@M-^] to allow the client to select the address to 356 to allow the client to select the address to which the forwarding
382 which the forwarding is bound. The default is M-bM-^@M-^\noM-bM-^@M-^]. 357 is bound. The default is no.
383 358
384 GSSAPIAuthentication 359 GSSAPIAuthentication
385 Specifies whether user authentication based on GSSAPI is allowed. 360 Specifies whether user authentication based on GSSAPI is allowed.
386 The default is M-bM-^@M-^\noM-bM-^@M-^]. 361 The default is no.
387 362
388 GSSAPICleanupCredentials 363 GSSAPICleanupCredentials
389 Specifies whether to automatically destroy the user's credentials 364 Specifies whether to automatically destroy the user's credentials
390 cache on logout. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 365 cache on logout. The default is yes.
391 366
392 GSSAPIStrictAcceptorCheck 367 GSSAPIStrictAcceptorCheck
393 Determines whether to be strict about the identity of the GSSAPI 368 Determines whether to be strict about the identity of the GSSAPI
394 acceptor a client authenticates against. If set to M-bM-^@M-^\yesM-bM-^@M-^] then 369 acceptor a client authenticates against. If set to yes then the
395 the client must authenticate against the host service on the 370 client must authenticate against the host service on the current
396 current hostname. If set to M-bM-^@M-^\noM-bM-^@M-^] then the client may 371 hostname. If set to no then the client may authenticate against
397 authenticate against any service key stored in the machine's 372 any service key stored in the machine's default store. This
398 default store. This facility is provided to assist with 373 facility is provided to assist with operation on multi homed
399 operation on multi homed machines. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 374 machines. The default is yes.
400 375
401 HostbasedAcceptedKeyTypes 376 HostbasedAcceptedKeyTypes
402 Specifies the key types that will be accepted for hostbased 377 Specifies the key types that will be accepted for hostbased
@@ -413,21 +388,22 @@ DESCRIPTION
413 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 388 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
414 ssh-ed25519,ssh-rsa 389 ssh-ed25519,ssh-rsa
415 390
416 The -Q option of ssh(1) may be used to list supported key types. 391 The list of available key types may also be obtained using "ssh
392 -Q key".
417 393
418 HostbasedAuthentication 394 HostbasedAuthentication
419 Specifies whether rhosts or /etc/hosts.equiv authentication 395 Specifies whether rhosts or /etc/hosts.equiv authentication
420 together with successful public key client host authentication is 396 together with successful public key client host authentication is
421 allowed (host-based authentication). The default is M-bM-^@M-^\noM-bM-^@M-^]. 397 allowed (host-based authentication). The default is no.
422 398
423 HostbasedUsesNameFromPacketOnly 399 HostbasedUsesNameFromPacketOnly
424 Specifies whether or not the server will attempt to perform a 400 Specifies whether or not the server will attempt to perform a
425 reverse name lookup when matching the name in the ~/.shosts, 401 reverse name lookup when matching the name in the ~/.shosts,
426 ~/.rhosts, and /etc/hosts.equiv files during 402 ~/.rhosts, and /etc/hosts.equiv files during
427 HostbasedAuthentication. A setting of M-bM-^@M-^\yesM-bM-^@M-^] means that sshd(8) 403 HostbasedAuthentication. A setting of yes means that sshd(8)
428 uses the name supplied by the client rather than attempting to 404 uses the name supplied by the client rather than attempting to
429 resolve the name from the TCP connection itself. The default is 405 resolve the name from the TCP connection itself. The default is
430 M-bM-^@M-^\noM-bM-^@M-^]. 406 no.
431 407
432 HostCertificate 408 HostCertificate
433 Specifies a file containing a public host certificate. The 409 Specifies a file containing a public host certificate. The
@@ -437,25 +413,23 @@ DESCRIPTION
437 413
438 HostKey 414 HostKey
439 Specifies a file containing a private host key used by SSH. The 415 Specifies a file containing a private host key used by SSH. The
440 default is /etc/ssh/ssh_host_key for protocol version 1, and 416 defaults are /etc/ssh/ssh_host_dsa_key,
441 /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key, 417 /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key and
442 /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key for 418 /etc/ssh/ssh_host_rsa_key.
443 protocol version 2.
444 419
445 Note that sshd(8) will refuse to use a file if it is group/world- 420 Note that sshd(8) will refuse to use a file if it is group/world-
446 accessible and that the HostKeyAlgorithms option restricts which 421 accessible and that the HostKeyAlgorithms option restricts which
447 of the keys are actually used by sshd(8). 422 of the keys are actually used by sshd(8).
448 423
449 It is possible to have multiple host key files. M-bM-^@M-^\rsa1M-bM-^@M-^] keys are 424 It is possible to have multiple host key files. It is also
450 used for version 1 and M-bM-^@M-^\dsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^] or M-bM-^@M-^\rsaM-bM-^@M-^] are 425 possible to specify public host key files instead. In this case
451 used for version 2 of the SSH protocol. It is also possible to 426 operations on the private key will be delegated to an
452 specify public host key files instead. In this case operations 427 ssh-agent(1).
453 on the private key will be delegated to an ssh-agent(1).
454 428
455 HostKeyAgent 429 HostKeyAgent
456 Identifies the UNIX-domain socket used to communicate with an 430 Identifies the UNIX-domain socket used to communicate with an
457 agent that has access to the private host keys. If the string 431 agent that has access to the private host keys. If the string
458 M-bM-^@M-^\SSH_AUTH_SOCKM-bM-^@M-^] is specified, the location of the socket will be 432 "SSH_AUTH_SOCK" is specified, the location of the socket will be
459 read from the SSH_AUTH_SOCK environment variable. 433 read from the SSH_AUTH_SOCK environment variable.
460 434
461 HostKeyAlgorithms 435 HostKeyAlgorithms
@@ -470,60 +444,59 @@ DESCRIPTION
470 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 444 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
471 ssh-ed25519,ssh-rsa 445 ssh-ed25519,ssh-rsa
472 446
473 The list of available key types may also be obtained using the -Q 447 The list of available key types may also be obtained using "ssh
474 option of ssh(1) with an argument of M-bM-^@M-^\keyM-bM-^@M-^]. 448 -Q key".
475 449
476 IgnoreRhosts 450 IgnoreRhosts
477 Specifies that .rhosts and .shosts files will not be used in 451 Specifies that .rhosts and .shosts files will not be used in
478 RhostsRSAAuthentication or HostbasedAuthentication. 452 HostbasedAuthentication.
479 453
480 /etc/hosts.equiv and /etc/shosts.equiv are still used. The 454 /etc/hosts.equiv and /etc/shosts.equiv are still used. The
481 default is M-bM-^@M-^\yesM-bM-^@M-^]. 455 default is yes.
482 456
483 IgnoreUserKnownHosts 457 IgnoreUserKnownHosts
484 Specifies whether sshd(8) should ignore the user's 458 Specifies whether sshd(8) should ignore the user's
485 ~/.ssh/known_hosts during RhostsRSAAuthentication or 459 ~/.ssh/known_hosts during HostbasedAuthentication. The default
486 HostbasedAuthentication. The default is M-bM-^@M-^\noM-bM-^@M-^]. 460 is no.
487 461
488 IPQoS Specifies the IPv4 type-of-service or DSCP class for the 462 IPQoS Specifies the IPv4 type-of-service or DSCP class for the
489 connection. Accepted values are M-bM-^@M-^\af11M-bM-^@M-^], M-bM-^@M-^\af12M-bM-^@M-^], M-bM-^@M-^\af13M-bM-^@M-^], M-bM-^@M-^\af21M-bM-^@M-^], 463 connection. Accepted values are af11, af12, af13, af21, af22,
490 M-bM-^@M-^\af22M-bM-^@M-^], M-bM-^@M-^\af23M-bM-^@M-^], M-bM-^@M-^\af31M-bM-^@M-^], M-bM-^@M-^\af32M-bM-^@M-^], M-bM-^@M-^\af33M-bM-^@M-^], M-bM-^@M-^\af41M-bM-^@M-^], M-bM-^@M-^\af42M-bM-^@M-^], M-bM-^@M-^\af43M-bM-^@M-^], 464 af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3,
491 M-bM-^@M-^\cs0M-bM-^@M-^], M-bM-^@M-^\cs1M-bM-^@M-^], M-bM-^@M-^\cs2M-bM-^@M-^], M-bM-^@M-^\cs3M-bM-^@M-^], M-bM-^@M-^\cs4M-bM-^@M-^], M-bM-^@M-^\cs5M-bM-^@M-^], M-bM-^@M-^\cs6M-bM-^@M-^], M-bM-^@M-^\cs7M-bM-^@M-^], M-bM-^@M-^\efM-bM-^@M-^], 465 cs4, cs5, cs6, cs7, ef, lowdelay, throughput, reliability, or a
492 M-bM-^@M-^\lowdelayM-bM-^@M-^], M-bM-^@M-^\throughputM-bM-^@M-^], M-bM-^@M-^\reliabilityM-bM-^@M-^], or a numeric value. 466 numeric value. This option may take one or two arguments,
493 This option may take one or two arguments, separated by 467 separated by whitespace. If one argument is specified, it is
494 whitespace. If one argument is specified, it is used as the 468 used as the packet class unconditionally. If two values are
495 packet class unconditionally. If two values are specified, the 469 specified, the first is automatically selected for interactive
496 first is automatically selected for interactive sessions and the 470 sessions and the second for non-interactive sessions. The
497 second for non-interactive sessions. The default is M-bM-^@M-^\lowdelayM-bM-^@M-^] 471 default is lowdelay for interactive sessions and throughput for
498 for interactive sessions and M-bM-^@M-^\throughputM-bM-^@M-^] for non-interactive 472 non-interactive sessions.
499 sessions.
500 473
501 KbdInteractiveAuthentication 474 KbdInteractiveAuthentication
502 Specifies whether to allow keyboard-interactive authentication. 475 Specifies whether to allow keyboard-interactive authentication.
503 The argument to this keyword must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default 476 The argument to this keyword must be yes or no. The default is
504 is to use whatever value ChallengeResponseAuthentication is set 477 to use whatever value ChallengeResponseAuthentication is set to
505 to (by default M-bM-^@M-^\yesM-bM-^@M-^]). 478 (by default yes).
506 479
507 KerberosAuthentication 480 KerberosAuthentication
508 Specifies whether the password provided by the user for 481 Specifies whether the password provided by the user for
509 PasswordAuthentication will be validated through the Kerberos 482 PasswordAuthentication will be validated through the Kerberos
510 KDC. To use this option, the server needs a Kerberos servtab 483 KDC. To use this option, the server needs a Kerberos servtab
511 which allows the verification of the KDC's identity. The default 484 which allows the verification of the KDC's identity. The default
512 is M-bM-^@M-^\noM-bM-^@M-^]. 485 is no.
513 486
514 KerberosGetAFSToken 487 KerberosGetAFSToken
515 If AFS is active and the user has a Kerberos 5 TGT, attempt to 488 If AFS is active and the user has a Kerberos 5 TGT, attempt to
516 acquire an AFS token before accessing the user's home directory. 489 acquire an AFS token before accessing the user's home directory.
517 The default is M-bM-^@M-^\noM-bM-^@M-^]. 490 The default is no.
518 491
519 KerberosOrLocalPasswd 492 KerberosOrLocalPasswd
520 If password authentication through Kerberos fails then the 493 If password authentication through Kerberos fails then the
521 password will be validated via any additional local mechanism 494 password will be validated via any additional local mechanism
522 such as /etc/passwd. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 495 such as /etc/passwd. The default is yes.
523 496
524 KerberosTicketCleanup 497 KerberosTicketCleanup
525 Specifies whether to automatically destroy the user's ticket 498 Specifies whether to automatically destroy the user's ticket
526 cache file on logout. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 499 cache file on logout. The default is yes.
527 500
528 KexAlgorithms 501 KexAlgorithms
529 Specifies the available KEX (Key Exchange) algorithms. Multiple 502 Specifies the available KEX (Key Exchange) algorithms. Multiple
@@ -532,6 +505,7 @@ DESCRIPTION
532 will be appended to the default set instead of replacing them. 505 will be appended to the default set instead of replacing them.
533 The supported algorithms are: 506 The supported algorithms are:
534 507
508 curve25519-sha256
535 curve25519-sha256@libssh.org 509 curve25519-sha256@libssh.org
536 diffie-hellman-group1-sha1 510 diffie-hellman-group1-sha1
537 diffie-hellman-group14-sha1 511 diffie-hellman-group14-sha1
@@ -543,21 +517,13 @@ DESCRIPTION
543 517
544 The default is: 518 The default is:
545 519
546 curve25519-sha256@libssh.org, 520 curve25519-sha256,curve25519-sha256@libssh.org,
547 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 521 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
548 diffie-hellman-group-exchange-sha256, 522 diffie-hellman-group-exchange-sha256,
549 diffie-hellman-group14-sha1 523 diffie-hellman-group14-sha1
550 524
551 The list of available key exchange algorithms may also be 525 The list of available key exchange algorithms may also be
552 obtained using the -Q option of ssh(1) with an argument of M-bM-^@M-^\kexM-bM-^@M-^]. 526 obtained using "ssh -Q kex".
553
554 KeyRegenerationInterval
555 In protocol version 1, the ephemeral server key is automatically
556 regenerated after this many seconds (if it has been used). The
557 purpose of regeneration is to prevent decrypting captured
558 sessions by later breaking into the machine and stealing the
559 keys. The key is never stored anywhere. If the value is 0, the
560 key is never regenerated. The default is 3600 (seconds).
561 527
562 ListenAddress 528 ListenAddress
563 Specifies the local addresses sshd(8) should listen on. The 529 Specifies the local addresses sshd(8) should listen on. The
@@ -591,7 +557,7 @@ DESCRIPTION
591 algorithms will be appended to the default set instead of 557 algorithms will be appended to the default set instead of
592 replacing them. 558 replacing them.
593 559
594 The algorithms that contain M-bM-^@M-^\-etmM-bM-^@M-^] calculate the MAC after 560 The algorithms that contain "-etm" calculate the MAC after
595 encryption (encrypt-then-mac). These are considered safer and 561 encryption (encrypt-then-mac). These are considered safer and
596 their use recommended. The supported MACs are: 562 their use recommended. The supported MACs are:
597 563
@@ -623,7 +589,7 @@ DESCRIPTION
623 hmac-sha2-256,hmac-sha2-512,hmac-sha1 589 hmac-sha2-256,hmac-sha2-512,hmac-sha1
624 590
625 The list of available MAC algorithms may also be obtained using 591 The list of available MAC algorithms may also be obtained using
626 the -Q option of ssh(1) with an argument of M-bM-^@M-^\macM-bM-^@M-^]. 592 "ssh -Q mac".
627 593
628 Match Introduces a conditional block. If all of the criteria on the 594 Match Introduces a conditional block. If all of the criteria on the
629 Match line are satisfied, the keywords on the following lines 595 Match line are satisfied, the keywords on the following lines
@@ -640,12 +606,12 @@ DESCRIPTION
640 operators described in the PATTERNS section of ssh_config(5). 606 operators described in the PATTERNS section of ssh_config(5).
641 607
642 The patterns in an Address criteria may additionally contain 608 The patterns in an Address criteria may additionally contain
643 addresses to match in CIDR address/masklen format, e.g. 609 addresses to match in CIDR address/masklen format, such as
644 M-bM-^@M-^\192.0.2.0/24M-bM-^@M-^] or M-bM-^@M-^\3ffe:ffff::/32M-bM-^@M-^]. Note that the mask length 610 192.0.2.0/24 or 2001:db8::/32. Note that the mask length
645 provided must be consistent with the address - it is an error to 611 provided must be consistent with the address - it is an error to
646 specify a mask length that is too long for the address or one 612 specify a mask length that is too long for the address or one
647 with bits set in this host portion of the address. For example, 613 with bits set in this host portion of the address. For example,
648 M-bM-^@M-^\192.0.2.0/33M-bM-^@M-^] and M-bM-^@M-^\192.0.2.0/8M-bM-^@M-^] respectively. 614 192.0.2.0/33 and 192.0.2.0/8, respectively.
649 615
650 Only a subset of keywords may be used on the lines following a 616 Only a subset of keywords may be used on the lines following a
651 Match keyword. Available keywords are AcceptEnv, 617 Match keyword. Available keywords are AcceptEnv,
@@ -654,7 +620,8 @@ DESCRIPTION
654 AuthorizedKeysCommand, AuthorizedKeysCommandUser, 620 AuthorizedKeysCommand, AuthorizedKeysCommandUser,
655 AuthorizedKeysFile, AuthorizedPrincipalsCommand, 621 AuthorizedKeysFile, AuthorizedPrincipalsCommand,
656 AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile, 622 AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile,
657 Banner, ChrootDirectory, DenyGroups, DenyUsers, ForceCommand, 623 Banner, ChrootDirectory, ClientAliveCountMax,
624 ClientAliveInterval, DenyGroups, DenyUsers, ForceCommand,
658 GatewayPorts, GSSAPIAuthentication, HostbasedAcceptedKeyTypes, 625 GatewayPorts, GSSAPIAuthentication, HostbasedAcceptedKeyTypes,
659 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS, 626 HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS,
660 KbdInteractiveAuthentication, KerberosAuthentication, 627 KbdInteractiveAuthentication, KerberosAuthentication,
@@ -662,9 +629,8 @@ DESCRIPTION
662 PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY, 629 PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY,
663 PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, 630 PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes,
664 PubkeyAuthentication, RekeyLimit, RevokedKeys, 631 PubkeyAuthentication, RekeyLimit, RevokedKeys,
665 RhostsRSAAuthentication, RSAAuthentication, StreamLocalBindMask, 632 StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys,
666 StreamLocalBindUnlink, TrustedUserCAKeys, X11DisplayOffset, 633 X11DisplayOffset, X11Forwarding and X11UseLocalHost.
667 X11Forwarding and X11UseLocalHost.
668 634
669 MaxAuthTries 635 MaxAuthTries
670 Specifies the maximum number of authentication attempts permitted 636 Specifies the maximum number of authentication attempts permitted
@@ -687,21 +653,21 @@ DESCRIPTION
687 expires for a connection. The default is 10:30:100. 653 expires for a connection. The default is 10:30:100.
688 654
689 Alternatively, random early drop can be enabled by specifying the 655 Alternatively, random early drop can be enabled by specifying the
690 three colon separated values M-bM-^@M-^\start:rate:fullM-bM-^@M-^] (e.g. "10:30:60"). 656 three colon separated values start:rate:full (e.g. "10:30:60").
691 sshd(8) will refuse connection attempts with a probability of 657 sshd(8) will refuse connection attempts with a probability of
692 M-bM-^@M-^\rate/100M-bM-^@M-^] (30%) if there are currently M-bM-^@M-^\startM-bM-^@M-^] (10) 658 rate/100 (30%) if there are currently start (10) unauthenticated
693 unauthenticated connections. The probability increases linearly 659 connections. The probability increases linearly and all
694 and all connection attempts are refused if the number of 660 connection attempts are refused if the number of unauthenticated
695 unauthenticated connections reaches M-bM-^@M-^\fullM-bM-^@M-^] (60). 661 connections reaches full (60).
696 662
697 PasswordAuthentication 663 PasswordAuthentication
698 Specifies whether password authentication is allowed. The 664 Specifies whether password authentication is allowed. The
699 default is M-bM-^@M-^\yesM-bM-^@M-^]. 665 default is yes.
700 666
701 PermitEmptyPasswords 667 PermitEmptyPasswords
702 When password authentication is allowed, it specifies whether the 668 When password authentication is allowed, it specifies whether the
703 server allows login to accounts with empty password strings. The 669 server allows login to accounts with empty password strings. The
704 default is M-bM-^@M-^\noM-bM-^@M-^]. 670 default is no.
705 671
706 PermitOpen 672 PermitOpen
707 Specifies the destinations to which TCP port forwarding is 673 Specifies the destinations to which TCP port forwarding is
@@ -713,58 +679,57 @@ DESCRIPTION
713 PermitOpen [IPv6_addr]:port 679 PermitOpen [IPv6_addr]:port
714 680
715 Multiple forwards may be specified by separating them with 681 Multiple forwards may be specified by separating them with
716 whitespace. An argument of M-bM-^@M-^\anyM-bM-^@M-^] can be used to remove all 682 whitespace. An argument of any can be used to remove all
717 restrictions and permit any forwarding requests. An argument of 683 restrictions and permit any forwarding requests. An argument of
718 M-bM-^@M-^\noneM-bM-^@M-^] can be used to prohibit all forwarding requests. The 684 none can be used to prohibit all forwarding requests. The
719 wildcard M-bM-^@M-^\*M-bM-^@M-^] can be used for host or port to allow all hosts or 685 wildcard M-bM-^@M-^X*M-bM-^@M-^Y can be used for host or port to allow all hosts or
720 ports, respectively. By default all port forwarding requests are 686 ports, respectively. By default all port forwarding requests are
721 permitted. 687 permitted.
722 688
723 PermitRootLogin 689 PermitRootLogin
724 Specifies whether root can log in using ssh(1). The argument 690 Specifies whether root can log in using ssh(1). The argument
725 must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\prohibit-passwordM-bM-^@M-^], M-bM-^@M-^\without-passwordM-bM-^@M-^], 691 must be yes, prohibit-password, without-password,
726 M-bM-^@M-^\forced-commands-onlyM-bM-^@M-^], or M-bM-^@M-^\noM-bM-^@M-^]. The default is 692 forced-commands-only, or no. The default is prohibit-password.
727 M-bM-^@M-^\prohibit-passwordM-bM-^@M-^].
728 693
729 If this option is set to M-bM-^@M-^\prohibit-passwordM-bM-^@M-^] or 694 If this option is set to prohibit-password or without-password,
730 M-bM-^@M-^\without-passwordM-bM-^@M-^], password and keyboard-interactive 695 password and keyboard-interactive authentication are disabled for
731 authentication are disabled for root. 696 root.
732 697
733 If this option is set to M-bM-^@M-^\forced-commands-onlyM-bM-^@M-^], root login with 698 If this option is set to forced-commands-only, root login with
734 public key authentication will be allowed, but only if the 699 public key authentication will be allowed, but only if the
735 command option has been specified (which may be useful for taking 700 command option has been specified (which may be useful for taking
736 remote backups even if root login is normally not allowed). All 701 remote backups even if root login is normally not allowed). All
737 other authentication methods are disabled for root. 702 other authentication methods are disabled for root.
738 703
739 If this option is set to M-bM-^@M-^\noM-bM-^@M-^], root is not allowed to log in. 704 If this option is set to no, root is not allowed to log in.
705
706 PermitTTY
707 Specifies whether pty(4) allocation is permitted. The default is
708 yes.
740 709
741 PermitTunnel 710 PermitTunnel
742 Specifies whether tun(4) device forwarding is allowed. The 711 Specifies whether tun(4) device forwarding is allowed. The
743 argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\point-to-pointM-bM-^@M-^] (layer 3), M-bM-^@M-^\ethernetM-bM-^@M-^] 712 argument must be yes, point-to-point (layer 3), ethernet (layer
744 (layer 2), or M-bM-^@M-^\noM-bM-^@M-^]. Specifying M-bM-^@M-^\yesM-bM-^@M-^] permits both 713 2), or no. Specifying yes permits both point-to-point and
745 M-bM-^@M-^\point-to-pointM-bM-^@M-^] and M-bM-^@M-^\ethernetM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 714 ethernet. The default is no.
746 715
747 Independent of this setting, the permissions of the selected 716 Independent of this setting, the permissions of the selected
748 tun(4) device must allow access to the user. 717 tun(4) device must allow access to the user.
749 718
750 PermitTTY
751 Specifies whether pty(4) allocation is permitted. The default is
752 M-bM-^@M-^\yesM-bM-^@M-^].
753
754 PermitUserEnvironment 719 PermitUserEnvironment
755 Specifies whether ~/.ssh/environment and environment= options in 720 Specifies whether ~/.ssh/environment and environment= options in
756 ~/.ssh/authorized_keys are processed by sshd(8). The default is 721 ~/.ssh/authorized_keys are processed by sshd(8). The default is
757 M-bM-^@M-^\noM-bM-^@M-^]. Enabling environment processing may enable users to bypass 722 no. Enabling environment processing may enable users to bypass
758 access restrictions in some configurations using mechanisms such 723 access restrictions in some configurations using mechanisms such
759 as LD_PRELOAD. 724 as LD_PRELOAD.
760 725
761 PermitUserRC 726 PermitUserRC
762 Specifies whether any ~/.ssh/rc file is executed. The default is 727 Specifies whether any ~/.ssh/rc file is executed. The default is
763 M-bM-^@M-^\yesM-bM-^@M-^]. 728 yes.
764 729
765 PidFile 730 PidFile
766 Specifies the file that contains the process ID of the SSH 731 Specifies the file that contains the process ID of the SSH
767 daemon, or M-bM-^@M-^\noneM-bM-^@M-^] to not write one. The default is 732 daemon, or none to not write one. The default is
768 /var/run/sshd.pid. 733 /var/run/sshd.pid.
769 734
770 Port Specifies the port number that sshd(8) listens on. The default 735 Port Specifies the port number that sshd(8) listens on. The default
@@ -774,24 +739,12 @@ DESCRIPTION
774 PrintLastLog 739 PrintLastLog
775 Specifies whether sshd(8) should print the date and time of the 740 Specifies whether sshd(8) should print the date and time of the
776 last user login when a user logs in interactively. The default 741 last user login when a user logs in interactively. The default
777 is M-bM-^@M-^\yesM-bM-^@M-^]. 742 is yes.
778 743
779 PrintMotd 744 PrintMotd
780 Specifies whether sshd(8) should print /etc/motd when a user logs 745 Specifies whether sshd(8) should print /etc/motd when a user logs
781 in interactively. (On some systems it is also printed by the 746 in interactively. (On some systems it is also printed by the
782 shell, /etc/profile, or equivalent.) The default is M-bM-^@M-^\yesM-bM-^@M-^]. 747 shell, /etc/profile, or equivalent.) The default is yes.
783
784 Protocol
785 Specifies the protocol versions sshd(8) supports. The possible
786 values are M-bM-^@M-^X1M-bM-^@M-^Y and M-bM-^@M-^X2M-bM-^@M-^Y. Multiple versions must be comma-
787 separated. The default is M-bM-^@M-^X2M-bM-^@M-^Y. Protocol 1 suffers from a number
788 of cryptographic weaknesses and should not be used. It is only
789 offered to support legacy devices.
790
791 Note that the order of the protocol list does not indicate
792 preference, because the client selects among multiple protocol
793 versions offered by the server. Specifying M-bM-^@M-^\2,1M-bM-^@M-^] is identical to
794 M-bM-^@M-^\1,2M-bM-^@M-^].
795 748
796 PubkeyAcceptedKeyTypes 749 PubkeyAcceptedKeyTypes
797 Specifies the key types that will be accepted for public key 750 Specifies the key types that will be accepted for public key
@@ -808,11 +761,12 @@ DESCRIPTION
808 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, 761 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
809 ssh-ed25519,ssh-rsa 762 ssh-ed25519,ssh-rsa
810 763
811 The -Q option of ssh(1) may be used to list supported key types. 764 The list of available key types may also be obtained using "ssh
765 -Q key".
812 766
813 PubkeyAuthentication 767 PubkeyAuthentication
814 Specifies whether public key authentication is allowed. The 768 Specifies whether public key authentication is allowed. The
815 default is M-bM-^@M-^\yesM-bM-^@M-^]. 769 default is yes.
816 770
817 RekeyLimit 771 RekeyLimit
818 Specifies the maximum amount of data that may be transmitted 772 Specifies the maximum amount of data that may be transmitted
@@ -824,13 +778,13 @@ DESCRIPTION
824 M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second 778 M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second
825 value is specified in seconds and may use any of the units 779 value is specified in seconds and may use any of the units
826 documented in the TIME FORMATS section. The default value for 780 documented in the TIME FORMATS section. The default value for
827 RekeyLimit is M-bM-^@M-^\default noneM-bM-^@M-^], which means that rekeying is 781 RekeyLimit is default none, which means that rekeying is
828 performed after the cipher's default amount of data has been sent 782 performed after the cipher's default amount of data has been sent
829 or received and no time based rekeying is done. 783 or received and no time based rekeying is done.
830 784
831 RevokedKeys 785 RevokedKeys
832 Specifies revoked public keys file, or M-bM-^@M-^\noneM-bM-^@M-^] to not use one. 786 Specifies revoked public keys file, or none to not use one. Keys
833 Keys listed in this file will be refused for public key 787 listed in this file will be refused for public key
834 authentication. Note that if this file is not readable, then 788 authentication. Note that if this file is not readable, then
835 public key authentication will be refused for all users. Keys 789 public key authentication will be refused for all users. Keys
836 may be specified as a text file, listing one public key per line, 790 may be specified as a text file, listing one public key per line,
@@ -838,20 +792,6 @@ DESCRIPTION
838 ssh-keygen(1). For more information on KRLs, see the KEY 792 ssh-keygen(1). For more information on KRLs, see the KEY
839 REVOCATION LISTS section in ssh-keygen(1). 793 REVOCATION LISTS section in ssh-keygen(1).
840 794
841 RhostsRSAAuthentication
842 Specifies whether rhosts or /etc/hosts.equiv authentication
843 together with successful RSA host authentication is allowed. The
844 default is M-bM-^@M-^\noM-bM-^@M-^]. This option applies to protocol version 1 only.
845
846 RSAAuthentication
847 Specifies whether pure RSA authentication is allowed. The
848 default is M-bM-^@M-^\yesM-bM-^@M-^]. This option applies to protocol version 1
849 only.
850
851 ServerKeyBits
852 Defines the number of bits in the ephemeral protocol version 1
853 server key. The default and minimum value is 1024.
854
855 StreamLocalBindMask 795 StreamLocalBindMask
856 Sets the octal file creation mode mask (umask) used when creating 796 Sets the octal file creation mode mask (umask) used when creating
857 a Unix-domain socket file for local or remote port forwarding. 797 a Unix-domain socket file for local or remote port forwarding.
@@ -871,14 +811,14 @@ DESCRIPTION
871 domain socket file. This option is only used for port forwarding 811 domain socket file. This option is only used for port forwarding
872 to a Unix-domain socket file. 812 to a Unix-domain socket file.
873 813
874 The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 814 The argument must be yes or no. The default is no.
875 815
876 StrictModes 816 StrictModes
877 Specifies whether sshd(8) should check file modes and ownership 817 Specifies whether sshd(8) should check file modes and ownership
878 of the user's files and home directory before accepting login. 818 of the user's files and home directory before accepting login.
879 This is normally desirable because novices sometimes accidentally 819 This is normally desirable because novices sometimes accidentally
880 leave their directory or files world-writable. The default is 820 leave their directory or files world-writable. The default is
881 M-bM-^@M-^\yesM-bM-^@M-^]. Note that this does not apply to ChrootDirectory, whose 821 yes. Note that this does not apply to ChrootDirectory, whose
882 permissions and ownership are checked unconditionally. 822 permissions and ownership are checked unconditionally.
883 823
884 Subsystem 824 Subsystem
@@ -886,12 +826,12 @@ DESCRIPTION
886 Arguments should be a subsystem name and a command (with optional 826 Arguments should be a subsystem name and a command (with optional
887 arguments) to execute upon subsystem request. 827 arguments) to execute upon subsystem request.
888 828
889 The command sftp-server(8) implements the M-bM-^@M-^\sftpM-bM-^@M-^] file transfer 829 The command sftp-server implements the SFTP file transfer
890 subsystem. 830 subsystem.
891 831
892 Alternately the name M-bM-^@M-^\internal-sftpM-bM-^@M-^] implements an in-process 832 Alternately the name internal-sftp implements an in-process SFTP
893 M-bM-^@M-^\sftpM-bM-^@M-^] server. This may simplify configurations using 833 server. This may simplify configurations using ChrootDirectory
894 ChrootDirectory to force a different filesystem root on clients. 834 to force a different filesystem root on clients.
895 835
896 By default no subsystems are defined. 836 By default no subsystems are defined.
897 837
@@ -908,23 +848,22 @@ DESCRIPTION
908 this means that connections will die if the route is down 848 this means that connections will die if the route is down
909 temporarily, and some people find it annoying. On the other 849 temporarily, and some people find it annoying. On the other
910 hand, if TCP keepalives are not sent, sessions may hang 850 hand, if TCP keepalives are not sent, sessions may hang
911 indefinitely on the server, leaving M-bM-^@M-^\ghostM-bM-^@M-^] users and consuming 851 indefinitely on the server, leaving "ghost" users and consuming
912 server resources. 852 server resources.
913 853
914 The default is M-bM-^@M-^\yesM-bM-^@M-^] (to send TCP keepalive messages), and the 854 The default is yes (to send TCP keepalive messages), and the
915 server will notice if the network goes down or the client host 855 server will notice if the network goes down or the client host
916 crashes. This avoids infinitely hanging sessions. 856 crashes. This avoids infinitely hanging sessions.
917 857
918 To disable TCP keepalive messages, the value should be set to 858 To disable TCP keepalive messages, the value should be set to no.
919 M-bM-^@M-^\noM-bM-^@M-^].
920 859
921 TrustedUserCAKeys 860 TrustedUserCAKeys
922 Specifies a file containing public keys of certificate 861 Specifies a file containing public keys of certificate
923 authorities that are trusted to sign user certificates for 862 authorities that are trusted to sign user certificates for
924 authentication, or M-bM-^@M-^\noneM-bM-^@M-^] to not use one. Keys are listed one 863 authentication, or none to not use one. Keys are listed one per
925 per line; empty lines and comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are allowed. 864 line; empty lines and comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are allowed. If
926 If a certificate is presented for authentication and has its 865 a certificate is presented for authentication and has its signing
927 signing CA key listed in this file, then it may be used for 866 CA key listed in this file, then it may be used for
928 authentication for any user listed in the certificate's 867 authentication for any user listed in the certificate's
929 principals list. Note that certificates that lack a list of 868 principals list. Note that certificates that lack a list of
930 principals will not be permitted for authentication using 869 principals will not be permitted for authentication using
@@ -935,20 +874,12 @@ DESCRIPTION
935 and to check that the resolved host name for the remote IP 874 and to check that the resolved host name for the remote IP
936 address maps back to the very same IP address. 875 address maps back to the very same IP address.
937 876
938 If this option is set to M-bM-^@M-^\noM-bM-^@M-^] (the default) then only addresses 877 If this option is set to no (the default) then only addresses and
939 and not host names may be used in ~/.ssh/authorized_keys from and 878 not host names may be used in ~/.ssh/authorized_keys from and
940 sshd_config Match Host directives. 879 sshd_config Match Host directives.
941 880
942 UseLogin
943 Specifies whether login(1) is used for interactive login
944 sessions. The default is M-bM-^@M-^\noM-bM-^@M-^]. Note that login(1) is never used
945 for remote command execution. Note also, that if this is
946 enabled, X11Forwarding will be disabled because login(1) does not
947 know how to handle xauth(1) cookies. If UsePrivilegeSeparation
948 is specified, it will be disabled after authentication.
949
950 UsePAM Enables the Pluggable Authentication Module interface. If set to 881 UsePAM Enables the Pluggable Authentication Module interface. If set to
951 M-bM-^@M-^\yesM-bM-^@M-^] this will enable PAM authentication using 882 yes this will enable PAM authentication using
952 ChallengeResponseAuthentication and PasswordAuthentication in 883 ChallengeResponseAuthentication and PasswordAuthentication in
953 addition to PAM account and session module processing for all 884 addition to PAM account and session module processing for all
954 authentication types. 885 authentication types.
@@ -958,7 +889,7 @@ DESCRIPTION
958 either PasswordAuthentication or ChallengeResponseAuthentication. 889 either PasswordAuthentication or ChallengeResponseAuthentication.
959 890
960 If UsePAM is enabled, you will not be able to run sshd(8) as a 891 If UsePAM is enabled, you will not be able to run sshd(8) as a
961 non-root user. The default is M-bM-^@M-^\noM-bM-^@M-^]. 892 non-root user. The default is no.
962 893
963 UsePrivilegeSeparation 894 UsePrivilegeSeparation
964 Specifies whether sshd(8) separates privileges by creating an 895 Specifies whether sshd(8) separates privileges by creating an
@@ -967,15 +898,15 @@ DESCRIPTION
967 that has the privilege of the authenticated user. The goal of 898 that has the privilege of the authenticated user. The goal of
968 privilege separation is to prevent privilege escalation by 899 privilege separation is to prevent privilege escalation by
969 containing any corruption within the unprivileged processes. The 900 containing any corruption within the unprivileged processes. The
970 argument must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\noM-bM-^@M-^], or M-bM-^@M-^\sandboxM-bM-^@M-^]. If 901 argument must be yes, no, or sandbox. If UsePrivilegeSeparation
971 UsePrivilegeSeparation is set to M-bM-^@M-^\sandboxM-bM-^@M-^] then the pre- 902 is set to sandbox then the pre-authentication unprivileged
972 authentication unprivileged process is subject to additional 903 process is subject to additional restrictions. The default is
973 restrictions. The default is M-bM-^@M-^\sandboxM-bM-^@M-^]. 904 sandbox.
974 905
975 VersionAddendum 906 VersionAddendum
976 Optionally specifies additional text to append to the SSH 907 Optionally specifies additional text to append to the SSH
977 protocol banner sent by the server upon connection. The default 908 protocol banner sent by the server upon connection. The default
978 is M-bM-^@M-^\noneM-bM-^@M-^]. 909 is none.
979 910
980 X11DisplayOffset 911 X11DisplayOffset
981 Specifies the first display number available for sshd(8)'s X11 912 Specifies the first display number available for sshd(8)'s X11
@@ -984,41 +915,39 @@ DESCRIPTION
984 915
985 X11Forwarding 916 X11Forwarding
986 Specifies whether X11 forwarding is permitted. The argument must 917 Specifies whether X11 forwarding is permitted. The argument must
987 be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^]. 918 be yes or no. The default is no.
988 919
989 When X11 forwarding is enabled, there may be additional exposure 920 When X11 forwarding is enabled, there may be additional exposure
990 to the server and to client displays if the sshd(8) proxy display 921 to the server and to client displays if the sshd(8) proxy display
991 is configured to listen on the wildcard address (see 922 is configured to listen on the wildcard address (see
992 X11UseLocalhost below), though this is not the default. 923 X11UseLocalhost), though this is not the default. Additionally,
993 Additionally, the authentication spoofing and authentication data 924 the authentication spoofing and authentication data verification
994 verification and substitution occur on the client side. The 925 and substitution occur on the client side. The security risk of
995 security risk of using X11 forwarding is that the client's X11 926 using X11 forwarding is that the client's X11 display server may
996 display server may be exposed to attack when the SSH client 927 be exposed to attack when the SSH client requests forwarding (see
997 requests forwarding (see the warnings for ForwardX11 in 928 the warnings for ForwardX11 in ssh_config(5)). A system
998 ssh_config(5)). A system administrator may have a stance in 929 administrator may have a stance in which they want to protect
999 which they want to protect clients that may expose themselves to 930 clients that may expose themselves to attack by unwittingly
1000 attack by unwittingly requesting X11 forwarding, which can 931 requesting X11 forwarding, which can warrant a no setting.
1001 warrant a M-bM-^@M-^\noM-bM-^@M-^] setting.
1002 932
1003 Note that disabling X11 forwarding does not prevent users from 933 Note that disabling X11 forwarding does not prevent users from
1004 forwarding X11 traffic, as users can always install their own 934 forwarding X11 traffic, as users can always install their own
1005 forwarders. X11 forwarding is automatically disabled if UseLogin 935 forwarders.
1006 is enabled.
1007 936
1008 X11UseLocalhost 937 X11UseLocalhost
1009 Specifies whether sshd(8) should bind the X11 forwarding server 938 Specifies whether sshd(8) should bind the X11 forwarding server
1010 to the loopback address or to the wildcard address. By default, 939 to the loopback address or to the wildcard address. By default,
1011 sshd binds the forwarding server to the loopback address and sets 940 sshd binds the forwarding server to the loopback address and sets
1012 the hostname part of the DISPLAY environment variable to 941 the hostname part of the DISPLAY environment variable to
1013 M-bM-^@M-^\localhostM-bM-^@M-^]. This prevents remote hosts from connecting to the 942 localhost. This prevents remote hosts from connecting to the
1014 proxy display. However, some older X11 clients may not function 943 proxy display. However, some older X11 clients may not function
1015 with this configuration. X11UseLocalhost may be set to M-bM-^@M-^\noM-bM-^@M-^] to 944 with this configuration. X11UseLocalhost may be set to no to
1016 specify that the forwarding server should be bound to the 945 specify that the forwarding server should be bound to the
1017 wildcard address. The argument must be M-bM-^@M-^\yesM-bM-^@M-^] or M-bM-^@M-^\noM-bM-^@M-^]. The 946 wildcard address. The argument must be yes or no. The default
1018 default is M-bM-^@M-^\yesM-bM-^@M-^]. 947 is yes.
1019 948
1020 XAuthLocation 949 XAuthLocation
1021 Specifies the full pathname of the xauth(1) program, or M-bM-^@M-^\noneM-bM-^@M-^] to 950 Specifies the full pathname of the xauth(1) program, or none to
1022 not use one. The default is /usr/X11R6/bin/xauth. 951 not use one. The default is /usr/X11R6/bin/xauth.
1023 952
1024TIME FORMATS 953TIME FORMATS
@@ -1043,6 +972,33 @@ TIME FORMATS
1043 10m 10 minutes 972 10m 10 minutes
1044 1h30m 1 hour 30 minutes (90 minutes) 973 1h30m 1 hour 30 minutes (90 minutes)
1045 974
975TOKENS
976 Arguments to some keywords can make use of tokens, which are expanded at
977 runtime:
978
979 %% A literal M-bM-^@M-^X%M-bM-^@M-^Y.
980 %F The fingerprint of the CA key.
981 %f The fingerprint of the key or certificate.
982 %h The home directory of the user.
983 %i The key ID in the certificate.
984 %K The base64-encoded CA key.
985 %k The base64-encoded key or certificate for authentication.
986 %s The serial number of the certificate.
987 %T The type of the CA key.
988 %t The key or certificate type.
989 %u The username.
990
991 AuthorizedKeysCommand accepts the tokens %%, %f, %h, %t, and %u.
992
993 AuthorizedKeysFile accepts the tokens %%, %h, and %u.
994
995 AuthorizedPrincipalsCommand accepts the tokens %%, %F, %f, %K, %k, %h,
996 %i, %s, %T, %t, and %u.
997
998 AuthorizedPrincipalsFile accepts the tokens %%, %h, and %u.
999
1000 ChrootDirectory accepts the tokens %%, %h, and %u.
1001
1046FILES 1002FILES
1047 /etc/ssh/sshd_config 1003 /etc/ssh/sshd_config
1048 Contains configuration data for sshd(8). This file should be 1004 Contains configuration data for sshd(8). This file should be
@@ -1050,7 +1006,7 @@ FILES
1050 necessary) that it be world-readable. 1006 necessary) that it be world-readable.
1051 1007
1052SEE ALSO 1008SEE ALSO
1053 sshd(8) 1009 sftp-server(8), sshd(8)
1054 1010
1055AUTHORS 1011AUTHORS
1056 OpenSSH is a derivative of the original and free ssh 1.2.12 release by 1012 OpenSSH is a derivative of the original and free ssh 1.2.12 release by
@@ -1060,4 +1016,4 @@ AUTHORS
1060 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 1016 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
1061 for privilege separation. 1017 for privilege separation.
1062 1018
1063OpenBSD 6.0 July 19, 2016 OpenBSD 6.0 1019OpenBSD 6.0 November 30, 2016 OpenBSD 6.0
diff --git a/sshd_config.5 b/sshd_config.5
index 79f2d611f..d6911a985 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd_config.5,v 1.227 2016/07/19 12:59:16 jmc Exp $ 36.\" $OpenBSD: sshd_config.5,v 1.239 2016/11/30 03:00:05 djm Exp $
37.Dd $Mdocdate: July 19 2016 $ 37.Dd $Mdocdate: November 30 2016 $
38.Dt SSHD_CONFIG 5 38.Dt SSHD_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -115,19 +115,18 @@ The default is not to accept any environment variables.
115Specifies which address family should be used by 115Specifies which address family should be used by
116.Xr sshd 8 . 116.Xr sshd 8 .
117Valid arguments are 117Valid arguments are
118.Dq any , 118.Cm any
119.Dq inet 119(the default),
120.Cm inet
120(use IPv4 only), or 121(use IPv4 only), or
121.Dq inet6 122.Cm inet6
122(use IPv6 only). 123(use IPv6 only).
123The default is
124.Dq any .
125.It Cm AllowAgentForwarding 124.It Cm AllowAgentForwarding
126Specifies whether 125Specifies whether
127.Xr ssh-agent 1 126.Xr ssh-agent 1
128forwarding is permitted. 127forwarding is permitted.
129The default is 128The default is
130.Dq yes . 129.Cm yes .
131Note that disabling agent forwarding does not improve security 130Note that disabling agent forwarding does not improve security
132unless users are also denied shell access, as they can always install 131unless users are also denied shell access, as they can always install
133their own forwarders. 132their own forwarders.
@@ -148,44 +147,42 @@ and finally
148See PATTERNS in 147See PATTERNS in
149.Xr ssh_config 5 148.Xr ssh_config 5
150for more information on patterns. 149for more information on patterns.
151.It Cm AllowTcpForwarding 150.It Cm AllowStreamLocalForwarding
152Specifies whether TCP forwarding is permitted. 151Specifies whether StreamLocal (Unix-domain socket) forwarding is permitted.
153The available options are 152The available options are
154.Dq yes 153.Cm yes
154(the default)
155or 155or
156.Dq all 156.Cm all
157to allow TCP forwarding, 157to allow StreamLocal forwarding,
158.Dq no 158.Cm no
159to prevent all TCP forwarding, 159to prevent all StreamLocal forwarding,
160.Dq local 160.Cm local
161to allow local (from the perspective of 161to allow local (from the perspective of
162.Xr ssh 1 ) 162.Xr ssh 1 )
163forwarding only or 163forwarding only or
164.Dq remote 164.Cm remote
165to allow remote forwarding only. 165to allow remote forwarding only.
166The default is 166Note that disabling StreamLocal forwarding does not improve security unless
167.Dq yes .
168Note that disabling TCP forwarding does not improve security unless
169users are also denied shell access, as they can always install their 167users are also denied shell access, as they can always install their
170own forwarders. 168own forwarders.
171.It Cm AllowStreamLocalForwarding 169.It Cm AllowTcpForwarding
172Specifies whether StreamLocal (Unix-domain socket) forwarding is permitted. 170Specifies whether TCP forwarding is permitted.
173The available options are 171The available options are
174.Dq yes 172.Cm yes
173(the default)
175or 174or
176.Dq all 175.Cm all
177to allow StreamLocal forwarding, 176to allow TCP forwarding,
178.Dq no 177.Cm no
179to prevent all StreamLocal forwarding, 178to prevent all TCP forwarding,
180.Dq local 179.Cm local
181to allow local (from the perspective of 180to allow local (from the perspective of
182.Xr ssh 1 ) 181.Xr ssh 1 )
183forwarding only or 182forwarding only or
184.Dq remote 183.Cm remote
185to allow remote forwarding only. 184to allow remote forwarding only.
186The default is 185Note that disabling TCP forwarding does not improve security unless
187.Dq yes .
188Note that disabling StreamLocal forwarding does not improve security unless
189users are also denied shell access, as they can always install their 186users are also denied shell access, as they can always install their
190own forwarders. 187own forwarders.
191.It Cm AllowUsers 188.It Cm AllowUsers
@@ -215,80 +212,73 @@ Specifies the authentication methods that must be successfully completed
215for a user to be granted access. 212for a user to be granted access.
216This option must be followed by one or more comma-separated lists of 213This option must be followed by one or more comma-separated lists of
217authentication method names, or by the single string 214authentication method names, or by the single string
218.Dq any 215.Cm any
219to indicate the default behaviour of accepting any single authentication 216to indicate the default behaviour of accepting any single authentication
220method. 217method.
221if the default is overridden, then successful authentication requires 218If the default is overridden, then successful authentication requires
222completion of every method in at least one of these lists. 219completion of every method in at least one of these lists.
223.Pp 220.Pp
224For example, an argument of 221For example,
225.Dq publickey,password publickey,keyboard-interactive 222.Qq publickey,password publickey,keyboard-interactive
226would require the user to complete public key authentication, followed by 223would require the user to complete public key authentication, followed by
227either password or keyboard interactive authentication. 224either password or keyboard interactive authentication.
228Only methods that are next in one or more lists are offered at each stage, 225Only methods that are next in one or more lists are offered at each stage,
229so for this example, it would not be possible to attempt password or 226so for this example it would not be possible to attempt password or
230keyboard-interactive authentication before public key. 227keyboard-interactive authentication before public key.
231.Pp 228.Pp
232For keyboard interactive authentication it is also possible to 229For keyboard interactive authentication it is also possible to
233restrict authentication to a specific device by appending a 230restrict authentication to a specific device by appending a
234colon followed by the device identifier 231colon followed by the device identifier
235.Dq bsdauth , 232.Cm bsdauth ,
236.Dq pam , 233.Cm pam ,
237or 234or
238.Dq skey , 235.Cm skey ,
239depending on the server configuration. 236depending on the server configuration.
240For example, 237For example,
241.Dq keyboard-interactive:bsdauth 238.Qq keyboard-interactive:bsdauth
242would restrict keyboard interactive authentication to the 239would restrict keyboard interactive authentication to the
243.Dq bsdauth 240.Cm bsdauth
244device. 241device.
245.Pp 242.Pp
246If the 243If the publickey method is listed more than once,
247.Dq publickey
248method is listed more than once,
249.Xr sshd 8 244.Xr sshd 8
250verifies that keys that have been used successfully are not reused for 245verifies that keys that have been used successfully are not reused for
251subsequent authentications. 246subsequent authentications.
252For example, an 247For example,
253.Cm AuthenticationMethods 248.Qq publickey,publickey
254of 249requires successful authentication using two different public keys.
255.Dq publickey,publickey 250.Pp
256will require successful authentication using two different public keys.
257.Pp
258This option will yield a fatal
259error if enabled if protocol 1 is also enabled.
260Note that each authentication method listed should also be explicitly enabled 251Note that each authentication method listed should also be explicitly enabled
261in the configuration. 252in the configuration.
262The default
263.Dq any
264is not to require multiple authentication; successful completion
265of a single authentication method is sufficient.
266.It Cm AuthorizedKeysCommand 253.It Cm AuthorizedKeysCommand
267Specifies a program to be used to look up the user's public keys. 254Specifies a program to be used to look up the user's public keys.
268The program must be owned by root, not writable by group or others and 255The program must be owned by root, not writable by group or others and
269specified by an absolute path. 256specified by an absolute path.
270.Pp
271Arguments to 257Arguments to
272.Cm AuthorizedKeysCommand 258.Cm AuthorizedKeysCommand
273may be provided using the following tokens, which will be expanded 259accept the tokens described in the
274at runtime: %% is replaced by a literal '%', %u is replaced by the 260.Sx TOKENS
275username being authenticated, %h is replaced by the home directory 261section.
276of the user being authenticated, %t is replaced with the key type 262If no arguments are specified then the username of the target user is used.
277offered for authentication, %f is replaced with the fingerprint of
278the key, and %k is replaced with the key being offered for authentication.
279If no arguments are specified then the username of the target user
280will be supplied.
281.Pp 263.Pp
282The program should produce on standard output zero or 264The program should produce on standard output zero or
283more lines of authorized_keys output (see AUTHORIZED_KEYS in 265more lines of authorized_keys output (see
266.Sx AUTHORIZED_KEYS
267in
284.Xr sshd 8 ) . 268.Xr sshd 8 ) .
285If a key supplied by AuthorizedKeysCommand does not successfully authenticate 269If a key supplied by
270.Cm AuthorizedKeysCommand
271does not successfully authenticate
286and authorize the user then public key authentication continues using the usual 272and authorize the user then public key authentication continues using the usual
287.Cm AuthorizedKeysFile 273.Cm AuthorizedKeysFile
288files. 274files.
289By default, no AuthorizedKeysCommand is run. 275By default, no
276.Cm AuthorizedKeysCommand
277is run.
290.It Cm AuthorizedKeysCommandUser 278.It Cm AuthorizedKeysCommandUser
291Specifies the user under whose account the AuthorizedKeysCommand is run. 279Specifies the user under whose account the
280.Cm AuthorizedKeysCommand
281is run.
292It is recommended to use a dedicated user that has no other role on the host 282It is recommended to use a dedicated user that has no other role on the host
293than running authorized keys commands. 283than running authorized keys commands.
294If 284If
@@ -299,41 +289,38 @@ is not, then
299.Xr sshd 8 289.Xr sshd 8
300will refuse to start. 290will refuse to start.
301.It Cm AuthorizedKeysFile 291.It Cm AuthorizedKeysFile
302Specifies the file that contains the public keys that can be used 292Specifies the file that contains the public keys used for user authentication.
303for user authentication.
304The format is described in the 293The format is described in the
305AUTHORIZED_KEYS FILE FORMAT 294.Sx AUTHORIZED_KEYS FILE FORMAT
306section of 295section of
307.Xr sshd 8 . 296.Xr sshd 8 .
297Arguments to
308.Cm AuthorizedKeysFile 298.Cm AuthorizedKeysFile
309may contain tokens of the form %T which are substituted during connection 299accept the tokens described in the
310setup. 300.Sx TOKENS
311The following tokens are defined: %% is replaced by a literal '%', 301section.
312%h is replaced by the home directory of the user being authenticated, and
313%u is replaced by the username of that user.
314After expansion, 302After expansion,
315.Cm AuthorizedKeysFile 303.Cm AuthorizedKeysFile
316is taken to be an absolute path or one relative to the user's home 304is taken to be an absolute path or one relative to the user's home
317directory. 305directory.
318Multiple files may be listed, separated by whitespace. 306Multiple files may be listed, separated by whitespace.
319Alternately this option may be set to 307Alternately this option may be set to
320.Dq none 308.Cm none
321to skip checking for user keys in files. 309to skip checking for user keys in files.
322The default is 310The default is
323.Dq .ssh/authorized_keys .ssh/authorized_keys2 . 311.Qq .ssh/authorized_keys .ssh/authorized_keys2 .
324.It Cm AuthorizedPrincipalsCommand 312.It Cm AuthorizedPrincipalsCommand
325Specifies a program to be used to generate the list of allowed 313Specifies a program to be used to generate the list of allowed
326certificate principals as per 314certificate principals as per
327.Cm AuthorizedPrincipalsFile . 315.Cm AuthorizedPrincipalsFile .
328The program must be owned by root, not writable by group or others and 316The program must be owned by root, not writable by group or others and
329specified by an absolute path. 317specified by an absolute path.
330.Pp
331Arguments to 318Arguments to
332.Cm AuthorizedPrincipalsCommand 319.Cm AuthorizedPrincipalsCommand
333may be provided using the following tokens, which will be expanded 320accept the tokens described in the
334at runtime: %% is replaced by a literal '%', %u is replaced by the 321.Sx TOKENS
335username being authenticated and %h is replaced by the home directory 322section.
336of the user being authenticated. 323If no arguments are specified then the username of the target user is used.
337.Pp 324.Pp
338The program should produce on standard output zero or 325The program should produce on standard output zero or
339more lines of 326more lines of
@@ -345,9 +332,13 @@ or
345.Cm AuthorizedPrincipalsFile 332.Cm AuthorizedPrincipalsFile
346is specified, then certificates offered by the client for authentication 333is specified, then certificates offered by the client for authentication
347must contain a principal that is listed. 334must contain a principal that is listed.
348By default, no AuthorizedPrincipalsCommand is run. 335By default, no
336.Cm AuthorizedPrincipalsCommand
337is run.
349.It Cm AuthorizedPrincipalsCommandUser 338.It Cm AuthorizedPrincipalsCommandUser
350Specifies the user under whose account the AuthorizedPrincipalsCommand is run. 339Specifies the user under whose account the
340.Cm AuthorizedPrincipalsCommand
341is run.
351It is recommended to use a dedicated user that has no other role on the host 342It is recommended to use a dedicated user that has no other role on the host
352than running authorized principals commands. 343than running authorized principals commands.
353If 344If
@@ -364,29 +355,28 @@ When using certificates signed by a key listed in
364.Cm TrustedUserCAKeys , 355.Cm TrustedUserCAKeys ,
365this file lists names, one of which must appear in the certificate for it 356this file lists names, one of which must appear in the certificate for it
366to be accepted for authentication. 357to be accepted for authentication.
367Names are listed one per line preceded by key options (as described 358Names are listed one per line preceded by key options (as described in
368in AUTHORIZED_KEYS FILE FORMAT in 359.Sx AUTHORIZED_KEYS FILE FORMAT
360in
369.Xr sshd 8 ) . 361.Xr sshd 8 ) .
370Empty lines and comments starting with 362Empty lines and comments starting with
371.Ql # 363.Ql #
372are ignored. 364are ignored.
373.Pp 365.Pp
366Arguments to
374.Cm AuthorizedPrincipalsFile 367.Cm AuthorizedPrincipalsFile
375may contain tokens of the form %T which are substituted during connection 368accept the tokens described in the
376setup. 369.Sx TOKENS
377The following tokens are defined: %% is replaced by a literal '%', 370section.
378%h is replaced by the home directory of the user being authenticated, and
379%u is replaced by the username of that user.
380After expansion, 371After expansion,
381.Cm AuthorizedPrincipalsFile 372.Cm AuthorizedPrincipalsFile
382is taken to be an absolute path or one relative to the user's home 373is taken to be an absolute path or one relative to the user's home directory.
383directory.
384.Pp
385The default is 374The default is
386.Dq none , 375.Cm none ,
387i.e. not to use a principals file \(en in this case, the username 376i.e. not to use a principals file \(en in this case, the username
388of the user must appear in a certificate's principals list for it to be 377of the user must appear in a certificate's principals list for it to be
389accepted. 378accepted.
379.Pp
390Note that 380Note that
391.Cm AuthorizedPrincipalsFile 381.Cm AuthorizedPrincipalsFile
392is only used when authentication proceeds using a CA listed in 382is only used when authentication proceeds using a CA listed in
@@ -402,14 +392,14 @@ for details).
402The contents of the specified file are sent to the remote user before 392The contents of the specified file are sent to the remote user before
403authentication is allowed. 393authentication is allowed.
404If the argument is 394If the argument is
405.Dq none 395.Cm none
406then no banner is displayed. 396then no banner is displayed.
407By default, no banner is displayed. 397By default, no banner is displayed.
408.It Cm ChallengeResponseAuthentication 398.It Cm ChallengeResponseAuthentication
409Specifies whether challenge-response authentication is allowed (e.g. via 399Specifies whether challenge-response authentication is allowed (e.g. via
410PAM). 400PAM).
411The default is 401The default is
412.Dq yes . 402.Cm yes .
413.It Cm ChrootDirectory 403.It Cm ChrootDirectory
414Specifies the pathname of a directory to 404Specifies the pathname of a directory to
415.Xr chroot 2 405.Xr chroot 2
@@ -421,11 +411,11 @@ which are not writable by any other user or group.
421After the chroot, 411After the chroot,
422.Xr sshd 8 412.Xr sshd 8
423changes the working directory to the user's home directory. 413changes the working directory to the user's home directory.
424.Pp 414Arguments to
425The pathname may contain the following tokens that are expanded at runtime once 415.Cm ChrootDirectory
426the connecting user has been authenticated: %% is replaced by a literal '%', 416accept the tokens described in the
427%h is replaced by the home directory of the user being authenticated, and 417.Sx TOKENS
428%u is replaced by the username of that user. 418section.
429.Pp 419.Pp
430The 420The
431.Cm ChrootDirectory 421.Cm ChrootDirectory
@@ -444,10 +434,9 @@ nodes such as
444and 434and
445.Xr tty 4 435.Xr tty 4
446devices. 436devices.
447For file transfer sessions using 437For file transfer sessions using SFTP
448.Dq sftp , 438no additional configuration of the environment is necessary if the in-process
449no additional configuration of the environment is necessary if the 439sftp-server is used,
450in-process sftp server is used,
451though sessions which use logging may require 440though sessions which use logging may require
452.Pa /dev/log 441.Pa /dev/log
453inside the chroot directory on some operating systems (see 442inside the chroot directory on some operating systems (see
@@ -462,7 +451,7 @@ Misconfiguration can lead to unsafe environments which
462cannot detect. 451cannot detect.
463.Pp 452.Pp
464The default is 453The default is
465.Dq none , 454.Cm none ,
466indicating not to 455indicating not to
467.Xr chroot 2 . 456.Xr chroot 2 .
468.It Cm Ciphers 457.It Cm Ciphers
@@ -515,23 +504,17 @@ aes128-ctr,aes192-ctr,aes256-ctr,
515aes128-gcm@openssh.com,aes256-gcm@openssh.com 504aes128-gcm@openssh.com,aes256-gcm@openssh.com
516.Ed 505.Ed
517.Pp 506.Pp
518The list of available ciphers may also be obtained using the 507The list of available ciphers may also be obtained using
519.Fl Q 508.Qq ssh -Q cipher .
520option of
521.Xr ssh 1
522with an argument of
523.Dq cipher .
524.It Cm ClientAliveCountMax 509.It Cm ClientAliveCountMax
525Sets the number of client alive messages (see below) which may be 510Sets the number of client alive messages which may be sent without
526sent without
527.Xr sshd 8 511.Xr sshd 8
528receiving any messages back from the client. 512receiving any messages back from the client.
529If this threshold is reached while client alive messages are being sent, 513If this threshold is reached while client alive messages are being sent,
530sshd will disconnect the client, terminating the session. 514sshd will disconnect the client, terminating the session.
531It is important to note that the use of client alive messages is very 515It is important to note that the use of client alive messages is very
532different from 516different from
533.Cm TCPKeepAlive 517.Cm TCPKeepAlive .
534(below).
535The client alive messages are sent through the encrypted channel 518The client alive messages are sent through the encrypted channel
536and therefore will not be spoofable. 519and therefore will not be spoofable.
537The TCP keepalive option enabled by 520The TCP keepalive option enabled by
@@ -543,7 +526,7 @@ server depend on knowing when a connection has become inactive.
543The default value is 3. 526The default value is 3.
544If 527If
545.Cm ClientAliveInterval 528.Cm ClientAliveInterval
546(see below) is set to 15, and 529is set to 15, and
547.Cm ClientAliveCountMax 530.Cm ClientAliveCountMax
548is left at the default, unresponsive SSH clients 531is left at the default, unresponsive SSH clients
549will be disconnected after approximately 45 seconds. 532will be disconnected after approximately 45 seconds.
@@ -556,20 +539,22 @@ channel to request a response from the client.
556The default 539The default
557is 0, indicating that these messages will not be sent to the client. 540is 0, indicating that these messages will not be sent to the client.
558.It Cm Compression 541.It Cm Compression
559Specifies whether compression is allowed, or delayed until 542Specifies whether compression is enabled after
560the user has authenticated successfully. 543the user has authenticated successfully.
561The argument must be 544The argument must be
562.Dq yes , 545.Cm yes ,
563.Dq delayed , 546.Cm delayed
547(a legacy synonym for
548.Cm yes )
564or 549or
565.Dq no . 550.Cm no .
566The default is 551The default is
567.Dq delayed . 552.Cm yes .
568.It Cm DebianBanner 553.It Cm DebianBanner
569Specifies whether the distribution-specified extra version suffix is 554Specifies whether the distribution-specified extra version suffix is
570included during initial protocol handshake. 555included during initial protocol handshake.
571The default is 556The default is
572.Dq yes . 557.Cm yes .
573.It Cm DenyGroups 558.It Cm DenyGroups
574This keyword can be followed by a list of group name patterns, separated 559This keyword can be followed by a list of group name patterns, separated
575by spaces. 560by spaces.
@@ -608,14 +593,20 @@ and finally
608See PATTERNS in 593See PATTERNS in
609.Xr ssh_config 5 594.Xr ssh_config 5
610for more information on patterns. 595for more information on patterns.
596.It Cm DisableForwarding
597Disables all forwarding features, including X11,
598.Xr ssh-agent 1 ,
599TCP and StreamLocal.
600This option overrides all other forwarding-related options and may
601simplify restricted configurations.
611.It Cm FingerprintHash 602.It Cm FingerprintHash
612Specifies the hash algorithm used when logging key fingerprints. 603Specifies the hash algorithm used when logging key fingerprints.
613Valid options are: 604Valid options are:
614.Dq md5 605.Cm md5
615and 606and
616.Dq sha256 . 607.Cm sha256 .
617The default is 608The default is
618.Dq sha256 . 609.Cm sha256 .
619.It Cm ForceCommand 610.It Cm ForceCommand
620Forces the execution of the command specified by 611Forces the execution of the command specified by
621.Cm ForceCommand , 612.Cm ForceCommand ,
@@ -631,12 +622,12 @@ The command originally supplied by the client is available in the
631.Ev SSH_ORIGINAL_COMMAND 622.Ev SSH_ORIGINAL_COMMAND
632environment variable. 623environment variable.
633Specifying a command of 624Specifying a command of
634.Dq internal-sftp 625.Cm internal-sftp
635will force the use of an in-process sftp server that requires no support 626will force the use of an in-process SFTP server that requires no support
636files when used with 627files when used with
637.Cm ChrootDirectory . 628.Cm ChrootDirectory .
638The default is 629The default is
639.Dq none . 630.Cm none .
640.It Cm GatewayPorts 631.It Cm GatewayPorts
641Specifies whether remote hosts are allowed to connect to ports 632Specifies whether remote hosts are allowed to connect to ports
642forwarded for the client. 633forwarded for the client.
@@ -649,48 +640,47 @@ can be used to specify that sshd
649should allow remote port forwardings to bind to non-loopback addresses, thus 640should allow remote port forwardings to bind to non-loopback addresses, thus
650allowing other hosts to connect. 641allowing other hosts to connect.
651The argument may be 642The argument may be
652.Dq no 643.Cm no
653to force remote port forwardings to be available to the local host only, 644to force remote port forwardings to be available to the local host only,
654.Dq yes 645.Cm yes
655to force remote port forwardings to bind to the wildcard address, or 646to force remote port forwardings to bind to the wildcard address, or
656.Dq clientspecified 647.Cm clientspecified
657to allow the client to select the address to which the forwarding is bound. 648to allow the client to select the address to which the forwarding is bound.
658The default is 649The default is
659.Dq no . 650.Cm no .
660.It Cm GSSAPIAuthentication 651.It Cm GSSAPIAuthentication
661Specifies whether user authentication based on GSSAPI is allowed. 652Specifies whether user authentication based on GSSAPI is allowed.
662The default is 653The default is
663.Dq no . 654.Cm no .
664.It Cm GSSAPIKeyExchange 655.It Cm GSSAPIKeyExchange
665Specifies whether key exchange based on GSSAPI is allowed. GSSAPI key exchange 656Specifies whether key exchange based on GSSAPI is allowed. GSSAPI key exchange
666doesn't rely on ssh keys to verify host identity. 657doesn't rely on ssh keys to verify host identity.
667The default is 658The default is
668.Dq no . 659.Cm no .
669.It Cm GSSAPICleanupCredentials 660.It Cm GSSAPICleanupCredentials
670Specifies whether to automatically destroy the user's credentials cache 661Specifies whether to automatically destroy the user's credentials cache
671on logout. 662on logout.
672The default is 663The default is
673.Dq yes . 664.Cm yes .
674.It Cm GSSAPIStrictAcceptorCheck 665.It Cm GSSAPIStrictAcceptorCheck
675Determines whether to be strict about the identity of the GSSAPI acceptor 666Determines whether to be strict about the identity of the GSSAPI acceptor
676a client authenticates against. 667a client authenticates against.
677If set to 668If set to
678.Dq yes 669.Cm yes
679then the client must authenticate against the 670then the client must authenticate against the host
680.Pa host
681service on the current hostname. 671service on the current hostname.
682If set to 672If set to
683.Dq no 673.Cm no
684then the client may authenticate against any service key stored in the 674then the client may authenticate against any service key stored in the
685machine's default store. 675machine's default store.
686This facility is provided to assist with operation on multi homed machines. 676This facility is provided to assist with operation on multi homed machines.
687The default is 677The default is
688.Dq yes . 678.Cm yes .
689.It Cm GSSAPIStoreCredentialsOnRekey 679.It Cm GSSAPIStoreCredentialsOnRekey
690Controls whether the user's GSSAPI credentials should be updated following a 680Controls whether the user's GSSAPI credentials should be updated following a
691successful connection rekeying. This option can be used to accepted renewed 681successful connection rekeying. This option can be used to accepted renewed
692or updated credentials from a compatible client. The default is 682or updated credentials from a compatible client. The default is
693.Dq no . 683.Cm no .
694.It Cm HostbasedAcceptedKeyTypes 684.It Cm HostbasedAcceptedKeyTypes
695Specifies the key types that will be accepted for hostbased authentication 685Specifies the key types that will be accepted for hostbased authentication
696as a comma-separated pattern list. 686as a comma-separated pattern list.
@@ -709,17 +699,14 @@ ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
709ssh-ed25519,ssh-rsa 699ssh-ed25519,ssh-rsa
710.Ed 700.Ed
711.Pp 701.Pp
712The 702The list of available key types may also be obtained using
713.Fl Q 703.Qq ssh -Q key .
714option of
715.Xr ssh 1
716may be used to list supported key types.
717.It Cm HostbasedAuthentication 704.It Cm HostbasedAuthentication
718Specifies whether rhosts or /etc/hosts.equiv authentication together 705Specifies whether rhosts or /etc/hosts.equiv authentication together
719with successful public key client host authentication is allowed 706with successful public key client host authentication is allowed
720(host-based authentication). 707(host-based authentication).
721The default is 708The default is
722.Dq no . 709.Cm no .
723.It Cm HostbasedUsesNameFromPacketOnly 710.It Cm HostbasedUsesNameFromPacketOnly
724Specifies whether or not the server will attempt to perform a reverse 711Specifies whether or not the server will attempt to perform a reverse
725name lookup when matching the name in the 712name lookup when matching the name in the
@@ -730,13 +717,13 @@ and
730files during 717files during
731.Cm HostbasedAuthentication . 718.Cm HostbasedAuthentication .
732A setting of 719A setting of
733.Dq yes 720.Cm yes
734means that 721means that
735.Xr sshd 8 722.Xr sshd 8
736uses the name supplied by the client rather than 723uses the name supplied by the client rather than
737attempting to resolve the name from the TCP connection itself. 724attempting to resolve the name from the TCP connection itself.
738The default is 725The default is
739.Dq no . 726.Cm no .
740.It Cm HostCertificate 727.It Cm HostCertificate
741Specifies a file containing a public host certificate. 728Specifies a file containing a public host certificate.
742The certificate's public key must match a private host key already specified 729The certificate's public key must match a private host key already specified
@@ -748,15 +735,12 @@ is not to load any certificates.
748.It Cm HostKey 735.It Cm HostKey
749Specifies a file containing a private host key 736Specifies a file containing a private host key
750used by SSH. 737used by SSH.
751The default is 738The defaults are
752.Pa /etc/ssh/ssh_host_key
753for protocol version 1, and
754.Pa /etc/ssh/ssh_host_dsa_key , 739.Pa /etc/ssh/ssh_host_dsa_key ,
755.Pa /etc/ssh/ssh_host_ecdsa_key , 740.Pa /etc/ssh/ssh_host_ecdsa_key ,
756.Pa /etc/ssh/ssh_host_ed25519_key 741.Pa /etc/ssh/ssh_host_ed25519_key
757and 742and
758.Pa /etc/ssh/ssh_host_rsa_key 743.Pa /etc/ssh/ssh_host_rsa_key .
759for protocol version 2.
760.Pp 744.Pp
761Note that 745Note that
762.Xr sshd 8 746.Xr sshd 8
@@ -767,14 +751,6 @@ option restricts which of the keys are actually used by
767.Xr sshd 8 . 751.Xr sshd 8 .
768.Pp 752.Pp
769It is possible to have multiple host key files. 753It is possible to have multiple host key files.
770.Dq rsa1
771keys are used for version 1 and
772.Dq dsa ,
773.Dq ecdsa ,
774.Dq ed25519
775or
776.Dq rsa
777are used for version 2 of the SSH protocol.
778It is also possible to specify public host key files instead. 754It is also possible to specify public host key files instead.
779In this case operations on the private key will be delegated 755In this case operations on the private key will be delegated
780to an 756to an
@@ -783,7 +759,7 @@ to an
783Identifies the UNIX-domain socket used to communicate 759Identifies the UNIX-domain socket used to communicate
784with an agent that has access to the private host keys. 760with an agent that has access to the private host keys.
785If the string 761If the string
786.Dq SSH_AUTH_SOCK 762.Qq SSH_AUTH_SOCK
787is specified, the location of the socket will be read from the 763is specified, the location of the socket will be read from the
788.Ev SSH_AUTH_SOCK 764.Ev SSH_AUTH_SOCK
789environment variable. 765environment variable.
@@ -801,20 +777,14 @@ ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
801ssh-ed25519,ssh-rsa 777ssh-ed25519,ssh-rsa
802.Ed 778.Ed
803.Pp 779.Pp
804The list of available key types may also be obtained using the 780The list of available key types may also be obtained using
805.Fl Q 781.Qq ssh -Q key .
806option of
807.Xr ssh 1
808with an argument of
809.Dq key .
810.It Cm IgnoreRhosts 782.It Cm IgnoreRhosts
811Specifies that 783Specifies that
812.Pa .rhosts 784.Pa .rhosts
813and 785and
814.Pa .shosts 786.Pa .shosts
815files will not be used in 787files will not be used in
816.Cm RhostsRSAAuthentication
817or
818.Cm HostbasedAuthentication . 788.Cm HostbasedAuthentication .
819.Pp 789.Pp
820.Pa /etc/hosts.equiv 790.Pa /etc/hosts.equiv
@@ -822,66 +792,64 @@ and
822.Pa /etc/shosts.equiv 792.Pa /etc/shosts.equiv
823are still used. 793are still used.
824The default is 794The default is
825.Dq yes . 795.Cm yes .
826.It Cm IgnoreUserKnownHosts 796.It Cm IgnoreUserKnownHosts
827Specifies whether 797Specifies whether
828.Xr sshd 8 798.Xr sshd 8
829should ignore the user's 799should ignore the user's
830.Pa ~/.ssh/known_hosts 800.Pa ~/.ssh/known_hosts
831during 801during
832.Cm RhostsRSAAuthentication
833or
834.Cm HostbasedAuthentication . 802.Cm HostbasedAuthentication .
835The default is 803The default is
836.Dq no . 804.Cm no .
837.It Cm IPQoS 805.It Cm IPQoS
838Specifies the IPv4 type-of-service or DSCP class for the connection. 806Specifies the IPv4 type-of-service or DSCP class for the connection.
839Accepted values are 807Accepted values are
840.Dq af11 , 808.Cm af11 ,
841.Dq af12 , 809.Cm af12 ,
842.Dq af13 , 810.Cm af13 ,
843.Dq af21 , 811.Cm af21 ,
844.Dq af22 , 812.Cm af22 ,
845.Dq af23 , 813.Cm af23 ,
846.Dq af31 , 814.Cm af31 ,
847.Dq af32 , 815.Cm af32 ,
848.Dq af33 , 816.Cm af33 ,
849.Dq af41 , 817.Cm af41 ,
850.Dq af42 , 818.Cm af42 ,
851.Dq af43 , 819.Cm af43 ,
852.Dq cs0 , 820.Cm cs0 ,
853.Dq cs1 , 821.Cm cs1 ,
854.Dq cs2 , 822.Cm cs2 ,
855.Dq cs3 , 823.Cm cs3 ,
856.Dq cs4 , 824.Cm cs4 ,
857.Dq cs5 , 825.Cm cs5 ,
858.Dq cs6 , 826.Cm cs6 ,
859.Dq cs7 , 827.Cm cs7 ,
860.Dq ef , 828.Cm ef ,
861.Dq lowdelay , 829.Cm lowdelay ,
862.Dq throughput , 830.Cm throughput ,
863.Dq reliability , 831.Cm reliability ,
864or a numeric value. 832or a numeric value.
865This option may take one or two arguments, separated by whitespace. 833This option may take one or two arguments, separated by whitespace.
866If one argument is specified, it is used as the packet class unconditionally. 834If one argument is specified, it is used as the packet class unconditionally.
867If two values are specified, the first is automatically selected for 835If two values are specified, the first is automatically selected for
868interactive sessions and the second for non-interactive sessions. 836interactive sessions and the second for non-interactive sessions.
869The default is 837The default is
870.Dq lowdelay 838.Cm lowdelay
871for interactive sessions and 839for interactive sessions and
872.Dq throughput 840.Cm throughput
873for non-interactive sessions. 841for non-interactive sessions.
874.It Cm KbdInteractiveAuthentication 842.It Cm KbdInteractiveAuthentication
875Specifies whether to allow keyboard-interactive authentication. 843Specifies whether to allow keyboard-interactive authentication.
876The argument to this keyword must be 844The argument to this keyword must be
877.Dq yes 845.Cm yes
878or 846or
879.Dq no . 847.Cm no .
880The default is to use whatever value 848The default is to use whatever value
881.Cm ChallengeResponseAuthentication 849.Cm ChallengeResponseAuthentication
882is set to 850is set to
883(by default 851(by default
884.Dq yes ) . 852.Cm yes ) .
885.It Cm KerberosAuthentication 853.It Cm KerberosAuthentication
886Specifies whether the password provided by the user for 854Specifies whether the password provided by the user for
887.Cm PasswordAuthentication 855.Cm PasswordAuthentication
@@ -889,24 +857,24 @@ will be validated through the Kerberos KDC.
889To use this option, the server needs a 857To use this option, the server needs a
890Kerberos servtab which allows the verification of the KDC's identity. 858Kerberos servtab which allows the verification of the KDC's identity.
891The default is 859The default is
892.Dq no . 860.Cm no .
893.It Cm KerberosGetAFSToken 861.It Cm KerberosGetAFSToken
894If AFS is active and the user has a Kerberos 5 TGT, attempt to acquire 862If AFS is active and the user has a Kerberos 5 TGT, attempt to acquire
895an AFS token before accessing the user's home directory. 863an AFS token before accessing the user's home directory.
896The default is 864The default is
897.Dq no . 865.Cm no .
898.It Cm KerberosOrLocalPasswd 866.It Cm KerberosOrLocalPasswd
899If password authentication through Kerberos fails then 867If password authentication through Kerberos fails then
900the password will be validated via any additional local mechanism 868the password will be validated via any additional local mechanism
901such as 869such as
902.Pa /etc/passwd . 870.Pa /etc/passwd .
903The default is 871The default is
904.Dq yes . 872.Cm yes .
905.It Cm KerberosTicketCleanup 873.It Cm KerberosTicketCleanup
906Specifies whether to automatically destroy the user's ticket cache 874Specifies whether to automatically destroy the user's ticket cache
907file on logout. 875file on logout.
908The default is 876The default is
909.Dq yes . 877.Cm yes .
910.It Cm KexAlgorithms 878.It Cm KexAlgorithms
911Specifies the available KEX (Key Exchange) algorithms. 879Specifies the available KEX (Key Exchange) algorithms.
912Multiple algorithms must be comma-separated. 880Multiple algorithms must be comma-separated.
@@ -918,6 +886,8 @@ The supported algorithms are:
918.Pp 886.Pp
919.Bl -item -compact -offset indent 887.Bl -item -compact -offset indent
920.It 888.It
889curve25519-sha256
890.It
921curve25519-sha256@libssh.org 891curve25519-sha256@libssh.org
922.It 892.It
923diffie-hellman-group1-sha1 893diffie-hellman-group1-sha1
@@ -937,27 +907,14 @@ ecdh-sha2-nistp521
937.Pp 907.Pp
938The default is: 908The default is:
939.Bd -literal -offset indent 909.Bd -literal -offset indent
940curve25519-sha256@libssh.org, 910curve25519-sha256,curve25519-sha256@libssh.org,
941ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 911ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
942diffie-hellman-group-exchange-sha256, 912diffie-hellman-group-exchange-sha256,
943diffie-hellman-group14-sha1 913diffie-hellman-group14-sha1
944.Ed 914.Ed
945.Pp 915.Pp
946The list of available key exchange algorithms may also be obtained using the 916The list of available key exchange algorithms may also be obtained using
947.Fl Q 917.Qq ssh -Q kex .
948option of
949.Xr ssh 1
950with an argument of
951.Dq kex .
952.It Cm KeyRegenerationInterval
953In protocol version 1, the ephemeral server key is automatically regenerated
954after this many seconds (if it has been used).
955The purpose of regeneration is to prevent
956decrypting captured sessions by later breaking into the machine and
957stealing the keys.
958The key is never stored anywhere.
959If the value is 0, the key is never regenerated.
960The default is 3600 (seconds).
961.It Cm ListenAddress 918.It Cm ListenAddress
962Specifies the local addresses 919Specifies the local addresses
963.Xr sshd 8 920.Xr sshd 8
@@ -1017,7 +974,7 @@ character, then the specified algorithms will be appended to the default set
1017instead of replacing them. 974instead of replacing them.
1018.Pp 975.Pp
1019The algorithms that contain 976The algorithms that contain
1020.Dq -etm 977.Qq -etm
1021calculate the MAC after encryption (encrypt-then-mac). 978calculate the MAC after encryption (encrypt-then-mac).
1022These are considered safer and their use recommended. 979These are considered safer and their use recommended.
1023The supported MACs are: 980The supported MACs are:
@@ -1070,12 +1027,8 @@ umac-64@openssh.com,umac-128@openssh.com,
1070hmac-sha2-256,hmac-sha2-512,hmac-sha1 1027hmac-sha2-256,hmac-sha2-512,hmac-sha1
1071.Ed 1028.Ed
1072.Pp 1029.Pp
1073The list of available MAC algorithms may also be obtained using the 1030The list of available MAC algorithms may also be obtained using
1074.Fl Q 1031.Qq ssh -Q mac .
1075option of
1076.Xr ssh 1
1077with an argument of
1078.Dq mac .
1079.It Cm Match 1032.It Cm Match
1080Introduces a conditional block. 1033Introduces a conditional block.
1081If all of the criteria on the 1034If all of the criteria on the
@@ -1104,24 +1057,19 @@ and
1104.Cm Address . 1057.Cm Address .
1105The match patterns may consist of single entries or comma-separated 1058The match patterns may consist of single entries or comma-separated
1106lists and may use the wildcard and negation operators described in the 1059lists and may use the wildcard and negation operators described in the
1107PATTERNS section of 1060.Sx PATTERNS
1061section of
1108.Xr ssh_config 5 . 1062.Xr ssh_config 5 .
1109.Pp 1063.Pp
1110The patterns in an 1064The patterns in an
1111.Cm Address 1065.Cm Address
1112criteria may additionally contain addresses to match in CIDR 1066criteria may additionally contain addresses to match in CIDR
1113address/masklen format, e.g.\& 1067address/masklen format,
1114.Dq 192.0.2.0/24 1068such as 192.0.2.0/24 or 2001:db8::/32.
1115or
1116.Dq 3ffe:ffff::/32 .
1117Note that the mask length provided must be consistent with the address - 1069Note that the mask length provided must be consistent with the address -
1118it is an error to specify a mask length that is too long for the address 1070it is an error to specify a mask length that is too long for the address
1119or one with bits set in this host portion of the address. 1071or one with bits set in this host portion of the address.
1120For example, 1072For example, 192.0.2.0/33 and 192.0.2.0/8, respectively.
1121.Dq 192.0.2.0/33
1122and
1123.Dq 192.0.2.0/8
1124respectively.
1125.Pp 1073.Pp
1126Only a subset of keywords may be used on the lines following a 1074Only a subset of keywords may be used on the lines following a
1127.Cm Match 1075.Cm Match
@@ -1142,6 +1090,8 @@ Available keywords are
1142.Cm AuthorizedPrincipalsFile , 1090.Cm AuthorizedPrincipalsFile ,
1143.Cm Banner , 1091.Cm Banner ,
1144.Cm ChrootDirectory , 1092.Cm ChrootDirectory ,
1093.Cm ClientAliveCountMax ,
1094.Cm ClientAliveInterval ,
1145.Cm DenyGroups , 1095.Cm DenyGroups ,
1146.Cm DenyUsers , 1096.Cm DenyUsers ,
1147.Cm ForceCommand , 1097.Cm ForceCommand ,
@@ -1166,8 +1116,6 @@ Available keywords are
1166.Cm PubkeyAuthentication , 1116.Cm PubkeyAuthentication ,
1167.Cm RekeyLimit , 1117.Cm RekeyLimit ,
1168.Cm RevokedKeys , 1118.Cm RevokedKeys ,
1169.Cm RhostsRSAAuthentication ,
1170.Cm RSAAuthentication ,
1171.Cm StreamLocalBindMask , 1119.Cm StreamLocalBindMask ,
1172.Cm StreamLocalBindUnlink , 1120.Cm StreamLocalBindUnlink ,
1173.Cm TrustedUserCAKeys , 1121.Cm TrustedUserCAKeys ,
@@ -1202,29 +1150,21 @@ The default is 10:30:100.
1202.Pp 1150.Pp
1203Alternatively, random early drop can be enabled by specifying 1151Alternatively, random early drop can be enabled by specifying
1204the three colon separated values 1152the three colon separated values
1205.Dq start:rate:full 1153start:rate:full (e.g. "10:30:60").
1206(e.g. "10:30:60").
1207.Xr sshd 8 1154.Xr sshd 8
1208will refuse connection attempts with a probability of 1155will refuse connection attempts with a probability of rate/100 (30%)
1209.Dq rate/100 1156if there are currently start (10) unauthenticated connections.
1210(30%)
1211if there are currently
1212.Dq start
1213(10)
1214unauthenticated connections.
1215The probability increases linearly and all connection attempts 1157The probability increases linearly and all connection attempts
1216are refused if the number of unauthenticated connections reaches 1158are refused if the number of unauthenticated connections reaches full (60).
1217.Dq full
1218(60).
1219.It Cm PasswordAuthentication 1159.It Cm PasswordAuthentication
1220Specifies whether password authentication is allowed. 1160Specifies whether password authentication is allowed.
1221The default is 1161The default is
1222.Dq yes . 1162.Cm yes .
1223.It Cm PermitEmptyPasswords 1163.It Cm PermitEmptyPasswords
1224When password authentication is allowed, it specifies whether the 1164When password authentication is allowed, it specifies whether the
1225server allows login to accounts with empty password strings. 1165server allows login to accounts with empty password strings.
1226The default is 1166The default is
1227.Dq no . 1167.Cm no .
1228.It Cm PermitOpen 1168.It Cm PermitOpen
1229Specifies the destinations to which TCP port forwarding is permitted. 1169Specifies the destinations to which TCP port forwarding is permitted.
1230The forwarding specification must be one of the following forms: 1170The forwarding specification must be one of the following forms:
@@ -1249,36 +1189,36 @@ The forwarding specification must be one of the following forms:
1249.Pp 1189.Pp
1250Multiple forwards may be specified by separating them with whitespace. 1190Multiple forwards may be specified by separating them with whitespace.
1251An argument of 1191An argument of
1252.Dq any 1192.Cm any
1253can be used to remove all restrictions and permit any forwarding requests. 1193can be used to remove all restrictions and permit any forwarding requests.
1254An argument of 1194An argument of
1255.Dq none 1195.Cm none
1256can be used to prohibit all forwarding requests. 1196can be used to prohibit all forwarding requests.
1257The wildcard 1197The wildcard
1258.Dq * 1198.Sq *
1259can be used for host or port to allow all hosts or ports, respectively. 1199can be used for host or port to allow all hosts or ports, respectively.
1260By default all port forwarding requests are permitted. 1200By default all port forwarding requests are permitted.
1261.It Cm PermitRootLogin 1201.It Cm PermitRootLogin
1262Specifies whether root can log in using 1202Specifies whether root can log in using
1263.Xr ssh 1 . 1203.Xr ssh 1 .
1264The argument must be 1204The argument must be
1265.Dq yes , 1205.Cm yes ,
1266.Dq prohibit-password , 1206.Cm prohibit-password ,
1267.Dq without-password , 1207.Cm without-password ,
1268.Dq forced-commands-only , 1208.Cm forced-commands-only ,
1269or 1209or
1270.Dq no . 1210.Cm no .
1271The default is 1211The default is
1272.Dq prohibit-password . 1212.Cm prohibit-password .
1273.Pp 1213.Pp
1274If this option is set to 1214If this option is set to
1275.Dq prohibit-password 1215.Cm prohibit-password
1276or 1216or
1277.Dq without-password , 1217.Cm without-password ,
1278password and keyboard-interactive authentication are disabled for root. 1218password and keyboard-interactive authentication are disabled for root.
1279.Pp 1219.Pp
1280If this option is set to 1220If this option is set to
1281.Dq forced-commands-only , 1221.Cm forced-commands-only ,
1282root login with public key authentication will be allowed, 1222root login with public key authentication will be allowed,
1283but only if the 1223but only if the
1284.Ar command 1224.Ar command
@@ -1288,37 +1228,37 @@ normally not allowed).
1288All other authentication methods are disabled for root. 1228All other authentication methods are disabled for root.
1289.Pp 1229.Pp
1290If this option is set to 1230If this option is set to
1291.Dq no , 1231.Cm no ,
1292root is not allowed to log in. 1232root is not allowed to log in.
1233.It Cm PermitTTY
1234Specifies whether
1235.Xr pty 4
1236allocation is permitted.
1237The default is
1238.Cm yes .
1293.It Cm PermitTunnel 1239.It Cm PermitTunnel
1294Specifies whether 1240Specifies whether
1295.Xr tun 4 1241.Xr tun 4
1296device forwarding is allowed. 1242device forwarding is allowed.
1297The argument must be 1243The argument must be
1298.Dq yes , 1244.Cm yes ,
1299.Dq point-to-point 1245.Cm point-to-point
1300(layer 3), 1246(layer 3),
1301.Dq ethernet 1247.Cm ethernet
1302(layer 2), or 1248(layer 2), or
1303.Dq no . 1249.Cm no .
1304Specifying 1250Specifying
1305.Dq yes 1251.Cm yes
1306permits both 1252permits both
1307.Dq point-to-point 1253.Cm point-to-point
1308and 1254and
1309.Dq ethernet . 1255.Cm ethernet .
1310The default is 1256The default is
1311.Dq no . 1257.Cm no .
1312.Pp 1258.Pp
1313Independent of this setting, the permissions of the selected 1259Independent of this setting, the permissions of the selected
1314.Xr tun 4 1260.Xr tun 4
1315device must allow access to the user. 1261device must allow access to the user.
1316.It Cm PermitTTY
1317Specifies whether
1318.Xr pty 4
1319allocation is permitted.
1320The default is
1321.Dq yes .
1322.It Cm PermitUserEnvironment 1262.It Cm PermitUserEnvironment
1323Specifies whether 1263Specifies whether
1324.Pa ~/.ssh/environment 1264.Pa ~/.ssh/environment
@@ -1329,7 +1269,7 @@ options in
1329are processed by 1269are processed by
1330.Xr sshd 8 . 1270.Xr sshd 8 .
1331The default is 1271The default is
1332.Dq no . 1272.Cm no .
1333Enabling environment processing may enable users to bypass access 1273Enabling environment processing may enable users to bypass access
1334restrictions in some configurations using mechanisms such as 1274restrictions in some configurations using mechanisms such as
1335.Ev LD_PRELOAD . 1275.Ev LD_PRELOAD .
@@ -1338,11 +1278,11 @@ Specifies whether any
1338.Pa ~/.ssh/rc 1278.Pa ~/.ssh/rc
1339file is executed. 1279file is executed.
1340The default is 1280The default is
1341.Dq yes . 1281.Cm yes .
1342.It Cm PidFile 1282.It Cm PidFile
1343Specifies the file that contains the process ID of the 1283Specifies the file that contains the process ID of the
1344SSH daemon, or 1284SSH daemon, or
1345.Dq none 1285.Cm none
1346to not write one. 1286to not write one.
1347The default is 1287The default is
1348.Pa /var/run/sshd.pid . 1288.Pa /var/run/sshd.pid .
@@ -1360,7 +1300,7 @@ Specifies whether
1360should print the date and time of the last user login when a user logs 1300should print the date and time of the last user login when a user logs
1361in interactively. 1301in interactively.
1362The default is 1302The default is
1363.Dq yes . 1303.Cm yes .
1364.It Cm PrintMotd 1304.It Cm PrintMotd
1365Specifies whether 1305Specifies whether
1366.Xr sshd 8 1306.Xr sshd 8
@@ -1371,29 +1311,7 @@ when a user logs in interactively.
1371.Pa /etc/profile , 1311.Pa /etc/profile ,
1372or equivalent.) 1312or equivalent.)
1373The default is 1313The default is
1374.Dq yes . 1314.Cm yes .
1375.It Cm Protocol
1376Specifies the protocol versions
1377.Xr sshd 8
1378supports.
1379The possible values are
1380.Sq 1
1381and
1382.Sq 2 .
1383Multiple versions must be comma-separated.
1384The default is
1385.Sq 2 .
1386Protocol 1 suffers from a number of cryptographic weaknesses and should
1387not be used.
1388It is only offered to support legacy devices.
1389.Pp
1390Note that the order of the protocol list does not indicate preference,
1391because the client selects among multiple protocol versions offered
1392by the server.
1393Specifying
1394.Dq 2,1
1395is identical to
1396.Dq 1,2 .
1397.It Cm PubkeyAcceptedKeyTypes 1315.It Cm PubkeyAcceptedKeyTypes
1398Specifies the key types that will be accepted for public key authentication 1316Specifies the key types that will be accepted for public key authentication
1399as a comma-separated pattern list. 1317as a comma-separated pattern list.
@@ -1412,15 +1330,12 @@ ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
1412ssh-ed25519,ssh-rsa 1330ssh-ed25519,ssh-rsa
1413.Ed 1331.Ed
1414.Pp 1332.Pp
1415The 1333The list of available key types may also be obtained using
1416.Fl Q 1334.Qq ssh -Q key .
1417option of
1418.Xr ssh 1
1419may be used to list supported key types.
1420.It Cm PubkeyAuthentication 1335.It Cm PubkeyAuthentication
1421Specifies whether public key authentication is allowed. 1336Specifies whether public key authentication is allowed.
1422The default is 1337The default is
1423.Dq yes . 1338.Cm yes .
1424.It Cm RekeyLimit 1339.It Cm RekeyLimit
1425Specifies the maximum amount of data that may be transmitted before the 1340Specifies the maximum amount of data that may be transmitted before the
1426session key is renegotiated, optionally followed a maximum amount of 1341session key is renegotiated, optionally followed a maximum amount of
@@ -1443,12 +1358,12 @@ section.
1443The default value for 1358The default value for
1444.Cm RekeyLimit 1359.Cm RekeyLimit
1445is 1360is
1446.Dq default none , 1361.Cm default none ,
1447which means that rekeying is performed after the cipher's default amount 1362which means that rekeying is performed after the cipher's default amount
1448of data has been sent or received and no time based rekeying is done. 1363of data has been sent or received and no time based rekeying is done.
1449.It Cm RevokedKeys 1364.It Cm RevokedKeys
1450Specifies revoked public keys file, or 1365Specifies revoked public keys file, or
1451.Dq none 1366.Cm none
1452to not use one. 1367to not use one.
1453Keys listed in this file will be refused for public key authentication. 1368Keys listed in this file will be refused for public key authentication.
1454Note that if this file is not readable, then public key authentication will 1369Note that if this file is not readable, then public key authentication will
@@ -1458,20 +1373,6 @@ an OpenSSH Key Revocation List (KRL) as generated by
1458.Xr ssh-keygen 1 . 1373.Xr ssh-keygen 1 .
1459For more information on KRLs, see the KEY REVOCATION LISTS section in 1374For more information on KRLs, see the KEY REVOCATION LISTS section in
1460.Xr ssh-keygen 1 . 1375.Xr ssh-keygen 1 .
1461.It Cm RhostsRSAAuthentication
1462Specifies whether rhosts or /etc/hosts.equiv authentication together
1463with successful RSA host authentication is allowed.
1464The default is
1465.Dq no .
1466This option applies to protocol version 1 only.
1467.It Cm RSAAuthentication
1468Specifies whether pure RSA authentication is allowed.
1469The default is
1470.Dq yes .
1471This option applies to protocol version 1 only.
1472.It Cm ServerKeyBits
1473Defines the number of bits in the ephemeral protocol version 1 server key.
1474The default and minimum value is 1024.
1475.It Cm StreamLocalBindMask 1376.It Cm StreamLocalBindMask
1476Sets the octal file creation mode mask 1377Sets the octal file creation mode mask
1477.Pq umask 1378.Pq umask
@@ -1494,11 +1395,11 @@ will be unable to forward the port to the Unix-domain socket file.
1494This option is only used for port forwarding to a Unix-domain socket file. 1395This option is only used for port forwarding to a Unix-domain socket file.
1495.Pp 1396.Pp
1496The argument must be 1397The argument must be
1497.Dq yes 1398.Cm yes
1498or 1399or
1499.Dq no . 1400.Cm no .
1500The default is 1401The default is
1501.Dq no . 1402.Cm no .
1502.It Cm StrictModes 1403.It Cm StrictModes
1503Specifies whether 1404Specifies whether
1504.Xr sshd 8 1405.Xr sshd 8
@@ -1507,7 +1408,7 @@ user's files and home directory before accepting login.
1507This is normally desirable because novices sometimes accidentally leave their 1408This is normally desirable because novices sometimes accidentally leave their
1508directory or files world-writable. 1409directory or files world-writable.
1509The default is 1410The default is
1510.Dq yes . 1411.Cm yes .
1511Note that this does not apply to 1412Note that this does not apply to
1512.Cm ChrootDirectory , 1413.Cm ChrootDirectory ,
1513whose permissions and ownership are checked unconditionally. 1414whose permissions and ownership are checked unconditionally.
@@ -1517,16 +1418,12 @@ Arguments should be a subsystem name and a command (with optional arguments)
1517to execute upon subsystem request. 1418to execute upon subsystem request.
1518.Pp 1419.Pp
1519The command 1420The command
1520.Xr sftp-server 8 1421.Cm sftp-server
1521implements the 1422implements the SFTP file transfer subsystem.
1522.Dq sftp
1523file transfer subsystem.
1524.Pp 1423.Pp
1525Alternately the name 1424Alternately the name
1526.Dq internal-sftp 1425.Cm internal-sftp
1527implements an in-process 1426implements an in-process SFTP server.
1528.Dq sftp
1529server.
1530This may simplify configurations using 1427This may simplify configurations using
1531.Cm ChrootDirectory 1428.Cm ChrootDirectory
1532to force a different filesystem root on clients. 1429to force a different filesystem root on clients.
@@ -1548,24 +1445,24 @@ connections will die if the route is down temporarily, and some people
1548find it annoying. 1445find it annoying.
1549On the other hand, if TCP keepalives are not sent, 1446On the other hand, if TCP keepalives are not sent,
1550sessions may hang indefinitely on the server, leaving 1447sessions may hang indefinitely on the server, leaving
1551.Dq ghost 1448.Qq ghost
1552users and consuming server resources. 1449users and consuming server resources.
1553.Pp 1450.Pp
1554The default is 1451The default is
1555.Dq yes 1452.Cm yes
1556(to send TCP keepalive messages), and the server will notice 1453(to send TCP keepalive messages), and the server will notice
1557if the network goes down or the client host crashes. 1454if the network goes down or the client host crashes.
1558This avoids infinitely hanging sessions. 1455This avoids infinitely hanging sessions.
1559.Pp 1456.Pp
1560To disable TCP keepalive messages, the value should be set to 1457To disable TCP keepalive messages, the value should be set to
1561.Dq no . 1458.Cm no .
1562.Pp 1459.Pp
1563This option was formerly called 1460This option was formerly called
1564.Cm KeepAlive . 1461.Cm KeepAlive .
1565.It Cm TrustedUserCAKeys 1462.It Cm TrustedUserCAKeys
1566Specifies a file containing public keys of certificate authorities that are 1463Specifies a file containing public keys of certificate authorities that are
1567trusted to sign user certificates for authentication, or 1464trusted to sign user certificates for authentication, or
1568.Dq none 1465.Cm none
1569to not use one. 1466to not use one.
1570Keys are listed one per line; empty lines and comments starting with 1467Keys are listed one per line; empty lines and comments starting with
1571.Ql # 1468.Ql #
@@ -1586,7 +1483,7 @@ the resolved host name for the remote IP address maps back to the
1586very same IP address. 1483very same IP address.
1587.Pp 1484.Pp
1588If this option is set to 1485If this option is set to
1589.Dq no 1486.Cm no
1590(the default) then only addresses and not host names may be used in 1487(the default) then only addresses and not host names may be used in
1591.Pa ~/.ssh/authorized_keys 1488.Pa ~/.ssh/authorized_keys
1592.Cm from 1489.Cm from
@@ -1595,29 +1492,10 @@ and
1595.Cm Match 1492.Cm Match
1596.Cm Host 1493.Cm Host
1597directives. 1494directives.
1598.It Cm UseLogin
1599Specifies whether
1600.Xr login 1
1601is used for interactive login sessions.
1602The default is
1603.Dq no .
1604Note that
1605.Xr login 1
1606is never used for remote command execution.
1607Note also, that if this is enabled,
1608.Cm X11Forwarding
1609will be disabled because
1610.Xr login 1
1611does not know how to handle
1612.Xr xauth 1
1613cookies.
1614If
1615.Cm UsePrivilegeSeparation
1616is specified, it will be disabled after authentication.
1617.It Cm UsePAM 1495.It Cm UsePAM
1618Enables the Pluggable Authentication Module interface. 1496Enables the Pluggable Authentication Module interface.
1619If set to 1497If set to
1620.Dq yes 1498.Cm yes
1621this will enable PAM authentication using 1499this will enable PAM authentication using
1622.Cm ChallengeResponseAuthentication 1500.Cm ChallengeResponseAuthentication
1623and 1501and
@@ -1637,7 +1515,7 @@ is enabled, you will not be able to run
1637.Xr sshd 8 1515.Xr sshd 8
1638as a non-root user. 1516as a non-root user.
1639The default is 1517The default is
1640.Dq no . 1518.Cm no .
1641.It Cm UsePrivilegeSeparation 1519.It Cm UsePrivilegeSeparation
1642Specifies whether 1520Specifies whether
1643.Xr sshd 8 1521.Xr sshd 8
@@ -1648,23 +1526,23 @@ the privilege of the authenticated user.
1648The goal of privilege separation is to prevent privilege 1526The goal of privilege separation is to prevent privilege
1649escalation by containing any corruption within the unprivileged processes. 1527escalation by containing any corruption within the unprivileged processes.
1650The argument must be 1528The argument must be
1651.Dq yes , 1529.Cm yes ,
1652.Dq no , 1530.Cm no ,
1653or 1531or
1654.Dq sandbox . 1532.Cm sandbox .
1655If 1533If
1656.Cm UsePrivilegeSeparation 1534.Cm UsePrivilegeSeparation
1657is set to 1535is set to
1658.Dq sandbox 1536.Cm sandbox
1659then the pre-authentication unprivileged process is subject to additional 1537then the pre-authentication unprivileged process is subject to additional
1660restrictions. 1538restrictions.
1661The default is 1539The default is
1662.Dq sandbox . 1540.Cm sandbox .
1663.It Cm VersionAddendum 1541.It Cm VersionAddendum
1664Optionally specifies additional text to append to the SSH protocol banner 1542Optionally specifies additional text to append to the SSH protocol banner
1665sent by the server upon connection. 1543sent by the server upon connection.
1666The default is 1544The default is
1667.Dq none . 1545.Cm none .
1668.It Cm X11DisplayOffset 1546.It Cm X11DisplayOffset
1669Specifies the first display number available for 1547Specifies the first display number available for
1670.Xr sshd 8 Ns 's 1548.Xr sshd 8 Ns 's
@@ -1674,18 +1552,18 @@ The default is 10.
1674.It Cm X11Forwarding 1552.It Cm X11Forwarding
1675Specifies whether X11 forwarding is permitted. 1553Specifies whether X11 forwarding is permitted.
1676The argument must be 1554The argument must be
1677.Dq yes 1555.Cm yes
1678or 1556or
1679.Dq no . 1557.Cm no .
1680The default is 1558The default is
1681.Dq no . 1559.Cm no .
1682.Pp 1560.Pp
1683When X11 forwarding is enabled, there may be additional exposure to 1561When X11 forwarding is enabled, there may be additional exposure to
1684the server and to client displays if the 1562the server and to client displays if the
1685.Xr sshd 8 1563.Xr sshd 8
1686proxy display is configured to listen on the wildcard address (see 1564proxy display is configured to listen on the wildcard address (see
1687.Cm X11UseLocalhost 1565.Cm X11UseLocalhost ) ,
1688below), though this is not the default. 1566though this is not the default.
1689Additionally, the authentication spoofing and authentication data 1567Additionally, the authentication spoofing and authentication data
1690verification and substitution occur on the client side. 1568verification and substitution occur on the client side.
1691The security risk of using X11 forwarding is that the client's X11 1569The security risk of using X11 forwarding is that the client's X11
@@ -1697,14 +1575,11 @@ in
1697A system administrator may have a stance in which they want to 1575A system administrator may have a stance in which they want to
1698protect clients that may expose themselves to attack by unwittingly 1576protect clients that may expose themselves to attack by unwittingly
1699requesting X11 forwarding, which can warrant a 1577requesting X11 forwarding, which can warrant a
1700.Dq no 1578.Cm no
1701setting. 1579setting.
1702.Pp 1580.Pp
1703Note that disabling X11 forwarding does not prevent users from 1581Note that disabling X11 forwarding does not prevent users from
1704forwarding X11 traffic, as users can always install their own forwarders. 1582forwarding X11 traffic, as users can always install their own forwarders.
1705X11 forwarding is automatically disabled if
1706.Cm UseLogin
1707is enabled.
1708.It Cm X11UseLocalhost 1583.It Cm X11UseLocalhost
1709Specifies whether 1584Specifies whether
1710.Xr sshd 8 1585.Xr sshd 8
@@ -1715,26 +1590,26 @@ sshd binds the forwarding server to the loopback address and sets the
1715hostname part of the 1590hostname part of the
1716.Ev DISPLAY 1591.Ev DISPLAY
1717environment variable to 1592environment variable to
1718.Dq localhost . 1593.Cm localhost .
1719This prevents remote hosts from connecting to the proxy display. 1594This prevents remote hosts from connecting to the proxy display.
1720However, some older X11 clients may not function with this 1595However, some older X11 clients may not function with this
1721configuration. 1596configuration.
1722.Cm X11UseLocalhost 1597.Cm X11UseLocalhost
1723may be set to 1598may be set to
1724.Dq no 1599.Cm no
1725to specify that the forwarding server should be bound to the wildcard 1600to specify that the forwarding server should be bound to the wildcard
1726address. 1601address.
1727The argument must be 1602The argument must be
1728.Dq yes 1603.Cm yes
1729or 1604or
1730.Dq no . 1605.Cm no .
1731The default is 1606The default is
1732.Dq yes . 1607.Cm yes .
1733.It Cm XAuthLocation 1608.It Cm XAuthLocation
1734Specifies the full pathname of the 1609Specifies the full pathname of the
1735.Xr xauth 1 1610.Xr xauth 1
1736program, or 1611program, or
1737.Dq none 1612.Cm none
1738to not use one. 1613to not use one.
1739The default is 1614The default is
1740.Pa /usr/X11R6/bin/xauth . 1615.Pa /usr/X11R6/bin/xauth .
@@ -1780,6 +1655,50 @@ Time format examples:
1780.It 1h30m 1655.It 1h30m
17811 hour 30 minutes (90 minutes) 16561 hour 30 minutes (90 minutes)
1782.El 1657.El
1658.Sh TOKENS
1659Arguments to some keywords can make use of tokens,
1660which are expanded at runtime:
1661.Pp
1662.Bl -tag -width XXXX -offset indent -compact
1663.It %%
1664A literal
1665.Sq % .
1666.It %F
1667The fingerprint of the CA key.
1668.It %f
1669The fingerprint of the key or certificate.
1670.It %h
1671The home directory of the user.
1672.It %i
1673The key ID in the certificate.
1674.It %K
1675The base64-encoded CA key.
1676.It %k
1677The base64-encoded key or certificate for authentication.
1678.It %s
1679The serial number of the certificate.
1680.It \&%T
1681The type of the CA key.
1682.It %t
1683The key or certificate type.
1684.It %u
1685The username.
1686.El
1687.Pp
1688.Cm AuthorizedKeysCommand
1689accepts the tokens %%, %f, %h, %t, and %u.
1690.Pp
1691.Cm AuthorizedKeysFile
1692accepts the tokens %%, %h, and %u.
1693.Pp
1694.Cm AuthorizedPrincipalsCommand
1695accepts the tokens %%, %F, %f, %K, %k, %h, %i, %s, %T, %t, and %u.
1696.Pp
1697.Cm AuthorizedPrincipalsFile
1698accepts the tokens %%, %h, and %u.
1699.Pp
1700.Cm ChrootDirectory
1701accepts the tokens %%, %h, and %u.
1783.Sh FILES 1702.Sh FILES
1784.Bl -tag -width Ds 1703.Bl -tag -width Ds
1785.It Pa /etc/ssh/sshd_config 1704.It Pa /etc/ssh/sshd_config
@@ -1789,15 +1708,22 @@ This file should be writable by root only, but it is recommended
1789(though not necessary) that it be world-readable. 1708(though not necessary) that it be world-readable.
1790.El 1709.El
1791.Sh SEE ALSO 1710.Sh SEE ALSO
1711.Xr sftp-server 8 ,
1792.Xr sshd 8 1712.Xr sshd 8
1793.Sh AUTHORS 1713.Sh AUTHORS
1714.An -nosplit
1794OpenSSH is a derivative of the original and free 1715OpenSSH is a derivative of the original and free
1795ssh 1.2.12 release by Tatu Ylonen. 1716ssh 1.2.12 release by
1796Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, 1717.An Tatu Ylonen .
1797Theo de Raadt and Dug Song 1718.An Aaron Campbell , Bob Beck , Markus Friedl , Niels Provos ,
1719.An Theo de Raadt
1720and
1721.An Dug Song
1798removed many bugs, re-added newer features and 1722removed many bugs, re-added newer features and
1799created OpenSSH. 1723created OpenSSH.
1800Markus Friedl contributed the support for SSH 1724.An Markus Friedl
1801protocol versions 1.5 and 2.0. 1725contributed the support for SSH protocol versions 1.5 and 2.0.
1802Niels Provos and Markus Friedl contributed support 1726.An Niels Provos
1803for privilege separation. 1727and
1728.An Markus Friedl
1729contributed support for privilege separation.
diff --git a/sshkey.c b/sshkey.c
index 558bbbef6..377d72fa9 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.c,v 1.35 2016/06/19 07:48:02 djm Exp $ */ 1/* $OpenBSD: sshkey.c,v 1.41 2016/10/24 01:09:17 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved. 4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -27,7 +27,6 @@
27 27
28#include "includes.h" 28#include "includes.h"
29 29
30#include <sys/param.h> /* MIN MAX */
31#include <sys/types.h> 30#include <sys/types.h>
32#include <netinet/in.h> 31#include <netinet/in.h>
33 32
@@ -197,7 +196,7 @@ sshkey_ecdsa_nid_from_name(const char *name)
197} 196}
198 197
199char * 198char *
200key_alg_list(int certs_only, int plain_only) 199sshkey_alg_list(int certs_only, int plain_only, char sep)
201{ 200{
202 char *tmp, *ret = NULL; 201 char *tmp, *ret = NULL;
203 size_t nlen, rlen = 0; 202 size_t nlen, rlen = 0;
@@ -209,7 +208,7 @@ key_alg_list(int certs_only, int plain_only)
209 if ((certs_only && !kt->cert) || (plain_only && kt->cert)) 208 if ((certs_only && !kt->cert) || (plain_only && kt->cert))
210 continue; 209 continue;
211 if (ret != NULL) 210 if (ret != NULL)
212 ret[rlen++] = '\n'; 211 ret[rlen++] = sep;
213 nlen = strlen(kt->name); 212 nlen = strlen(kt->name);
214 if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) { 213 if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
215 free(ret); 214 free(ret);
@@ -514,7 +513,6 @@ sshkey_new(int type)
514 default: 513 default:
515 free(k); 514 free(k);
516 return NULL; 515 return NULL;
517 break;
518 } 516 }
519 517
520 if (sshkey_is_cert(k)) { 518 if (sshkey_is_cert(k)) {
@@ -889,9 +887,12 @@ sshkey_fingerprint_raw(const struct sshkey *k, int dgst_alg,
889 int nlen = BN_num_bytes(k->rsa->n); 887 int nlen = BN_num_bytes(k->rsa->n);
890 int elen = BN_num_bytes(k->rsa->e); 888 int elen = BN_num_bytes(k->rsa->e);
891 889
890 if (nlen < 0 || elen < 0 || nlen >= INT_MAX - elen) {
891 r = SSH_ERR_INVALID_FORMAT;
892 goto out;
893 }
892 blob_len = nlen + elen; 894 blob_len = nlen + elen;
893 if (nlen >= INT_MAX - elen || 895 if ((blob = malloc(blob_len)) == NULL) {
894 (blob = malloc(blob_len)) == NULL) {
895 r = SSH_ERR_ALLOC_FAIL; 896 r = SSH_ERR_ALLOC_FAIL;
896 goto out; 897 goto out;
897 } 898 }
@@ -1083,10 +1084,10 @@ fingerprint_randomart(const char *alg, u_char *dgst_raw, size_t dgst_raw_len,
1083 y += (input & 0x2) ? 1 : -1; 1084 y += (input & 0x2) ? 1 : -1;
1084 1085
1085 /* assure we are still in bounds */ 1086 /* assure we are still in bounds */
1086 x = MAX(x, 0); 1087 x = MAXIMUM(x, 0);
1087 y = MAX(y, 0); 1088 y = MAXIMUM(y, 0);
1088 x = MIN(x, FLDSIZE_X - 1); 1089 x = MINIMUM(x, FLDSIZE_X - 1);
1089 y = MIN(y, FLDSIZE_Y - 1); 1090 y = MINIMUM(y, FLDSIZE_Y - 1);
1090 1091
1091 /* augment the field */ 1092 /* augment the field */
1092 if (field[x][y] < len - 2) 1093 if (field[x][y] < len - 2)
@@ -1127,7 +1128,7 @@ fingerprint_randomart(const char *alg, u_char *dgst_raw, size_t dgst_raw_len,
1127 for (y = 0; y < FLDSIZE_Y; y++) { 1128 for (y = 0; y < FLDSIZE_Y; y++) {
1128 *p++ = '|'; 1129 *p++ = '|';
1129 for (x = 0; x < FLDSIZE_X; x++) 1130 for (x = 0; x < FLDSIZE_X; x++)
1130 *p++ = augmentation_string[MIN(field[x][y], len)]; 1131 *p++ = augmentation_string[MINIMUM(field[x][y], len)];
1131 *p++ = '|'; 1132 *p++ = '|';
1132 *p++ = '\n'; 1133 *p++ = '\n';
1133 } 1134 }
@@ -2863,6 +2864,14 @@ sshkey_ec_validate_public(const EC_GROUP *group, const EC_POINT *public)
2863 BIGNUM *order, *x, *y, *tmp; 2864 BIGNUM *order, *x, *y, *tmp;
2864 int ret = SSH_ERR_KEY_INVALID_EC_VALUE; 2865 int ret = SSH_ERR_KEY_INVALID_EC_VALUE;
2865 2866
2867 /*
2868 * NB. This assumes OpenSSL has already verified that the public
2869 * point lies on the curve. This is done by EC_POINT_oct2point()
2870 * implicitly calling EC_POINT_is_on_curve(). If this code is ever
2871 * reachable with public points not unmarshalled using
2872 * EC_POINT_oct2point then the caller will need to explicitly check.
2873 */
2874
2866 if ((bnctx = BN_CTX_new()) == NULL) 2875 if ((bnctx = BN_CTX_new()) == NULL)
2867 return SSH_ERR_ALLOC_FAIL; 2876 return SSH_ERR_ALLOC_FAIL;
2868 BN_CTX_start(bnctx); 2877 BN_CTX_start(bnctx);
@@ -3030,13 +3039,11 @@ sshkey_private_to_blob2(const struct sshkey *prv, struct sshbuf *blob,
3030 size_t i, pubkeylen, keylen, ivlen, blocksize, authlen; 3039 size_t i, pubkeylen, keylen, ivlen, blocksize, authlen;
3031 u_int check; 3040 u_int check;
3032 int r = SSH_ERR_INTERNAL_ERROR; 3041 int r = SSH_ERR_INTERNAL_ERROR;
3033 struct sshcipher_ctx ciphercontext; 3042 struct sshcipher_ctx *ciphercontext = NULL;
3034 const struct sshcipher *cipher; 3043 const struct sshcipher *cipher;
3035 const char *kdfname = KDFNAME; 3044 const char *kdfname = KDFNAME;
3036 struct sshbuf *encoded = NULL, *encrypted = NULL, *kdf = NULL; 3045 struct sshbuf *encoded = NULL, *encrypted = NULL, *kdf = NULL;
3037 3046
3038 memset(&ciphercontext, 0, sizeof(ciphercontext));
3039
3040 if (rounds <= 0) 3047 if (rounds <= 0)
3041 rounds = DEFAULT_ROUNDS; 3048 rounds = DEFAULT_ROUNDS;
3042 if (passphrase == NULL || !strlen(passphrase)) { 3049 if (passphrase == NULL || !strlen(passphrase)) {
@@ -3123,7 +3130,7 @@ sshkey_private_to_blob2(const struct sshkey *prv, struct sshbuf *blob,
3123 if ((r = sshbuf_reserve(encoded, 3130 if ((r = sshbuf_reserve(encoded,
3124 sshbuf_len(encrypted) + authlen, &cp)) != 0) 3131 sshbuf_len(encrypted) + authlen, &cp)) != 0)
3125 goto out; 3132 goto out;
3126 if ((r = cipher_crypt(&ciphercontext, 0, cp, 3133 if ((r = cipher_crypt(ciphercontext, 0, cp,
3127 sshbuf_ptr(encrypted), sshbuf_len(encrypted), 0, authlen)) != 0) 3134 sshbuf_ptr(encrypted), sshbuf_len(encrypted), 0, authlen)) != 0)
3128 goto out; 3135 goto out;
3129 3136
@@ -3155,7 +3162,7 @@ sshkey_private_to_blob2(const struct sshkey *prv, struct sshbuf *blob,
3155 sshbuf_free(kdf); 3162 sshbuf_free(kdf);
3156 sshbuf_free(encoded); 3163 sshbuf_free(encoded);
3157 sshbuf_free(encrypted); 3164 sshbuf_free(encrypted);
3158 cipher_cleanup(&ciphercontext); 3165 cipher_free(ciphercontext);
3159 explicit_bzero(salt, sizeof(salt)); 3166 explicit_bzero(salt, sizeof(salt));
3160 if (key != NULL) { 3167 if (key != NULL) {
3161 explicit_bzero(key, keylen + ivlen); 3168 explicit_bzero(key, keylen + ivlen);
@@ -3184,12 +3191,11 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3184 size_t i, keylen = 0, ivlen = 0, authlen = 0, slen = 0; 3191 size_t i, keylen = 0, ivlen = 0, authlen = 0, slen = 0;
3185 struct sshbuf *encoded = NULL, *decoded = NULL; 3192 struct sshbuf *encoded = NULL, *decoded = NULL;
3186 struct sshbuf *kdf = NULL, *decrypted = NULL; 3193 struct sshbuf *kdf = NULL, *decrypted = NULL;
3187 struct sshcipher_ctx ciphercontext; 3194 struct sshcipher_ctx *ciphercontext = NULL;
3188 struct sshkey *k = NULL; 3195 struct sshkey *k = NULL;
3189 u_char *key = NULL, *salt = NULL, *dp, pad, last; 3196 u_char *key = NULL, *salt = NULL, *dp, pad, last;
3190 u_int blocksize, rounds, nkeys, encrypted_len, check1, check2; 3197 u_int blocksize, rounds, nkeys, encrypted_len, check1, check2;
3191 3198
3192 memset(&ciphercontext, 0, sizeof(ciphercontext));
3193 if (keyp != NULL) 3199 if (keyp != NULL)
3194 *keyp = NULL; 3200 *keyp = NULL;
3195 if (commentp != NULL) 3201 if (commentp != NULL)
@@ -3318,7 +3324,7 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3318 (r = cipher_init(&ciphercontext, cipher, key, keylen, 3324 (r = cipher_init(&ciphercontext, cipher, key, keylen,
3319 key + keylen, ivlen, 0)) != 0) 3325 key + keylen, ivlen, 0)) != 0)
3320 goto out; 3326 goto out;
3321 if ((r = cipher_crypt(&ciphercontext, 0, dp, sshbuf_ptr(decoded), 3327 if ((r = cipher_crypt(ciphercontext, 0, dp, sshbuf_ptr(decoded),
3322 encrypted_len, 0, authlen)) != 0) { 3328 encrypted_len, 0, authlen)) != 0) {
3323 /* an integrity error here indicates an incorrect passphrase */ 3329 /* an integrity error here indicates an incorrect passphrase */
3324 if (r == SSH_ERR_MAC_INVALID) 3330 if (r == SSH_ERR_MAC_INVALID)
@@ -3372,7 +3378,7 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3372 } 3378 }
3373 out: 3379 out:
3374 pad = 0; 3380 pad = 0;
3375 cipher_cleanup(&ciphercontext); 3381 cipher_free(ciphercontext);
3376 free(ciphername); 3382 free(ciphername);
3377 free(kdfname); 3383 free(kdfname);
3378 free(comment); 3384 free(comment);
@@ -3406,7 +3412,7 @@ sshkey_private_rsa1_to_blob(struct sshkey *key, struct sshbuf *blob,
3406 struct sshbuf *buffer = NULL, *encrypted = NULL; 3412 struct sshbuf *buffer = NULL, *encrypted = NULL;
3407 u_char buf[8]; 3413 u_char buf[8];
3408 int r, cipher_num; 3414 int r, cipher_num;
3409 struct sshcipher_ctx ciphercontext; 3415 struct sshcipher_ctx *ciphercontext = NULL;
3410 const struct sshcipher *cipher; 3416 const struct sshcipher *cipher;
3411 u_char *cp; 3417 u_char *cp;
3412 3418
@@ -3476,16 +3482,14 @@ sshkey_private_rsa1_to_blob(struct sshkey *key, struct sshbuf *blob,
3476 if ((r = cipher_set_key_string(&ciphercontext, cipher, passphrase, 3482 if ((r = cipher_set_key_string(&ciphercontext, cipher, passphrase,
3477 CIPHER_ENCRYPT)) != 0) 3483 CIPHER_ENCRYPT)) != 0)
3478 goto out; 3484 goto out;
3479 if ((r = cipher_crypt(&ciphercontext, 0, cp, 3485 if ((r = cipher_crypt(ciphercontext, 0, cp,
3480 sshbuf_ptr(buffer), sshbuf_len(buffer), 0, 0)) != 0) 3486 sshbuf_ptr(buffer), sshbuf_len(buffer), 0, 0)) != 0)
3481 goto out; 3487 goto out;
3482 if ((r = cipher_cleanup(&ciphercontext)) != 0)
3483 goto out;
3484 3488
3485 r = sshbuf_putb(blob, encrypted); 3489 r = sshbuf_putb(blob, encrypted);
3486 3490
3487 out: 3491 out:
3488 explicit_bzero(&ciphercontext, sizeof(ciphercontext)); 3492 cipher_free(ciphercontext);
3489 explicit_bzero(buf, sizeof(buf)); 3493 explicit_bzero(buf, sizeof(buf));
3490 sshbuf_free(buffer); 3494 sshbuf_free(buffer);
3491 sshbuf_free(encrypted); 3495 sshbuf_free(encrypted);
@@ -3655,7 +3659,7 @@ sshkey_parse_private_rsa1(struct sshbuf *blob, const char *passphrase,
3655 struct sshbuf *decrypted = NULL, *copy = NULL; 3659 struct sshbuf *decrypted = NULL, *copy = NULL;
3656 u_char *cp; 3660 u_char *cp;
3657 char *comment = NULL; 3661 char *comment = NULL;
3658 struct sshcipher_ctx ciphercontext; 3662 struct sshcipher_ctx *ciphercontext = NULL;
3659 const struct sshcipher *cipher; 3663 const struct sshcipher *cipher;
3660 struct sshkey *prv = NULL; 3664 struct sshkey *prv = NULL;
3661 3665
@@ -3713,12 +3717,8 @@ sshkey_parse_private_rsa1(struct sshbuf *blob, const char *passphrase,
3713 if ((r = cipher_set_key_string(&ciphercontext, cipher, passphrase, 3717 if ((r = cipher_set_key_string(&ciphercontext, cipher, passphrase,
3714 CIPHER_DECRYPT)) != 0) 3718 CIPHER_DECRYPT)) != 0)
3715 goto out; 3719 goto out;
3716 if ((r = cipher_crypt(&ciphercontext, 0, cp, 3720 if ((r = cipher_crypt(ciphercontext, 0, cp,
3717 sshbuf_ptr(copy), sshbuf_len(copy), 0, 0)) != 0) { 3721 sshbuf_ptr(copy), sshbuf_len(copy), 0, 0)) != 0)
3718 cipher_cleanup(&ciphercontext);
3719 goto out;
3720 }
3721 if ((r = cipher_cleanup(&ciphercontext)) != 0)
3722 goto out; 3722 goto out;
3723 3723
3724 if ((r = sshbuf_get_u16(decrypted, &check1)) != 0 || 3724 if ((r = sshbuf_get_u16(decrypted, &check1)) != 0 ||
@@ -3755,7 +3755,7 @@ sshkey_parse_private_rsa1(struct sshbuf *blob, const char *passphrase,
3755 comment = NULL; 3755 comment = NULL;
3756 } 3756 }
3757 out: 3757 out:
3758 explicit_bzero(&ciphercontext, sizeof(ciphercontext)); 3758 cipher_free(ciphercontext);
3759 free(comment); 3759 free(comment);
3760 sshkey_free(prv); 3760 sshkey_free(prv);
3761 sshbuf_free(copy); 3761 sshbuf_free(copy);
diff --git a/sshkey.h b/sshkey.h
index e0caa37a7..7eb2a1392 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.h,v 1.13 2016/05/02 09:36:42 djm Exp $ */ 1/* $OpenBSD: sshkey.h,v 1.14 2016/09/12 23:31:27 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -157,7 +157,7 @@ int sshkey_ec_validate_private(const EC_KEY *);
157const char *sshkey_ssh_name(const struct sshkey *); 157const char *sshkey_ssh_name(const struct sshkey *);
158const char *sshkey_ssh_name_plain(const struct sshkey *); 158const char *sshkey_ssh_name_plain(const struct sshkey *);
159int sshkey_names_valid2(const char *, int); 159int sshkey_names_valid2(const char *, int);
160char *key_alg_list(int, int); 160char *sshkey_alg_list(int, int, char);
161 161
162int sshkey_from_blob(const u_char *, size_t, struct sshkey **); 162int sshkey_from_blob(const u_char *, size_t, struct sshkey **);
163int sshkey_fromb(struct sshbuf *, struct sshkey **); 163int sshkey_fromb(struct sshbuf *, struct sshkey **);
diff --git a/sshpty.c b/sshpty.c
index e89efb74a..feb22b06b 100644
--- a/sshpty.c
+++ b/sshpty.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshpty.c,v 1.30 2015/07/30 23:09:15 djm Exp $ */ 1/* $OpenBSD: sshpty.c,v 1.31 2016/11/29 03:54:50 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -155,11 +155,11 @@ pty_make_controlling_tty(int *ttyfd, const char *tty)
155 error("SETPGRP %s",strerror(errno)); 155 error("SETPGRP %s",strerror(errno));
156#endif /* NEED_SETPGRP */ 156#endif /* NEED_SETPGRP */
157 fd = open(tty, O_RDWR); 157 fd = open(tty, O_RDWR);
158 if (fd < 0) { 158 if (fd < 0)
159 error("%.100s: %.100s", tty, strerror(errno)); 159 error("%.100s: %.100s", tty, strerror(errno));
160 } else { 160 else
161 close(fd); 161 close(fd);
162 } 162
163 /* Verify that we now have a controlling tty. */ 163 /* Verify that we now have a controlling tty. */
164 fd = open(_PATH_TTY, O_WRONLY); 164 fd = open(_PATH_TTY, O_WRONLY);
165 if (fd < 0) 165 if (fd < 0)
@@ -238,3 +238,17 @@ pty_setowner(struct passwd *pw, const char *tty, const char *role)
238 } 238 }
239 } 239 }
240} 240}
241
242/* Disconnect from the controlling tty. */
243void
244disconnect_controlling_tty(void)
245{
246#ifdef TIOCNOTTY
247 int fd;
248
249 if ((fd = open(_PATH_TTY, O_RDWR | O_NOCTTY)) >= 0) {
250 (void) ioctl(fd, TIOCNOTTY, NULL);
251 close(fd);
252 }
253#endif /* TIOCNOTTY */
254}
diff --git a/sshpty.h b/sshpty.h
index edf24365f..de7e000ae 100644
--- a/sshpty.h
+++ b/sshpty.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshpty.h,v 1.12 2010/01/09 05:04:24 djm Exp $ */ 1/* $OpenBSD: sshpty.h,v 1.13 2016/11/29 03:54:50 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -25,3 +25,4 @@ void pty_release(const char *);
25void pty_make_controlling_tty(int *, const char *); 25void pty_make_controlling_tty(int *, const char *);
26void pty_change_window_size(int, u_int, u_int, u_int, u_int); 26void pty_change_window_size(int, u_int, u_int, u_int, u_int);
27void pty_setowner(struct passwd *, const char *, const char *); 27void pty_setowner(struct passwd *, const char *, const char *);
28void disconnect_controlling_tty(void);
diff --git a/utf8.c b/utf8.c
index f563d3738..87fa9e89a 100644
--- a/utf8.c
+++ b/utf8.c
@@ -27,6 +27,7 @@
27# include <langinfo.h> 27# include <langinfo.h>
28#endif 28#endif
29#include <limits.h> 29#include <limits.h>
30#include <locale.h>
30#include <stdarg.h> 31#include <stdarg.h>
31#include <stdio.h> 32#include <stdio.h>
32#include <stdlib.h> 33#include <stdlib.h>
@@ -288,3 +289,44 @@ mprintf(const char *fmt, ...)
288 va_end(ap); 289 va_end(ap);
289 return ret; 290 return ret;
290} 291}
292
293/*
294 * Set up libc for multibyte output in the user's chosen locale.
295 *
296 * XXX: we are known to have problems with Turkish (i/I confusion) so we
297 * deliberately fall back to the C locale for now. Longer term we should
298 * always prefer to select C.[encoding] if possible, but there's no
299 * standardisation in locales between systems, so we'll need to survey
300 * what's out there first.
301 */
302void
303msetlocale(void)
304{
305 const char *vars[] = { "LC_ALL", "LC_CTYPE", "LANG", NULL };
306 char *cp;
307 int i;
308
309 /*
310 * We can't yet cope with dotless/dotted I in Turkish locales,
311 * so fall back to the C locale for these.
312 */
313 for (i = 0; vars[i] != NULL; i++) {
314 if ((cp = getenv(vars[i])) == NULL)
315 continue;
316 if (strncasecmp(cp, "TR", 2) != 0)
317 break;
318 /*
319 * If we're in a UTF-8 locale then prefer to use
320 * the C.UTF-8 locale (or equivalent) if it exists.
321 */
322 if ((strcasestr(cp, "UTF-8") != NULL ||
323 strcasestr(cp, "UTF8") != NULL) &&
324 (setlocale(LC_CTYPE, "C.UTF-8") != NULL ||
325 setlocale(LC_CTYPE, "POSIX.UTF-8") != NULL))
326 return;
327 setlocale(LC_CTYPE, "C");
328 return;
329 }
330 /* We can handle this locale */
331 setlocale(LC_CTYPE, "");
332}
diff --git a/utf8.h b/utf8.h
index 43ce1d55d..88c5a34a3 100644
--- a/utf8.h
+++ b/utf8.h
@@ -22,3 +22,4 @@ int fmprintf(FILE *, const char *, ...)
22int vfmprintf(FILE *, const char *, va_list); 22int vfmprintf(FILE *, const char *, va_list);
23int snmprintf(char *, size_t, int *, const char *, ...) 23int snmprintf(char *, size_t, int *, const char *, ...)
24 __attribute__((format(printf, 4, 5))); 24 __attribute__((format(printf, 4, 5)));
25void msetlocale(void);
diff --git a/version.h b/version.h
index fb816550c..850a2f7d0 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
1/* $OpenBSD: version.h,v 1.77 2016/07/24 11:45:36 djm Exp $ */ 1/* $OpenBSD: version.h,v 1.78 2016/12/19 04:55:51 djm Exp $ */
2 2
3#define SSH_VERSION "OpenSSH_7.3" 3#define SSH_VERSION "OpenSSH_7.4"
4 4
5#define SSH_PORTABLE "p1" 5#define SSH_PORTABLE "p1"
6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE 6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE